/* * tuple format: (key_code, key_param) * * old-architecture: * key-press = (key_code, 0) * key-release = (0xff, key_code) * * new-architecutre: * key-press = (key_code, 0) * key-release = (key_code, 0xff) */ static void report_hs_key(uint32_t key_code, uint32_t key_parm) { int key, temp_key_code; if (key_code == HS_REL_K) key = hs_find_key(key_parm); else key = hs_find_key(key_code); temp_key_code = key_code; if (key_parm == HS_REL_K) key_code = key_parm; switch (key) { case KEY_POWER: case KEY_END: #if 0 case KEY_MEDIA: case KEY_VOLUMEUP: case KEY_VOLUMEDOWN: #endif #if 0 input_report_key(hs->ipdev, key, (key_code != HS_REL_K)); #else if(pm_key) { #if DEBUG switch (key) { case KEY_POWER: printk(KERN_INFO "[msm-handset] [%s] KEY_POWER[%d] key_code[%d]\n", __func__,key,key_code); break; case KEY_END: printk(KERN_INFO "[msm-handset] [%s] KEY_END[%d] key_code[%d]\n", __func__,key,key_code); break; } #endif #if defined(CONFIG_TENKEY_KEYPAD) && (CONFIG_TENKEY_KEYPAD_SUBID == 2) if(shext_hw_revision_cleck == true) { input_report_key(pm_key->ipdev, KEY_SAVE, (key_code != HS_REL_K)); }else{ input_report_key(pm_key->ipdev, key, (key_code != HS_REL_K)); input_sync(pm_key->ipdev); } #else input_report_key(pm_key->ipdev, key, (key_code != HS_REL_K)); input_sync(pm_key->ipdev); #endif } else { #if DEBUG printk(KERN_INFO "[msm-handset] [%s] pm_key = NULL\n", __func__); #endif } #endif break; #if 1 case KEY_MEDIA: #if 0 report_headphone_switch(hs->ipdev, key, (key_code != HS_REL_K)); #else if(hssw) { report_headphone_switch(hssw->ipdev, key, (key_code != HS_REL_K)); input_sync(hssw->ipdev); } else { #if DEBUG printk(KERN_INFO "[msm-handset] [%s] hssw = NULL\n", __func__); #endif } #endif break; #endif case SW_HEADPHONE_INSERT_W_MIC: hs->mic_on = hs->hs_on = (key_code != HS_REL_K) ? 1 : 0; input_report_switch(hs->ipdev, SW_HEADPHONE_INSERT, hs->hs_on); input_report_switch(hs->ipdev, SW_MICROPHONE_INSERT, hs->mic_on); update_state(); break; case SW_HEADPHONE_INSERT: #if 0 report_headset_switch(hs->ipdev, key, (key_code != HS_REL_K)); #else if(hs) { report_headset_switch(hs->ipdev, key, key_parm); #endif #if 1 input_sync(hs->ipdev); #endif } else { #if DEBUG printk(KERN_INFO "[msm-handset] [%s] hs = NULL\n", __func__); #endif } hs->hs_on = (key_code != HS_REL_K) ? 1 : 0; // input_report_switch(hs->ipdev, key, hs->hs_on); update_state(); break; case SW_MICROPHONE_INSERT: hs->mic_on = (key_code != HS_REL_K) ? 1 : 0; input_report_switch(hs->ipdev, key, hs->mic_on); update_state(); break; #ifdef FLIP_USE /* FLIP */ case SW_LID: if(hs) { if(report_flip_switch(hs->ipdev, key, key_parm) != 0) { return; } #if 1 input_sync(hs->ipdev); #endif } else { #if DEBUG printk(KERN_INFO "[msm-handset] [%s] hs = NULL\n", __func__); #endif } break; #endif case -1: printk(KERN_ERR "%s: No mapping for remote handset event %d\n", __func__, temp_key_code); return; } #if 0 input_sync(hs->ipdev); #endif }
/* * tuple format: (key_code, key_param) * * old-architecture: * key-press = (key_code, 0) * key-release = (0xff, key_code) * * new-architecutre: * key-press = (key_code, 0) * key-release = (key_code, 0xff) */ static void report_hs_key(uint32_t key_code, uint32_t key_parm) { int key, temp_key_code; if (key_code == HS_REL_K) key = hs_find_key(key_parm); else key = hs_find_key(key_code); temp_key_code = key_code; if (key_parm == HS_REL_K) key_code = key_parm; switch (key) { case KEY_POWER: case KEY_END: #if 0 case KEY_MEDIA: case KEY_VOLUMEUP: case KEY_VOLUMEDOWN: #endif #if 0 input_report_key(hs->ipdev, key, (key_code != HS_REL_K)); #else if(pm_key) { input_report_key(pm_key->ipdev, key, (key_code != HS_REL_K)); input_sync(pm_key->ipdev); } #endif break; #if 1 case KEY_MEDIA: #if 0 report_headphone_switch(hs->ipdev, key, (key_code != HS_REL_K)); #else if(hssw) { report_headphone_switch(hssw->ipdev, key, (key_code != HS_REL_K)); input_sync(hssw->ipdev); } else { #if DEBUG printk(KERN_INFO "[msm-handset] [%s] hssw = NULL\n", __func__); #endif } #endif break; #endif case SW_HEADPHONE_INSERT: #if 0 report_headset_switch(hs->ipdev, key, (key_code != HS_REL_K)); #else if(hs) { report_headset_switch(hs->ipdev, key, key_parm); #endif #if 1 input_sync(hs->ipdev); #endif } else { #if DEBUG printk(KERN_INFO "[msm-handset] [%s] hs = NULL\n", __func__); #endif } break; #if 1 case SW_LID: break; #endif #if 1 case KEY_VOLUMEUP: case KEY_VOLUMEDOWN: case KEY_CAMERA: case KEY_FOCUS: #ifdef CONFIG_LYNCIS_KEYPAD case KEY_MENU: case KEY_HOME: case KEY_BACK: case KEY_SEARCH: #endif /* CONFIG_LYNCIS_KEYPAD */ if(mt_key) { input_report_key(mt_key->ipdev, key, (key_code != HS_REL_K)); input_sync(mt_key->ipdev); } else { printk(KERN_INFO "[msm-handset] [%s] mt_key = NULL\n", __func__); } break; #endif case -1: printk(KERN_ERR "%s: No mapping for remote handset event %d\n", __func__, temp_key_code); return; } #if 0 input_sync(hs->ipdev); #endif }