diff --git a/firmware/drivers/uda1380.c b/firmware/drivers/uda1380.c index 1636f13365..1f31c4c855 100644 --- a/firmware/drivers/uda1380.c +++ b/firmware/drivers/uda1380.c @@ -164,17 +164,20 @@ void uda1380_enable_output(bool enable) } } +void uda1380_reset(void) +{ + /* RESET signal */ + or_l(1<<29, &GPIO_OUT); + or_l(1<<29, &GPIO_ENABLE); + or_l(1<<29, &GPIO_FUNCTION); + sleep(HZ/100); + and_l(~(1<<29), &GPIO_OUT); +} + /* Initialize UDA1380 codec with default register values (uda1380_defaults) */ int uda1380_init(void) { - /* RESET signal */ - GPIO_OUT |= (1<<29); - GPIO_ENABLE |= (1<<29); - GPIO_FUNCTION |= (1<<29); - - sleep(HZ/100); - - GPIO_OUT &= ~(1<<29); + uda1380_reset(); if (uda1380_set_regs() == -1) return -1; diff --git a/firmware/export/uda1380.h b/firmware/export/uda1380.h index b5a31e33fe..3bef5439b5 100644 --- a/firmware/export/uda1380.h +++ b/firmware/export/uda1380.h @@ -19,7 +19,7 @@ #ifndef _UDA1380_H #define _UDA1380_H - +extern void uda1380_reset(void); extern int uda1380_init(void); extern void uda1380_enable_output(bool enable); extern int uda1380_set_master_vol(int vol_l, int vol_r);