2 Copyright 2018 Massdrop Inc.
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 2 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/>.
21 #include "samd51j18a.h"
23 //TODO: PS: Should bring these ports out to keyboard level configuration
26 #define led_ena REG_PORT_DIRSET0 = 0x08000000 //PA27 Output
27 #define led_on REG_PORT_OUTSET0 = 0x08000000 //PA27 High
28 #define led_off REG_PORT_OUTCLR0 = 0x08000000 //PA27 Low
31 #define m15_ena REG_PORT_DIRSET1 = 0x40000000 //PB30 Output
32 #define m15_on REG_PORT_OUTSET1 = 0x40000000 //PB30 High
33 #define m15_off REG_PORT_OUTCLR1 = 0x40000000 //PB30 Low
35 #define m15_loop(M15X) {uint8_t M15L=M15X; while(M15L--){m15_on;CLK_delay_us(1);m15_off;}}
37 void m15_print(uint32_t x);
38 void dled_print(uint32_t x, uint8_t long_pause);
40 void debug_code_init(void);
41 void debug_code_disable(void);
43 #ifdef DEBUG_BOOT_TRACING
45 #define DBGC(n) debug_code = n
47 extern volatile uint32_t debug_code;
49 enum debug_code_list {
53 DC_CLK_SET_I2C1_FREQ_BEGIN,
54 DC_CLK_SET_I2C1_FREQ_COMPLETE,
55 DC_CLK_SET_I2C0_FREQ_BEGIN,
56 DC_CLK_SET_I2C0_FREQ_COMPLETE,
57 DC_CLK_SET_SPI_FREQ_BEGIN,
58 DC_CLK_SET_SPI_FREQ_COMPLETE,
59 DC_CLK_ENABLE_TIMEBASE_BEGIN,
60 DC_CLK_ENABLE_TIMEBASE_SYNC_ENABLE,
61 DC_CLK_ENABLE_TIMEBASE_SYNC_SWRST_1,
62 DC_CLK_ENABLE_TIMEBASE_SYNC_SWRST_2,
63 DC_CLK_ENABLE_TIMEBASE_TC4_BEGIN,
64 DC_CLK_ENABLE_TIMEBASE_TC4_SYNC_DISABLE,
65 DC_CLK_ENABLE_TIMEBASE_TC4_SYNC_SWRST_1,
66 DC_CLK_ENABLE_TIMEBASE_TC4_SYNC_SWRST_2,
67 DC_CLK_ENABLE_TIMEBASE_TC4_SYNC_CLTRB,
68 DC_CLK_ENABLE_TIMEBASE_TC4_SYNC_CC0,
69 DC_CLK_ENABLE_TIMEBASE_TC4_COMPLETE,
70 DC_CLK_ENABLE_TIMEBASE_TC5_BEGIN,
71 DC_CLK_ENABLE_TIMEBASE_TC5_SYNC_DISABLE,
72 DC_CLK_ENABLE_TIMEBASE_TC5_SYNC_SWRST_1,
73 DC_CLK_ENABLE_TIMEBASE_TC5_SYNC_SWRST_2,
74 DC_CLK_ENABLE_TIMEBASE_TC5_SYNC_CLTRB,
75 DC_CLK_ENABLE_TIMEBASE_TC5_COMPLETE,
76 DC_CLK_ENABLE_TIMEBASE_TC0_BEGIN,
77 DC_CLK_ENABLE_TIMEBASE_TC0_SYNC_DISABLE,
78 DC_CLK_ENABLE_TIMEBASE_TC0_SYNC_SWRST_1,
79 DC_CLK_ENABLE_TIMEBASE_TC0_SYNC_SWRST_2,
80 DC_CLK_ENABLE_TIMEBASE_TC0_COMPLETE,
81 DC_CLK_ENABLE_TIMEBASE_EVSYS_BEGIN,
82 DC_CLK_ENABLE_TIMEBASE_EVSYS_COMPLETE,
83 DC_CLK_ENABLE_TIMEBASE_COMPLETE,
84 DC_CLK_SET_GCLK_FREQ_BEGIN,
85 DC_CLK_SET_GCLK_FREQ_SYNC_1,
86 DC_CLK_SET_GCLK_FREQ_SYNC_2,
87 DC_CLK_SET_GCLK_FREQ_SYNC_3,
88 DC_CLK_SET_GCLK_FREQ_SYNC_4,
89 DC_CLK_SET_GCLK_FREQ_SYNC_5,
90 DC_CLK_SET_GCLK_FREQ_COMPLETE,
91 DC_CLK_INIT_OSC_BEGIN,
92 DC_CLK_INIT_OSC_SYNC_1,
93 DC_CLK_INIT_OSC_SYNC_2,
94 DC_CLK_INIT_OSC_SYNC_3,
95 DC_CLK_INIT_OSC_SYNC_4,
96 DC_CLK_INIT_OSC_SYNC_5,
97 DC_CLK_INIT_OSC_COMPLETE,
98 DC_CLK_RESET_TIME_BEGIN,
99 DC_CLK_RESET_TIME_COMPLETE,
100 DC_CLK_OSC_INIT_BEGIN,
101 DC_CLK_OSC_INIT_XOSC0_SYNC,
102 DC_CLK_OSC_INIT_DPLL_SYNC_DISABLE,
103 DC_CLK_OSC_INIT_DPLL_SYNC_RATIO,
104 DC_CLK_OSC_INIT_DPLL_SYNC_ENABLE,
105 DC_CLK_OSC_INIT_DPLL_WAIT_LOCK,
106 DC_CLK_OSC_INIT_DPLL_WAIT_CLKRDY,
107 DC_CLK_OSC_INIT_GCLK_SYNC_GENCTRL0,
108 DC_CLK_OSC_INIT_COMPLETE,
113 DC_SPI_SYNC_ENABLING,
114 DC_SPI_INIT_COMPLETE,
115 DC_PORT_DETECT_INIT_BEGIN,
116 DC_PORT_DETECT_INIT_FAILED,
117 DC_PORT_DETECT_INIT_COMPLETE,
119 DC_USB_RESET_COMPLETE,
120 DC_USB_SET_HOST_BY_VOLTAGE_BEGIN,
121 DC_USB_SET_HOST_5V_LOW_WAITING,
122 DC_USB_SET_HOST_BY_VOLTAGE_COMPLETE,
123 DC_USB_CONFIGURE_BEGIN,
124 DC_USB_CONFIGURE_GET_SERIAL,
125 DC_USB_CONFIGURE_COMPLETE,
126 DC_USB_WRITE2422_BLOCK_BEGIN,
127 DC_USB_WRITE2422_BLOCK_SYNC_SYSOP,
128 DC_USB_WRITE2422_BLOCK_COMPLETE,
129 DC_ADC0_CLOCK_INIT_BEGIN,
130 DC_ADC0_CLOCK_INIT_COMPLETE,
132 DC_ADC0_SWRST_SYNCING_1,
133 DC_ADC0_SWRST_SYNCING_2,
134 DC_ADC0_AVGCTRL_SYNCING_1,
135 DC_ADC0_AVGCTRL_SYNCING_2,
136 DC_ADC0_SAMPCTRL_SYNCING_1,
137 DC_ADC0_ENABLE_SYNCING_1,
138 DC_ADC0_INIT_COMPLETE,
140 DC_I2C0_INIT_SYNC_ENABLING,
141 DC_I2C0_INIT_SYNC_SYSOP,
142 DC_I2C0_INIT_WAIT_IDLE,
143 DC_I2C0_INIT_COMPLETE,
145 DC_I2C1_INIT_SYNC_ENABLING,
146 DC_I2C1_INIT_SYNC_SYSOP,
147 DC_I2C1_INIT_WAIT_IDLE,
148 DC_I2C1_INIT_COMPLETE,
149 DC_I2C3733_INIT_CONTROL_BEGIN,
150 DC_I2C3733_INIT_CONTROL_COMPLETE,
151 DC_I2C3733_INIT_DRIVERS_BEGIN,
152 DC_I2C3733_INIT_DRIVERS_COMPLETE,
153 DC_I2C_DMAC_LED_INIT_BEGIN,
154 DC_I2C_DMAC_LED_INIT_COMPLETE,
155 DC_I2C3733_CONTROL_SET_BEGIN,
156 DC_I2C3733_CONTROL_SET_COMPLETE,
157 DC_LED_MATRIX_INIT_BEGIN,
158 DC_LED_MATRIX_INIT_COMPLETE,
159 DC_USB2422_INIT_BEGIN,
160 DC_USB2422_INIT_WAIT_5V_LOW,
161 DC_USB2422_INIT_OSC_SYNC_DISABLING,
162 DC_USB2422_INIT_OSC_SYNC_DFLLCTRLB_1,
163 DC_USB2422_INIT_OSC_SYNC_DFLLCTRLB_2,
164 DC_USB2422_INIT_OSC_SYNC_DFLLCTRLB_3,
165 DC_USB2422_INIT_OSC_SYNC_DFLLCTRLB_4,
166 DC_USB2422_INIT_OSC_SYNC_DFLLMUL,
167 DC_USB2422_INIT_OSC_SYNC_ENABLING,
168 DC_USB2422_INIT_USB_SYNC_SWRST,
169 DC_USB2422_INIT_USB_WAIT_SWRST,
170 DC_USB2422_INIT_USB_SYNC_ENABLING,
171 DC_USB2422_INIT_COMPLETE,
172 DC_MAIN_UDC_START_BEGIN,
173 DC_MAIN_UDC_START_COMPLETE,
174 DC_MAIN_CDC_INIT_BEGIN,
175 DC_MAIN_CDC_INIT_COMPLETE,
176 /* Never change the order of error codes! Only add codes to end! */
183 #endif //DEBUG_BOOT_TRACING
185 #endif //_D51_UTIL_H_