static int sunxi_arisc_resume(struct device *dev) { unsigned long wake_event; standby_info_para_t sst_info; atomic_set(&arisc_suspend_flag, 0); arisc_query_wakeup_source(&wake_event); if (wake_event & CPUS_WAKEUP_POWER_EXP) { ARISC_LOG("power exception during standby, enable:0x%x" \ " expect state:0x%x, expect consumption:%dmw", \ arisc_powchk_back.power_state.enable, \ arisc_powchk_back.power_state.power_reg, \ arisc_powchk_back.power_state.system_power); arisc_query_standby_power(&sst_info); ARISC_LOG(" real state:0x%x, real consumption:%dmw\n", \ sst_info.power_state.power_reg, \ sst_info.power_state.system_power); } return 0; }
/* ���»��� */ static int sunxi_keypad_resume(struct device *dev) { unsigned int keypad_event = 0; dprintk(DEBUG_SUSPEND, "enter: sunxi_keypad_resume. \n"); arisc_query_wakeup_source(&keypad_event); dprintk(DEBUG_SUSPEND, "%s: event 0x%x\n", __func__, keypad_event); if (CPUS_WAKEUP_IR&keypad_event) {/////unfinish input_report_key(keypd_dev, keypad_power_key, 1); input_sync(keypd_dev); msleep(1); input_report_key(keypd_dev, keypad_power_key, 0); input_sync(keypd_dev); } key_pressed[0] = 0; key_pressed[1] = 0; clk_prepare_enable(keypad_clk); enable_irq(KEYPAD_IRQNUM); return 0; }