int aml_callkey_resume(struct platform_device *pdev) { int v=0; #ifdef CONFIG_AMLOGIC_MODEM if(!get_modemPower()){ printk("aml_callkey_resume, modem is power off\n"); return 0; } #endif if (READ_AOBUS_REG(AO_RTI_STATUS_REG2) == CALL_FLAG) { printk("aml_callkey_resume, uboot tell me call wakeup system\n"); v=1; }else{ v = gp_call_key_workdata->callkey_pdata->get_phone_ring_value(); printk("aml_callkey_resume, get_phone_ring_value is %d\n",v); } if(0 < v){ printk("aml_callkey_resume, key %d pressed.\n", KEY_PHONERING); requestWakeLock(gp_call_key_workdata); input_report_key(input, KEY_PHONERING, 1); input_sync(input); mod_timer(&gp_call_key_workdata->wk_timer,jiffies+msecs_to_jiffies(UNLOCK_DELAYTIME)); WRITE_AOBUS_REG(AO_RTI_STATUS_REG2, 0); } return 0 ; }
static int ir_init() { unsigned int control_value; //mask--mux gpioao_7 to remote SET_AOBUS_REG_MASK(AO_RTI_PIN_MUX_REG,1<<0); //max frame time is 80ms, base rate is 20us control_value = 3<<28|(0x9c40 << 12)|0x13; WRITE_AOBUS_REG(AO_IR_DEC_REG0, control_value); /*[3-2]rising or falling edge detected [8-7]Measure mode */ control_value = 0x8574; WRITE_AOBUS_REG(AO_IR_DEC_REG1, control_value); return 0; }
int do_irtest(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { unsigned int i; printf("Enter NEC IR testing function ...\n"); SET_AOBUS_REG_MASK(AO_RTI_PIN_MUX_REG, 1<<0);//set IR pinmux WRITE_AOBUS_REG(AO_IR_DEC_LDR_ACTIVE, 0x01d801ac); WRITE_AOBUS_REG(AO_IR_DEC_LDR_IDLE, 0x00f800ca); WRITE_AOBUS_REG(AO_IR_DEC_LDR_REPEAT, 0); WRITE_AOBUS_REG(AO_IR_DEC_BIT_0, 0x0044002c); WRITE_AOBUS_REG(AO_IR_DEC_REG0, 0x30fa0013); WRITE_AOBUS_REG(AO_IR_DEC_STATUS, 0x08915c00); WRITE_AOBUS_REG(AO_IR_DEC_REG1, 0x0000be70); for(i = 0; i < 200; i++){ msleep(50); if(READ_AOBUS_REG_BITS(AO_IR_DEC_STATUS, 3, 1)) printf("key = 0x%08x\n", READ_AOBUS_REG(AO_IR_DEC_FRAME)); else printf("No key !!!\n"); } return 0; }