diff --git a/lib/card10/pmic.c b/lib/card10/pmic.c index 30519a07c2e48c6b198459f800c2eccf354a30a8..30c7d3a248b30c2917657c48f27ed46093e58805 100644 --- a/lib/card10/pmic.c +++ b/lib/card10/pmic.c @@ -4,7 +4,6 @@ #include <stdint.h> #include <stdio.h> -static void pmic_interrupt_callback(void*_); static const gpio_cfg_t pmic_interrupt_pin = { PORT_0, PIN_12, GPIO_FUNC_IN, GPIO_PAD_PULL_UP }; @@ -77,30 +76,16 @@ void pmic_init(void) GPIO_RegisterCallback(&pmic_interrupt_pin, pmic_interrupt_callback, NULL); GPIO_IntConfig(&pmic_interrupt_pin, GPIO_INT_EDGE, GPIO_INT_FALLING); GPIO_IntEnable(&pmic_interrupt_pin); + NVIC_SetPriority((IRQn_Type)MXC_GPIO_GET_IRQ(pmic_interrupt_pin.port), 2); NVIC_EnableIRQ((IRQn_Type)MXC_GPIO_GET_IRQ(pmic_interrupt_pin.port)); -/* Dropout Detector Rising */ -#define MAX77650_INT_DOD_R (1 << 6) -/* Thermal Alarm 2 Rising */ -#define MAX77650_INT_TJAL2_R (1 << 5) -/* Thermal Alarm 1 Rising */ -#define MAX77650_INT_TJAL1_R (1 << 4) -/* nEN Rising */ -#define MAX77650_INT_nEN_R (1 << 3) -/* nEN Falling */ -#define MAX77650_INT_nEN_F (1 << 2) -/* GPI Rising */ -#define MAX77650_INT_GPI_R (1 << 1) -/* GPI Falling */ -#define MAX77650_INT_GPI_F (1 << 0) - /* Setup power button interrupt */ MAX77650_setINT_M_GLBL(~(MAX77650_INT_nEN_R | MAX77650_INT_nEN_F)); /* Clear existing interrupts */ MAX77650_getINT_GLBL(); } -static void pmic_interrupt_callback(void*_) +__attribute__((weak)) void pmic_interrupt_callback(void*_) { interrupt_pending = true; } diff --git a/lib/card10/pmic.h b/lib/card10/pmic.h index fb522c15a271fdbabad7e0732cbd9606eb36b04f..f913c99b7342dbe65b389c8172c88d25020cec9a 100644 --- a/lib/card10/pmic.h +++ b/lib/card10/pmic.h @@ -4,10 +4,28 @@ #include <stdint.h> #include <stdbool.h> +/* Dropout Detector Rising */ +#define MAX77650_INT_DOD_R (1 << 6) +/* Thermal Alarm 2 Rising */ +#define MAX77650_INT_TJAL2_R (1 << 5) +/* Thermal Alarm 1 Rising */ +#define MAX77650_INT_TJAL1_R (1 << 4) +/* nEN Rising */ +#define MAX77650_INT_nEN_R (1 << 3) +/* nEN Falling */ +#define MAX77650_INT_nEN_F (1 << 2) +/* GPI Rising */ +#define MAX77650_INT_GPI_R (1 << 1) +/* GPI Falling */ +#define MAX77650_INT_GPI_F (1 << 0) + void pmic_init(void); void pmic_set_led(uint8_t led, uint8_t val); void pmic_poll(void); +/* weak, so it can be overwritten by applications */ +void pmic_interrupt_callback(void*_); + typedef void (*pmic_button_callback_fn)(bool falling); void pmic_set_button_callback(pmic_button_callback_fn cb);