21#ifndef LIBRARIES_CMSIS_DEVICE_MAXIM_MAX78002_INCLUDE_MAX78002_H_
22#define LIBRARIES_CMSIS_DEVICE_MAXIM_MAX78002_INCLUDE_MAX78002_H_
26#define TARGET_NUM 78002
44#define __weak __attribute__((weak))
47#elif defined(__CC_ARM)
49#define inline __inline
56 NonMaskableInt_IRQn = -14,
58 MemoryManagement_IRQn = -12,
60 UsageFault_IRQn = -10,
62 DebugMonitor_IRQn = -4,
239#define MXC_IRQ_COUNT (MXC_IRQ_EXT_COUNT + 16)
247#define __CM4_REV 0x0100
248#define __MPU_PRESENT 1
249#define __NVIC_PRIO_BITS 3
250#define __Vendor_SysTickConfig 0
251#define __FPU_PRESENT 1
257#include <core_rv32.h>
261#include "system_max78002.h"
267#define MXC_ROM_MEM_BASE 0x00000000UL
268#define MXC_ROM_MEM_SIZE 0x00010000UL
269#define MXC_FLASH0_MEM_BASE 0x10000000UL
270#define MXC_FLASH_MEM_BASE MXC_FLASH0_MEM_BASE
271#define MXC_FLASH_PAGE_SIZE 0x00004000UL
272#define MXC_FLASH_MEM_SIZE 0x00280000UL
273#define MXC_INFO0_MEM_BASE 0x10800000UL
274#define MXC_INFO_MEM_BASE MXC_INFO0_MEM_BASE
275#define MXC_INFO_MEM_SIZE 0x00008000UL
276#define MXC_SRAM_MEM_BASE 0x20000000UL
277#define MXC_SRAM_MEM_SIZE 0x00060000UL
289#define MXC_BASE_GCR ((uint32_t)0x40000000UL)
290#define MXC_GCR ((mxc_gcr_regs_t *)MXC_BASE_GCR)
294#define MXC_BASE_SIR ((uint32_t)0x40000400UL)
295#define MXC_SIR ((mxc_sir_regs_t *)MXC_BASE_SIR)
299#define MXC_BASE_FCR ((uint32_t)0x40000800UL)
300#define MXC_FCR ((mxc_fcr_regs_t *)MXC_BASE_FCR)
304#define MXC_CFG_WDT_INSTANCES (2)
306#define MXC_BASE_WDT0 ((uint32_t)0x40003000UL)
307#define MXC_WDT0 ((mxc_wdt_regs_t *)MXC_BASE_WDT0)
308#define MXC_BASE_WDT1 ((uint32_t)0x40080800UL)
309#define MXC_WDT1 ((mxc_wdt_regs_t *)MXC_BASE_WDT1)
313#define MXC_BASE_SIMO ((uint32_t)0x40004400UL)
314#define MXC_SIMO ((mxc_simo_regs_t *)MXC_BASE_SIMO)
318#define MXC_BASE_DVS ((uint32_t)0x40004800UL)
319#define MXC_DVS ((mxc_dvs_regs_t *)MXC_BASE_DVS)
323#define MXC_BASE_TRIMSIR ((uint32_t)0x40005400UL)
324#define MXC_TRIMSIR ((mxc_trimsir_regs_t *)MXC_BASE_TRIMSIR)
328#define MXC_BASE_GCFR ((uint32_t)0x40005800UL)
329#define MXC_GCFR ((mxc_gcfr_regs_t *)MXC_BASE_GCFR)
333#define MXC_BASE_RTC ((uint32_t)0x40006000UL)
334#define MXC_RTC ((mxc_rtc_regs_t *)MXC_BASE_RTC)
338#define MXC_BASE_WUT ((uint32_t)0x40006400UL)
339#define MXC_WUT ((mxc_wut_regs_t *)MXC_BASE_WUT)
343#define MXC_BASE_PWRSEQ ((uint32_t)0x40006800UL)
344#define MXC_PWRSEQ ((mxc_pwrseq_regs_t *)MXC_BASE_PWRSEQ)
348#define MXC_BASE_MCR ((uint32_t)0x40006C00UL)
349#define MXC_MCR ((mxc_mcr_regs_t *)MXC_BASE_MCR)
353#define MXC_BASE_AES ((uint32_t)0x40007400UL)
354#define MXC_AES ((mxc_aes_regs_t *)MXC_BASE_AES)
358#define MXC_BASE_AESKEYS ((uint32_t)0x40007800UL)
359#define MXC_AESKEYS ((mxc_aeskeys_regs_t *)MXC_BASE_AESKEYS)
362#define MXC_BASE_AESKEY MXC_BASE_AESKEYS
363#define MXC_AESKEY ((mxc_aes_key_regs_t *)MXC_BASE_AESKEY)
367#define MXC_CFG_GPIO_INSTANCES (4)
368#define MXC_CFG_GPIO_PINS_PORT (32)
370#define MXC_BASE_GPIO0 ((uint32_t)0x40008000UL)
371#define MXC_GPIO0 ((mxc_gpio_regs_t *)MXC_BASE_GPIO0)
372#define MXC_BASE_GPIO1 ((uint32_t)0x40009000UL)
373#define MXC_GPIO1 ((mxc_gpio_regs_t *)MXC_BASE_GPIO1)
374#define MXC_BASE_GPIO2 ((uint32_t)0x40080400UL)
375#define MXC_GPIO2 ((mxc_gpio_regs_t *)MXC_BASE_GPIO2)
377#define MXC_BASE_GPIO3 ((uint32_t)0x4000B000UL)
378#define MXC_GPIO3 ((mxc_gpio_regs_t *)MXC_BASE_GPIO3)
380#define MXC_GPIO_GET_IDX(p) \
381 ((p) == MXC_GPIO0 ? 0 : (p) == MXC_GPIO1 ? 1 : (p) == MXC_GPIO2 ? 2 : (p) == MXC_GPIO3 ? 3 : -1)
383#define MXC_GPIO_GET_GPIO(i) \
384 ((i) == 0 ? MXC_GPIO0 : (i) == 1 ? MXC_GPIO1 : (i) == 2 ? MXC_GPIO2 : (i) == 3 ? MXC_GPIO3 : 0)
386#define MXC_GPIO_GET_IRQ(i) \
387 ((i) == 0 ? GPIO0_IRQn : \
388 (i) == 1 ? GPIO1_IRQn : \
389 (i) == 2 ? GPIO2_IRQn : \
390 (i) == 3 ? GPIOWAKE_IRQn : \
395#define MXC_BASE_PCIF ((uint32_t)0x4000E000UL)
396#define MXC_PCIF ((mxc_cameraif_regs_t *)MXC_BASE_PCIF)
400#define MXC_BASE_CRC ((uint32_t)0x4000F000UL)
401#define MXC_CRC ((mxc_crc_regs_t *)MXC_BASE_CRC)
405#define SEC(s) (((uint32_t)s) * 1000000UL)
406#define MSEC(ms) (ms * 1000UL)
409#define MXC_CFG_TMR_INSTANCES (6)
411#define MXC_BASE_TMR0 ((uint32_t)0x40010000UL)
412#define MXC_TMR0 ((mxc_tmr_regs_t *)MXC_BASE_TMR0)
413#define MXC_BASE_TMR1 ((uint32_t)0x40011000UL)
414#define MXC_TMR1 ((mxc_tmr_regs_t *)MXC_BASE_TMR1)
415#define MXC_BASE_TMR2 ((uint32_t)0x40012000UL)
416#define MXC_TMR2 ((mxc_tmr_regs_t *)MXC_BASE_TMR2)
417#define MXC_BASE_TMR3 ((uint32_t)0x40013000UL)
418#define MXC_TMR3 ((mxc_tmr_regs_t *)MXC_BASE_TMR3)
419#define MXC_BASE_TMR4 ((uint32_t)0x40080C00UL)
420#define MXC_TMR4 ((mxc_tmr_regs_t *)MXC_BASE_TMR4)
421#define MXC_BASE_TMR5 ((uint32_t)0x40081000UL)
422#define MXC_TMR5 ((mxc_tmr_regs_t *)MXC_BASE_TMR5)
424#define MXC_TMR_GET_IRQ(i) \
425 (IRQn_Type)((i) == 0 ? TMR0_IRQn : \
426 (i) == 1 ? TMR1_IRQn : \
427 (i) == 2 ? TMR2_IRQn : \
428 (i) == 3 ? TMR3_IRQn : \
429 (i) == 4 ? TMR4_IRQn : \
430 (i) == 5 ? TMR5_IRQn : \
433#define MXC_TMR_GET_BASE(i) \
434 ((i) == 0 ? MXC_BASE_TMR0 : \
435 (i) == 1 ? MXC_BASE_TMR1 : \
436 (i) == 2 ? MXC_BASE_TMR2 : \
437 (i) == 3 ? MXC_BASE_TMR3 : \
438 (i) == 4 ? MXC_BASE_TMR4 : \
439 (i) == 5 ? MXC_BASE_TMR5 : \
442#define MXC_TMR_GET_TMR(i) \
443 ((i) == 0 ? MXC_TMR0 : \
444 (i) == 1 ? MXC_TMR1 : \
445 (i) == 2 ? MXC_TMR2 : \
446 (i) == 3 ? MXC_TMR3 : \
447 (i) == 4 ? MXC_TMR4 : \
448 (i) == 5 ? MXC_TMR5 : \
451#define MXC_TMR_GET_IDX(p) \
452 ((p) == MXC_TMR0 ? 0 : \
453 (p) == MXC_TMR1 ? 1 : \
454 (p) == MXC_TMR2 ? 2 : \
455 (p) == MXC_TMR3 ? 3 : \
456 (p) == MXC_TMR4 ? 4 : \
457 (p) == MXC_TMR5 ? 5 : \
462#define MXC_I2C_INSTANCES (3)
464#define MXC_BASE_I2C0 ((uint32_t)0x4001D000UL)
465#define MXC_I2C0 ((mxc_i2c_regs_t *)MXC_BASE_I2C0)
466#define MXC_BASE_I2C1 ((uint32_t)0x4001E000UL)
467#define MXC_I2C1 ((mxc_i2c_regs_t *)MXC_BASE_I2C1)
468#define MXC_BASE_I2C2 ((uint32_t)0x4001F000UL)
469#define MXC_I2C2 ((mxc_i2c_regs_t *)MXC_BASE_I2C2)
471#define MXC_I2C_GET_IRQ(i) \
472 (IRQn_Type)((i) == 0 ? I2C0_IRQn : (i) == 1 ? I2C1_IRQn : (i) == 2 ? I2C2_IRQn : 0)
474#define MXC_I2C_GET_BASE(i) \
475 ((i) == 0 ? MXC_BASE_I2C0 : (i) == 1 ? MXC_BASE_I2C1 : (i) == 2 ? MXC_BASE_I2C2 : 0)
477#define MXC_I2C_GET_TMR(i) ((i) == 0 ? MXC_I2C0 : (i) == 1 ? MXC_I2C1 : (i) == 2 ? MXC_I2C2 : 0)
479#define MXC_I2C_GET_IDX(p) ((p) == MXC_I2C0 ? 0 : (p) == MXC_I2C1 ? 1 : (p) == MXC_I2C2 ? 2 : -1)
480#define MXC_I2C_FIFO_DEPTH (8)
484#define MXC_DMA_CHANNELS (4)
485#define MXC_DMA_INSTANCES (1)
487#define MXC_BASE_DMA ((uint32_t)0x40028000UL)
488#define MXC_DMA ((mxc_dma_regs_t *)MXC_BASE_DMA)
490#define MXC_DMA_GET_IDX(p) ((p) == MXC_DMA ? 0 : -1)
492#define MXC_DMA_CH_GET_IRQ(i) ((IRQn_Type)(((i) == 0) ? DMA0_IRQn : ((i) == 1) ? DMA1_IRQn : \
493 ((i) == 2) ? DMA2_IRQn : ((i) == 3) ? DMA3_IRQn : 0))
497#define MXC_FLC_INSTANCES (1)
499#define MXC_BASE_FLC0 ((uint32_t)0x40029000UL)
500#define MXC_FLC0 ((mxc_flc_regs_t *)MXC_BASE_FLC0)
501#define MXC_FLC MXC_FLC0
503#define MXC_FLC_GET_IRQ(i) (IRQn_Type)((i) == 0 ? FLC0_IRQn : 0)
505#define MXC_FLC_GET_BASE(i) ((i) == 0 ? MXC_BASE_FLC0 : 0)
507#define MXC_FLC_GET_FLC(i) ((i) == 0 ? MXC_FLC0 : 0)
509#define MXC_FLC_GET_IDX(p) ((p) == MXC_FLC0 ? 0 : -1)
513#define MXC_ICC_INSTANCES (2)
515#define MXC_BASE_ICC0 ((uint32_t)0x4002A000UL)
516#define MXC_ICC0 ((mxc_icc_regs_t *)MXC_BASE_ICC0)
518#define MXC_BASE_ICC1 ((uint32_t)0x4002A800UL)
519#define MXC_ICC1 ((mxc_icc_regs_t *)MXC_BASE_ICC1)
521#define MXC_ICC MXC_ICC0
526#define MXC_BASE_ADC ((uint32_t)0x40034000UL)
527#define MXC_ADC ((mxc_adc_regs_t *)MXC_BASE_ADC)
528#define MXC_ADC_MAX_CLOCK 8000000
532#define MXC_CFG_PT_INSTANCES (4)
534#define MXC_BASE_PTG ((uint32_t)0x4003C000UL)
535#define MXC_PTG ((mxc_ptg_regs_t *)MXC_BASE_PTG)
536#define MXC_BASE_PT0 ((uint32_t)0x4003C020UL)
537#define MXC_PT0 ((mxc_pt_regs_t *)MXC_BASE_PT0)
538#define MXC_BASE_PT1 ((uint32_t)0x4003C040UL)
539#define MXC_PT1 ((mxc_pt_regs_t *)MXC_BASE_PT1)
540#define MXC_BASE_PT2 ((uint32_t)0x4003C060UL)
541#define MXC_PT2 ((mxc_pt_regs_t *)MXC_BASE_PT2)
542#define MXC_BASE_PT3 ((uint32_t)0x4003C080UL)
543#define MXC_PT3 ((mxc_pt_regs_t *)MXC_BASE_PT3)
545#define MXC_PT_GET_BASE(i) \
546 ((i) == 0 ? MXC_BASE_PT0 : \
547 (i) == 1 ? MXC_BASE_PT1 : \
548 (i) == 2 ? MXC_BASE_PT2 : \
549 (i) == 3 ? MXC_BASE_PT3 : \
552#define MXC_PT_GET_PT(i) \
553 ((i) == 0 ? MXC_PT0 : (i) == 1 ? MXC_PT1 : (i) == 2 ? MXC_PT2 : (i) == 3 ? MXC_PT3 : 0)
555#define MXC_PT_GET_IDX(p) \
556 ((p) == MXC_PT0 ? 0 : (p) == MXC_PT1 ? 1 : (p) == MXC_PT2 ? 2 : (p) == MXC_PT3 ? 3 : -1)
560#define MXC_BASE_OWM ((uint32_t)0x4003D000UL)
561#define MXC_OWM ((mxc_owm_regs_t *)MXC_BASE_OWM)
565#define MXC_CFG_SEMA_INSTANCES (8)
567#define MXC_BASE_SEMA ((uint32_t)0x4003E000UL)
568#define MXC_SEMA ((mxc_sema_regs_t *)MXC_BASE_SEMA)
572#define MXC_UART_INSTANCES (4)
573#define MXC_UART_FIFO_DEPTH (8)
575#define MXC_BASE_UART0 ((uint32_t)0x40042000UL)
576#define MXC_UART0 ((mxc_uart_regs_t *)MXC_BASE_UART0)
577#define MXC_BASE_UART1 ((uint32_t)0x40043000UL)
578#define MXC_UART1 ((mxc_uart_regs_t *)MXC_BASE_UART1)
579#define MXC_BASE_UART2 ((uint32_t)0x40044000UL)
580#define MXC_UART2 ((mxc_uart_regs_t *)MXC_BASE_UART2)
581#define MXC_BASE_UART3 ((uint32_t)0x40081400UL)
582#define MXC_UART3 ((mxc_uart_regs_t *)MXC_BASE_UART3)
584#define MXC_UART_GET_IRQ(i) \
585 (IRQn_Type)((i) == 0 ? UART0_IRQn : \
586 (i) == 1 ? UART1_IRQn : \
587 (i) == 2 ? UART2_IRQn : \
588 (i) == 3 ? UART3_IRQn : \
591#define MXC_UART_GET_BASE(i) \
592 ((i) == 0 ? MXC_BASE_UART0 : \
593 (i) == 1 ? MXC_BASE_UART1 : \
594 (i) == 2 ? MXC_BASE_UART2 : \
595 (i) == 3 ? MXC_BASE_UART3 : \
598#define MXC_UART_GET_UART(i) \
599 ((i) == 0 ? MXC_UART0 : (i) == 1 ? MXC_UART1 : (i) == 2 ? MXC_UART2 : (i) == 3 ? MXC_UART3 : 0)
601#define MXC_UART_GET_IDX(p) \
602 ((p) == MXC_UART0 ? 0 : (p) == MXC_UART1 ? 1 : (p) == MXC_UART2 ? 2 : (p) == MXC_UART3 ? 3 : -1)
607#define MXC_SPI_INSTANCES (2)
609#define MXC_SPI_INSTANCES (1)
611#define MXC_SPI_SS_INSTANCES (4)
612#define MXC_SPI_FIFO_DEPTH (32)
614#define MXC_BASE_SPI1 ((uint32_t)0x40046000UL)
615#define MXC_SPI1 ((mxc_spi_regs_t *)MXC_BASE_SPI1)
616#define MXC_SPI1_TS_INSTANCES (1)
618#define MXC_BASE_SPI0 ((uint32_t)0x400BE000UL)
619#define MXC_SPI0 ((mxc_spi_regs_t *)MXC_BASE_SPI0)
620#define MXC_SPI0_TS_INSTANCES (3)
623#define MXC_SPI_GET_IDX(p) ((p) == MXC_SPI1 ? 0 : (p) == MXC_SPI0 ? 1 : -1)
625#define MXC_SPI_GET_BASE(i) ((i) == 0 ? MXC_BASE_SPI1 : (i) == 1 ? MXC_BASE_SPI0 : 0)
627#define MXC_SPI_GET_SPI(i) ((i) == 0 ? MXC_SPI1 : (i) == 1 ? MXC_SPI0 : 0)
629#define MXC_SPI_GET_IRQ(i) (IRQn_Type)((i) == 0 ? SPI1_IRQn : (i) == 1 ? SPI0_IRQn : 0)
631#define MXC_SPI_GET_TOTAL_TS(p) \
632 ((p) == MXC_SPI1 ? MXC_SPI1_TS_INSTANCES : (p) == MXC_SPI0 ? MXC_SPI0_TS_INSTANCES : 0)
635#define MXC_SPI_GET_IDX(p) ((p) == MXC_SPI1 ? 0 : -1)
637#define MXC_SPI_GET_BASE(i) ((i) == 0 ? MXC_BASE_SPI1 : 0)
639#define MXC_SPI_GET_SPI(i) ((i) == 0 ? MXC_SPI1 : 0)
641#define MXC_SPI_GET_IRQ(i) (IRQn_Type)((i) == 0 ? SPI1_IRQn : 0)
643#define MXC_SPI_GET_TOTAL_TS(p) ((p) == MXC_SPI1 ? MXC_SPI1_TS_INSTANCES : 0)
649#define MXC_BASE_TRNG ((uint32_t)0x4004D000UL)
650#define MXC_TRNG ((mxc_trng_regs_t *)MXC_BASE_TRNG)
654#define MXC_BASE_I2S ((uint32_t)0x40060000UL)
655#define MXC_I2S ((mxc_i2s_regs_t *)MXC_BASE_I2S)
659#define MXC_BASE_CSI2 ((uint32_t)0x40062000UL)
660#define MXC_CSI2 ((mxc_csi2_regs_t *)MXC_BASE_CSI2)
664#define MXC_BASE_LPGCR ((uint32_t)0x40080000UL)
665#define MXC_LPGCR ((mxc_lpgcr_regs_t *)MXC_BASE_LPGCR)
669#define MXC_BASE_LPCMP ((uint32_t)0x40088000UL)
670#define MXC_LPCMP ((mxc_lpcmp_regs_t *)MXC_BASE_LPCMP)
674#define MXC_BASE_USBHS ((uint32_t)0x400B1000UL)
675#define MXC_USBHS ((mxc_usbhs_regs_t *)MXC_BASE_USBHS)
676#define MXC_USBHS_NUM_EP 12
677#define MXC_USBHS_NUM_DMA 8
678#define MXC_USBHS_MAX_PACKET 512
682 MXC_USB_CLOCK_SYS_DIV_10 = 0,
683 MXC_USB_CLOCK_EXTCLK = 1,
684 MXC_USB_CLOCK_ERFO = 2
687#define mxc_usb_clock_t _mxc_usb_clock_t
691#define MXC_BASE_SDHC ((uint32_t)0x400B6000UL)
692#define MXC_SDHC ((mxc_sdhc_regs_t *)MXC_BASE_SDHC)
696#define MXC_BASE_CSI2_FIFO ((uint32_t)0x400C0800UL)
697#define MXC_CSI2_FIFO ((uint32_t *)MXC_BASE_CSI2_FIFO)
698#define MXC_CSI2_FIFO_DEPTH (128)
702#define MXC_BASE_CNN_FIFO ((uint32_t)0x400C0400UL)
703#define MXC_CNN_FIFO ((mxc_cnn_fifo_regs_t *)MXC_BASE_CNN_FIFO)
707#define MXC_BASE_CNN ((uint32_t)0x50000000UL)
708#define MXC_CNN ((mxc_cnn_regs_t *)MXC_BASE_CNN)
712#define MXC_F_BIT_0 (1 << 0)
713#define MXC_F_BIT_1 (1 << 1)
714#define MXC_F_BIT_2 (1 << 2)
715#define MXC_F_BIT_3 (1 << 3)
716#define MXC_F_BIT_4 (1 << 4)
717#define MXC_F_BIT_5 (1 << 5)
718#define MXC_F_BIT_6 (1 << 6)
719#define MXC_F_BIT_7 (1 << 7)
720#define MXC_F_BIT_8 (1 << 8)
721#define MXC_F_BIT_9 (1 << 9)
722#define MXC_F_BIT_10 (1 << 10)
723#define MXC_F_BIT_11 (1 << 11)
724#define MXC_F_BIT_12 (1 << 12)
725#define MXC_F_BIT_13 (1 << 13)
726#define MXC_F_BIT_14 (1 << 14)
727#define MXC_F_BIT_15 (1 << 15)
728#define MXC_F_BIT_16 (1 << 16)
729#define MXC_F_BIT_17 (1 << 17)
730#define MXC_F_BIT_18 (1 << 18)
731#define MXC_F_BIT_19 (1 << 19)
732#define MXC_F_BIT_20 (1 << 20)
733#define MXC_F_BIT_21 (1 << 21)
734#define MXC_F_BIT_22 (1 << 22)
735#define MXC_F_BIT_23 (1 << 23)
736#define MXC_F_BIT_24 (1 << 24)
737#define MXC_F_BIT_25 (1 << 25)
738#define MXC_F_BIT_26 (1 << 26)
739#define MXC_F_BIT_27 (1 << 27)
740#define MXC_F_BIT_28 (1 << 28)
741#define MXC_F_BIT_29 (1 << 29)
742#define MXC_F_BIT_30 (1 << 30)
743#define MXC_F_BIT_31 (1 << 31)
747#define BITBAND(reg, bit) \
748 ((0xf0000000 & (uint32_t)(reg)) + 0x2000000 + (((uint32_t)(reg)&0x0fffffff) << 5) + \
751#define MXC_CLRBIT(reg, bit) (*(volatile uint32_t *)BITBAND(reg, bit) = 0)
752#define MXC_SETBIT(reg, bit) (*(volatile uint32_t *)BITBAND(reg, bit) = 1)
753#define MXC_GETBIT(reg, bit) (*(volatile uint32_t *)BITBAND(reg, bit))
755#define MXC_SETFIELD(reg, mask, setting) (reg = ((reg) & ~(mask)) | ((setting) & (mask)))
761#define SCB_CPACR_CP10_Pos 20
762#define SCB_CPACR_CP10_Msk (0x3UL << SCB_CPACR_CP10_Pos)
763#define SCB_CPACR_CP11_Pos 22
764#define SCB_CPACR_CP11_Msk (0x3UL << SCB_CPACR_CP11_Pos)