1 /* Copyright (c) 2011,2012 Simon Schubert <2@0x2c.org>.
2 * Modifications by Jacob Alexander 2014-2015 <haata@kiibohd.com>
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 3 of the License, or
7 * (at your option) any later version.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
20 // ----- Local Includes -----
26 // ----- Structs -----
30 UNION_STRUCT_START(32);
38 SIM_OSC32KSEL_SYSTEM = 0,
39 SIM_OSC32KSEL_RTC = 2,
43 uint32_t usbvstby : 1;
44 uint32_t usbsstby : 1;
45 uint32_t usbregen : 1;
48 struct SIM_SOPT1CFG_t {
49 UNION_STRUCT_START(32);
57 uint32_t _pad0[(0x1004 - 0x8) / 4];
59 UNION_STRUCT_START(32);
62 SIM_RTCCLKOUTSEL_1HZ = 0,
63 SIM_RTCCLKOUTSEL_32KHZ = 1
66 SIM_CLKOUTSEL_FLASH = 2,
67 SIM_CLKOUTSEL_LPO = 3,
68 SIM_CLKOUTSEL_MCG = 4,
69 SIM_CLKOUTSEL_RTC = 5,
74 SIM_PTD7PAD_SINGLE = 0,
75 SIM_PTD7PAD_DOUBLE = 1
78 SIM_TRACECLKSEL_MCG = 0,
79 SIM_TRACECLKSEL_CORE = 1
83 SIM_PLLFLLSEL_FLL = 0,
88 SIM_USBSRC_EXTERNAL = 0,
96 UNION_STRUCT_START(32);
101 enum sim_ftmflt ftm0flt1 : 1;
103 enum sim_ftmflt ftm1flt0 : 1;
104 uint32_t _rsvd1 : 13;
106 SIM_FTMCHSRC_FTM = 0,
107 SIM_FTMCHSRC_CMP0 = 1,
108 SIM_FTMCHSRC_CMP1 = 2,
109 SIM_FTMCHSRC_USBSOF = 3
113 SIM_FTMCLKSEL_CLK0 = 0,
114 SIM_FTMCLKSEL_CLK1 = 1
116 enum sim_ftmclksel ftm1clksel : 1;
119 SIM_FTMTRGSRC_HSCMP0 = 0,
120 SIM_FTMTRGSRC_FTM1 = 1
126 UNION_STRUCT_START(32);
128 SIM_UARTTXSRC_UART = 0,
129 SIM_UARTTXSRC_FTM = 1
133 SIM_UARTRXSRC_UART = 0,
134 SIM_UARTRXSRC_CMP0 = 1,
135 SIM_UARTRXSRC_CMP1 = 2
137 enum sim_uarttxsrc uart1txsrc : 1;
139 enum sim_uartrxsrc uart1rxsrc : 2;
140 uint32_t _rsvd2 : 24;
145 UNION_STRUCT_START(32);
147 SIM_ADCTRGSEL_PDB = 0,
148 SIM_ADCTRGSEL_HSCMP0 = 1,
149 SIM_ADCTRGSEL_HSCMP1 = 2,
150 SIM_ADCTRGSEL_PIT0 = 4,
151 SIM_ADCTRGSEL_PIT1 = 5,
152 SIM_ADCTRGSEL_PIT2 = 6,
153 SIM_ADCTRGSEL_PIT3 = 7,
154 SIM_ADCTRGSEL_FTM0 = 8,
155 SIM_ADCTRGSEL_FTM1 = 9,
156 SIM_ADCTRGSEL_RTCALARM = 12,
157 SIM_ADCTRGSEL_RTCSECS = 13,
158 SIM_ADCTRGSEL_LPTIMER = 14
161 SIM_ADCPRETRGSEL_A = 0,
162 SIM_ADCPRETRGSEL_B = 1
166 SIM_ADCALTTRGEN_PDB = 0,
167 SIM_ADCALTTRGEN_ALT = 1
169 uint32_t _rsvd1 : 24;
172 uint32_t _pad3[(0x1024 - 0x101c) / 4];
174 UNION_STRUCT_START(32);
186 uint32_t _rsvd2 : 16;
189 uint32_t _pad4[(0x1034 - 0x1028) / 4];
191 UNION_STRUCT_START(32);
205 uint32_t _rsvd4 : 11;
209 UNION_STRUCT_START(32);
210 uint32_t lptimer : 1;
219 uint32_t _rsvd2 : 18;
223 UNION_STRUCT_START(32);
226 uint32_t _rsvd0 : 10;
246 UNION_STRUCT_START(32);
249 uint32_t _rsvd1 : 30;
252 struct SIM_CLKDIV1_t {
253 UNION_STRUCT_START(32);
254 uint32_t _rsvd0 : 16;
255 uint32_t outdiv4 : 4;
257 uint32_t outdiv2 : 4;
258 uint32_t outdiv1 : 4;
261 struct SIM_CLKDIV2_t {
262 UNION_STRUCT_START(32);
263 uint32_t usbfrac : 1;
265 uint32_t _rsvd0 : 28;
269 UNION_STRUCT_START(32);
270 uint32_t flashdis : 1;
271 uint32_t flashdoze : 1;
274 /* the following enum is analogous to enum
275 * FTFL_FLEXNVM_PARTITION in ftfl.h, but that one is padded
276 * with four 1-bits to make an 8-bit value.
278 enum SIM_FLEXNVM_PARTITION {
279 SIM_FLEXNVM_DATA_32_EEPROM_0 = 0x0,
280 SIM_FLEXNVM_DATA_24_EEPROM_8 = 0x1,
281 SIM_FLEXNVM_DATA_16_EEPROM_16 = 0x2,
282 SIM_FLEXNVM_DATA_8_EEPROM_24 = 0x9,
283 SIM_FLEXNVM_DATA_0_EEPROM_32 = 0x3
310 UNION_STRUCT_START(32);
311 uint32_t _rsvd0 : 16;
312 uint32_t maxaddr1 : 7;
314 SIM_PFLSH_FLEXNVM = 0,
315 SIM_PFLSH_PROGRAM = 1
317 uint32_t maxaddr0 : 7;
326 CTASSERT_SIZE_BYTE(struct SIM_t, 0x1064);
328 extern volatile struct SIM_t SIM;