//ACCDET hardware initial static inline void __init accfix_init(void) { ACCFIX_DEBUG("[accfix]accfix hardware init\n"); //kal_uint8 val; //resolve MT6573 ACCDET hardware issue: ear bias supply can make Vref drop obviously //during plug in/out headset then cause modem exception or kernel panic //solution: set bit3 of PMIC_RESERVE_CON2 to force MIC voltage to 0 when MIC is drop to negative voltage //SETREG32(PMIC_RESERVE_CON2, MIC_FORCE_LOW); enable_clock(MT65XX_PDN_PERI_ACCDET,"ACCFIX"); //reset the accdet unit OUTREG32(ACCDET_RSTB, RSTB_BIT); OUTREG32(ACCDET_RSTB, RSTB_FINISH_BIT); //init pwm frequency and duty OUTREG32(ACCDET_PWM_WIDTH, REGISTER_VALUE(cust_headset_settings.pwm_width)); OUTREG32(ACCDET_PWM_THRESH, REGISTER_VALUE(cust_headset_settings.pwm_thresh)); OUTREG32(ACCDET_EN_DELAY_NUM, (cust_headset_settings.fall_delay << 15 | cust_headset_settings.rise_delay)); // init the debounce time OUTREG32(ACCDET_DEBOUNCE0, cust_headset_settings.debounce0); OUTREG32(ACCDET_DEBOUNCE1, cust_headset_settings.debounce1); OUTREG32(ACCDET_DEBOUNCE3, cust_headset_settings.debounce3); #ifdef ACCFIX_EINT // disable ACCDET unit pre_state_swctrl = INREG32(ACCDET_STATE_SWCTRL); OUTREG32(ACCDET_CTRL, ACCDET_DISABLE); OUTREG32(ACCDET_STATE_SWCTRL, 0); #else // enable ACCDET unit OUTREG32(ACCDET_STATE_SWCTRL, ACCDET_SWCTRL_EN); OUTREG32(ACCDET_CTRL, ACCDET_ENABLE); #endif }
REGISTER(Y), REGISTER(Z), REGISTER(I), REGISTER(J), { "POP", PUSH_POP }, { "PUSH", PUSH_POP }, { "PEEK", PEEK }, { "SP", SP }, { "PC", PC }, { "EX", EX }, NULL }; struct register_mapping register_value_name_map[] = { REGISTER_VALUE(A), REGISTER_VALUE(B), REGISTER_VALUE(C), REGISTER_VALUE(X), REGISTER_VALUE(Y), REGISTER_VALUE(Z), REGISTER_VALUE(I), REGISTER_VALUE(J), { "POP", BRACKETS_UNSUPPORTED }, { "PEEK", BRACKETS_UNSUPPORTED }, { "PUSH", BRACKETS_UNSUPPORTED }, { "SP", PEEK }, { "PC", BRACKETS_UNSUPPORTED }, { "EX", BRACKETS_UNSUPPORTED }, NULL };