diff --git a/src/board/system76/galp3-c/ecpm.c b/src/board/system76/galp3-c/ecpm.c new file mode 100644 index 0000000..6aa87ab --- /dev/null +++ b/src/board/system76/galp3-c/ecpm.c @@ -0,0 +1,10 @@ +#include + +void ecpm_init(void) { + // Clock gate EGPC, CIR, and SWUC + CGCTRL2 |= (1 << 6) | (1 << 5) | (1 << 4); + // Clock gate UART, SSPI, and DBGR + CGCTRL3 |= (1 << 2) | (1 << 1) | (1 << 0); + // Clock gate CEC + CGCTRL4 |= (1 << 0); +} diff --git a/src/board/system76/galp3-c/include/board/ecpm.h b/src/board/system76/galp3-c/include/board/ecpm.h new file mode 100644 index 0000000..2b10105 --- /dev/null +++ b/src/board/system76/galp3-c/include/board/ecpm.h @@ -0,0 +1,8 @@ +#ifndef _BOARD_ECPM_H +#define _BOARD_ECPM_H + +#include + +void ecpm_init(void); + +#endif // _BOARD_ECPM_H diff --git a/src/board/system76/galp3-c/main.c b/src/board/system76/galp3-c/main.c index 5c1ca36..a8f4ede 100644 --- a/src/board/system76/galp3-c/main.c +++ b/src/board/system76/galp3-c/main.c @@ -7,6 +7,7 @@ #include #include #include +#include #include #include #include @@ -33,17 +34,19 @@ void timer_2(void) __interrupt(5) {} uint8_t main_cycle = 0; void init(void) { + // Must happen first arch_init(); - - gpio_init(); gctrl_init(); - pwm_init(); + gpio_init(); + // Can happen in any order + ecpm_init(); kbc_init(); kbled_init(); kbscan_init(); - pmc_init(); peci_init(); + pmc_init(); + pwm_init(); smbus_init(); //TODO: INTC