annotate Bootloader/ftfl.h @ 412:e7a3be42ae1e

Debug code for interconnect cable debugging
author Jacob Alexander <haata@kiibohd.com>
date Sat, 20 Feb 2016 13:27:49 -0800
parents 66eccdd9ced5
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
193
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
1 /* Copyright (c) 2011,2012 Simon Schubert <2@0x2c.org>.
341
66eccdd9ced5 Code cleanup
Jacob Alexander <haata@kiibohd.com>
parents: 308
diff changeset
2 * Modifications by Jacob Alexander 2014-2015 <haata@kiibohd.com>
193
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
3 *
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
4 * This program is free software: you can redistribute it and/or modify
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
5 * it under the terms of the GNU General Public License as published by
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
6 * the Free Software Foundation, either version 3 of the License, or
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
7 * (at your option) any later version.
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
8 *
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
9 * This program is distributed in the hope that it will be useful,
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
12 * GNU General Public License for more details.
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
13 *
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
14 * You should have received a copy of the GNU General Public License
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
16 */
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
17
341
66eccdd9ced5 Code cleanup
Jacob Alexander <haata@kiibohd.com>
parents: 308
diff changeset
18 #pragma once
193
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
19
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
20 // ----- Local Includes -----
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
21
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
22 #include "mchck-cdefs.h"
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
23
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
24
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
25
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
26 // ----- Structs -----
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
27
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
28 struct FTFL_FSTAT_t {
308
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
29 UNION_STRUCT_START(8);
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
30 uint8_t mgstat0 : 1;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
31 uint8_t _rsvd0 : 3;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
32 uint8_t fpviol : 1;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
33 uint8_t accerr : 1;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
34 uint8_t rdcolerr : 1;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
35 uint8_t ccif : 1;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
36 UNION_STRUCT_END;
193
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
37 };
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
38 CTASSERT_SIZE_BIT(struct FTFL_FSTAT_t, 8);
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
39
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
40 struct FTFL_FCNFG_t {
308
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
41 UNION_STRUCT_START(8);
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
42 uint8_t eeerdy : 1;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
43 uint8_t ramrdy : 1;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
44 uint8_t pflsh : 1;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
45 uint8_t _rsvd0 : 1;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
46 uint8_t erssusp : 1;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
47 uint8_t ersareq : 1;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
48 uint8_t rdcollie : 1;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
49 uint8_t ccie : 1;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
50 UNION_STRUCT_END;
193
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
51 };
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
52 CTASSERT_SIZE_BIT(struct FTFL_FCNFG_t, 8);
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
53
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
54 struct FTFL_FSEC_t {
308
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
55 UNION_STRUCT_START(8);
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
56 enum {
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
57 FTFL_FSEC_SEC_UNSECURE = 2,
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
58 FTFL_FSEC_SEC_SECURE = 3
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
59 } sec : 2;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
60 enum {
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
61 FTFL_FSEC_FSLACC_DENY = 1,
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
62 FTFL_FSEC_FSLACC_GRANT = 3
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
63 } fslacc : 2;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
64 enum {
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
65 FTFL_FSEC_MEEN_DISABLE = 2,
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
66 FTFL_FSEC_MEEN_ENABLE = 3
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
67 } meen : 2;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
68 enum {
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
69 FTFL_FSEC_KEYEN_DISABLE = 1,
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
70 FTFL_FSEC_KEYEN_ENABLE = 2
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
71 } keyen : 2;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
72 UNION_STRUCT_END;
193
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
73 };
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
74 CTASSERT_SIZE_BIT(struct FTFL_FSEC_t, 8);
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
75
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
76 struct FTFL_FOPT_t {
308
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
77 UNION_STRUCT_START(8);
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
78 uint8_t lpboot : 1;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
79 uint8_t ezport_dis : 1;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
80 uint8_t nmi_dis : 1;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
81 uint8_t _rsvd0 : 5;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
82 UNION_STRUCT_END;
193
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
83 };
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
84 CTASSERT_SIZE_BIT(struct FTFL_FOPT_t, 8);
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
85
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
86 /**
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
87 * The FCOOB is a weird register file, because it is double big endian,
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
88 * which makes for odd gaps and for some data that is big endian, and for
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
89 * some that is little endian.
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
90 */
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
91 union FTFL_FCCOB_t {
308
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
92 struct ftfl_generic {
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
93 uint32_t addr : 24;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
94 enum FTFL_FCMD {
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
95 FTFL_FCMD_READ_1s_BLOCK = 0x00,
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
96 FTFL_FCMD_READ_1s_SECTION = 0x01,
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
97 FTFL_FCMD_PROGRAM_CHECK = 0x02,
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
98 FTFL_FCMD_READ_RESOURCE = 0x03,
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
99 FTFL_FCMD_PROGRAM_LONGWORD = 0x06,
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
100 FTFL_FCMD_ERASE_BLOCK = 0x08,
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
101 FTFL_FCMD_ERASE_SECTOR = 0x09,
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
102 FTFL_FCMD_PROGRAM_SECTION = 0x0b,
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
103 FTFL_FCMD_READ_1s_ALL_BLOCKS = 0x40,
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
104 FTFL_FCMD_READ_ONCE = 0x41,
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
105 FTFL_FCMD_PROGRAM_ONCE = 0x43,
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
106 FTFL_FCMD_ERASE_ALL_BLOCKS = 0x44,
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
107 FTFL_FCMD_VERIFY_KEY = 0x45,
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
108 FTFL_FCMD_PROGRAM_PARTITION = 0x80,
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
109 FTFL_FCMD_SET_FLEXRAM = 0x81
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
110 } fcmd : 8;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
111 uint8_t data_be[8];
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
112 } generic;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
113 struct {
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
114 uint32_t addr : 24;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
115 enum FTFL_FCMD fcmd : 8;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
116 uint8_t _rsvd0[3];
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
117 enum FTFL_MARGIN_CHOICE {
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
118 FTFL_MARGIN_NORMAL = 0x00,
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
119 FTFL_MARGIN_USER = 0x01,
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
120 FTFL_MARGIN_FACTORY = 0x02
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
121 } margin : 8;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
122 } read_1s_block;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
123 struct ftfl_data_num_words {
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
124 uint32_t addr : 24;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
125 enum FTFL_FCMD fcmd : 8;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
126 uint8_t _rsvd0;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
127 enum FTFL_MARGIN_CHOICE margin : 8;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
128 uint16_t num_words;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
129 } read_1s_section;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
130 struct {
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
131 uint32_t addr : 24;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
132 enum FTFL_FCMD fcmd : 8;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
133 uint8_t _rsvd0[3];
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
134 enum FTFL_MARGIN_CHOICE margin : 8;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
135 uint8_t data_be[4];
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
136 } program_check;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
137 struct {
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
138 uint32_t addr : 24;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
139 enum FTFL_FCMD fcmd : 8;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
140 uint32_t data;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
141 uint8_t _rsvd0[3];
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
142 enum FTFL_RESOURCE_SELECT {
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
143 FTFL_RESOURCE_IFR = 0x00,
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
144 FTFL_RESOURCE_VERSION = 0x01
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
145 } resource_select : 8;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
146 } read_resource;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
147 struct {
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
148 uint32_t addr : 24;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
149 enum FTFL_FCMD fcmd : 8;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
150 uint8_t data_be[4];
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
151 } program_longword;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
152 struct {
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
153 uint32_t addr : 24;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
154 enum FTFL_FCMD fcmd : 8;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
155 } erase;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
156 struct ftfl_data_num_words program_section;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
157 struct {
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
158 uint8_t _rsvd0[2];
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
159 enum FTFL_MARGIN_CHOICE margin : 8;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
160 enum FTFL_FCMD fcmd : 8;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
161 } read_1s_all_blocks;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
162 struct ftfl_cmd_once {
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
163 uint8_t _rsvd0[2];
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
164 uint8_t idx;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
165 enum FTFL_FCMD fcmd : 8;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
166 uint8_t data_be[4];
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
167 } read_once;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
168 struct ftfl_cmd_once program_once;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
169 struct {
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
170 uint8_t _rsvd0[3];
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
171 enum FTFL_FCMD fcmd : 8;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
172 } erase_all;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
173 struct {
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
174 uint8_t _rsvd0[3];
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
175 enum FTFL_FCMD fcmd : 8;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
176 uint8_t key_be[8];
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
177 } verify_key;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
178 struct {
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
179 uint8_t _rsvd0[3];
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
180 enum FTFL_FCMD fcmd : 8;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
181 uint8_t _rsvd1[2];
193
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
182
308
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
183 /* the following enum is analogous to enum
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
184 * SIM_FLEXNVM_PARTITION in sim.h, but this one is padded
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
185 * with four 1-bits to make an 8-bit value.
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
186 */
193
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
187
308
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
188 enum FTFL_FLEXNVM_PARTITION {
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
189 FTFL_FLEXNVM_DATA_32_EEPROM_0 = 0xF0,
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
190 FTFL_FLEXNVM_DATA_24_EEPROM_8 = 0xF1,
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
191 FTFL_FLEXNVM_DATA_16_EEPROM_16 = 0xF2,
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
192 FTFL_FLEXNVM_DATA_8_EEPROM_24 = 0xF9,
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
193 FTFL_FLEXNVM_DATA_0_EEPROM_32 = 0xF3
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
194 } flexnvm_partition : 8;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
195 enum FTFL_EEPROM_SIZE {
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
196 FTFL_EEPROM_SIZE_0 = 0x3f,
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
197 FTFL_EEPROM_SIZE_32 = 0x39,
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
198 FTFL_EEPROM_SIZE_64 = 0x38,
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
199 FTFL_EEPROM_SIZE_128 = 0x37,
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
200 FTFL_EEPROM_SIZE_256 = 0x36,
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
201 FTFL_EEPROM_SIZE_512 = 0x35,
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
202 FTFL_EEPROM_SIZE_1024 = 0x34,
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
203 FTFL_EEPROM_SIZE_2048 = 0x33
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
204 } eeprom_size : 8;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
205 } program_partition;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
206 struct {
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
207 uint8_t _rsvd0[2];
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
208 enum FTFL_FLEXRAM_FUNCTION {
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
209 FTFL_FLEXRAM_EEPROM = 0x00,
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
210 FTFL_FLEXRAM_RAM = 0xff
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
211 } flexram_function : 8;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
212 enum FTFL_FCMD fcmd : 8;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
213 } set_flexram;
193
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
214 };
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
215 CTASSERT_SIZE_BYTE(union FTFL_FCCOB_t, 12);
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
216
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
217 struct FTFL_t {
308
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
218 struct FTFL_FSTAT_t fstat;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
219 struct FTFL_FCNFG_t fcnfg;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
220 struct FTFL_FSEC_t fsec;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
221 struct FTFL_FOPT_t fopt;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
222 union FTFL_FCCOB_t fccob;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
223 uint8_t fprot_be[4];
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
224 uint8_t feprot;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
225 uint8_t fdprot;
193
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
226 };
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
227 CTASSERT_SIZE_BYTE(struct FTFL_t, 0x18);
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
228
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
229 /* Flash Configuration Field, see Sub-Family Reference Manual, section 28.3.1 */
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
230 struct FTFL_CONFIG_t {
308
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
231 uint8_t key[8];
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
232 uint8_t fprot[4];
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
233 struct FTFL_FSEC_t fsec;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
234 struct FTFL_FOPT_t fopt;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
235 uint8_t feprot;
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
236 uint8_t fdprot;
193
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
237 };
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
238 CTASSERT_SIZE_BYTE(struct FTFL_CONFIG_t, 16);
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
239
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
240 extern volatile struct FTFL_t FTFL;
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
241 extern char FlexRAM[];
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
242 extern struct FTFL_CONFIG_t FTFL_CONFIG;
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
243