#include #include #include "eos.h" #include "log.h" #include "eve/eve.h" #include "eve/eve_touch_engine.h" #include "egpio.h" #include "egpio_priv.h" #include "eve.h" #include "aon.h" #include "ctp.h" #include "lcd.h" #include "hpamp.h" #include "app.h" void eos_app_hp_change(int hp_det) { if (hp_det) { int rv; rv = eos_hpamp_init(); if (rv) { EOS_LOG(EOS_LOG_ERR, "I2S HP CHANGE: PCM1770 INIT ERR:%d\n", rv); return; } } } int eos_app_give(void) { int rv, _rv; if (!eos_egpio_get_val(EGPIO_PIN_DISP_SEL)) return EOS_ERR; eos_aon_save4app(eos_egpio_get_val(EGPIO_PIN_CTP_SEL)); rv = eos_egpio_intr_disable(); if (rv) return rv; rv = eve_select(); if (rv) goto app_give_err_select; _eos_eve_sleep(); rv = eos_lcd_give(); if (rv) goto app_give_err; rv = eos_egpio_set_val(EGPIO_PIN_CTP_SEL, 0); if (rv) goto app_give_err; rv = eos_egpio_set_val(EGPIO_PIN_DISP_SEL, 0); if (rv) goto app_give_err; eve_pwr_sleep(); app_give_err: if (rv) _eos_eve_wake(); eve_deselect(); app_give_err_select: _rv = eos_egpio_intr_set(); if (!rv && _rv) return _rv; return rv; } int eos_app_take(void) { int rv, _rv, ctp_sel; if (eos_egpio_get_val(EGPIO_PIN_DISP_SEL)) return EOS_ERR; ctp_sel = eos_aon_load4app(); rv = eos_egpio_intr_disable(); if (rv) return rv; rv = eve_select(); if (rv) goto app_take_err_select; eve_pwr_wake(); rv = eos_egpio_set_val(EGPIO_PIN_DISP_SEL, 1); if (rv) goto app_take_err; rv = eos_egpio_set_val(EGPIO_PIN_CTP_SEL, ctp_sel); if (rv) goto app_take_err; if (!ctp_sel) { eve_touch_reset_engine(); } rv = eos_lcd_take(); if (rv) goto app_take_err; _eos_eve_wake(); app_take_err: if (rv) eve_pwr_sleep(); eve_deselect(); if (!rv && ctp_sel) { _rv = _eos_ctp_reset(); if (_rv) rv = _rv; } app_take_err_select: _rv = eos_egpio_intr_set(); if (!rv && _rv) return _rv; return rv; }