summaryrefslogtreecommitdiff
path: root/src/libs/addrmap.h
blob: 4de7b802674257b18fbbb3d3a9a01b78149c6a00 (plain)
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#ifndef __ADDRMAP__
#define __ADDRMAP__

// ----- SIO -----
#define SIO_BASE                  0xd0000000
#define SIO_CPUID                 SIO_BASE + 0x000
#define SIO_GPIO_OE               SIO_BASE + 0x020
#define SIO_GPIO_OUT_XOR          SIO_BASE + 0x01c
#define SIO_SPINLOCK0             SIO_BASE + 0x100
#define SIO_SPINLOCK31            SIO_BASE + 0x17c

// ----- RESET -----
#define RESETS_BASE               0x4000c000
#define RESETS_RESET              RESETS_BASE + 0x0
#define RESETS_DONE               RESETS_BASE + 0x8

// ----- Cortex M0+ -----
#define PPB_BASE        0xe0000000 // M0PLUS CPU registers
#define PPB_SYST_CSR    PPB_BASE + 0xe010
#define PPB_SYST_RVR    PPB_BASE + 0xe014
#define PPB_SYST_CVR    PPB_BASE + 0xe018
#define PPB_SYST_CALIB  PPB_BASE + 0xe01c
#define PPB_NVIC_ISER   PPB_BASE + 0xe100
#define PPB_NVIC_ISPR   PPB_BASE + 0xe200
#define PPB_NVIC_ICPR   PPB_BASE + 0xe280
#define PPB_VTOR        PPB_BASE + 0xed08

// ----- APB Peripherals -----
// IO_BANK0
#define IO_BANK0_BASE             0x40014000
#define IO_BANK0_GPIO25_STATUS    IO_BANK0_BASE + 0x0C8
#define IO_BANK0_GPIO25_CTRL      IO_BANK0_BASE + 0x0CC
// CLOCKS
#define CLOCKS_BASE         0x40008000
#define CLOCKS_SYS_CTRL     CLOCKS_BASE + 0x03c
#define CLOCKS_SYS_DIV      CLOCKS_BASE + 0x040
#define CLOCKS_SYS_SELECTED CLOCKS_BASE + 0x044
#define CLOCKS_REF_CTRL     CLOCKS_BASE + 0x030
#define CLOCKS_PERI_CTRL    CLOCKS_BASE + 0x048
#define CLOCKS_USB_CTRL     CLOCKS_BASE + 0x054
// XOSC
#define XOSC_BASE     0x40024000
#define XOSC_CTRL     XOSC_BASE + 0x000
#define XOSC_STATUS   XOSC_BASE + 0x004
#define XOSC_DORMANT  XOSC_BASE + 0x008
#define XOSC_STARTUP  XOSC_BASE + 0x00c
#define XOSC_COUNT    XOSC_BASE + 0x01c
// PLL_SYS
#define PLL_SYS_BASE        0x40028000
#define PLL_SYS_CS          PLL_SYS_BASE + 0x000
#define PLL_SYS_PWR         PLL_SYS_BASE + 0x004
#define PLL_SYS_FBDIV_INT   PLL_SYS_BASE + 0x008
#define PLL_SYS_PRIM        PLL_SYS_BASE + 0x00c
// PLL_USB
#define PLL_USB_BASE        0x4002c000
#define PLL_USB_CS          PLL_USB_BASE + 0x000
#define PLL_USB_PWR         PLL_USB_BASE + 0x004
#define PLL_USB_FBDIV_INT   PLL_USB_BASE + 0x008
#define PLL_USB_PRIM        PLL_USB_BASE + 0x00c
// SRAM
#define SRAM_BASE                 0x20000000
#define SRAM_BANK4_BASE           0x20040000
#define SRAM_BANK5_BASE           0x20041000
#define SRAM_END                  SRAM_BASE + 0x42000
// USB Controller
#define USBCTRL_BASE                  0x50100000
#define USBCTRL_DPSRAM_BASE           USBCTRL_BASE + 0x000
#define USBCTRL_DPSRAM_SETUP_PACKET USBCTRL_DPSRAM_BASE + 0x000
#define USBCTRL_REGS_BASE             0x50110000
#define USBCTRL_EP0_BUFFER0           USBCTRL_DPSRAM_BASE + 0x100
#define USBCTRL_EP0_BUFFER_CTRL_IN    USBCTRL_DPSRAM_BASE + 0x080
#define USBCTRL_EP0_BUFFER_CTRL_OUT   USBCTRL_DPSRAM_BASE + 0x084
#define USBCTRL_EP1_ENDP_CTRL_IN      USBCTRL_DPSRAM_BASE + 0x08
#define USBCTRL_EP1_BUFFER_CTRL_IN    USBCTRL_DPSRAM_BASE + 0x88
#define USBCTRL_DATA_BUFFER_START     USBCTRL_DPSRAM_BASE + 0x180
#define USBCTRL_ADDR_ENDP             USBCTRL_REGS_BASE + 0x000
#define USBCTRL_MAINCTRL              USBCTRL_REGS_BASE + 0x040
#define USBCTRL_SIE_CTRL              USBCTRL_REGS_BASE + 0x04c
#define USBCTRL_SIE_STATUS            USBCTRL_REGS_BASE + 0x050
#define USBCTRL_BUFF_STATUS           USBCTRL_REGS_BASE + 0x058
#define USBCTRL_INTR                  USBCTRL_REGS_BASE + 0x08c
#define USBCTRL_INTE                  USBCTRL_REGS_BASE + 0x090
#define USBCTRL_INTS                  USBCTRL_REGS_BASE + 0x098
#define USBCTRL_MUXING                USBCTRL_REGS_BASE + 0x074
#define USBCTRL_PWR                   USBCTRL_REGS_BASE + 0x078

#endif