Ejemplo n.º 1
0
static void kp_repeat_sr(unsigned long data)
{
	struct kp *kp_data=(struct kp *)data;
	u32 	status;
	u32  timer_period;

	status = READ_AOBUS_REG(AO_IR_DEC_STATUS);
	switch(status&REMOTE_HW_DECODER_STATUS_MASK) 
	{
		case REMOTE_HW_DECODER_STATUS_OK:
			kp_send_key(kp_data->input, (kp_data->cur_keycode>>16)&0xff, 0);
			repeat_flag = 0;
			break ;
		default:
			SET_AOBUS_REG_MASK(AO_IR_DEC_REG1,1);//reset ir deocoder
			CLEAR_AOBUS_REG_MASK(AO_IR_DEC_REG1,1);	
			if(kp_data->repeat_tick !=0)//new key coming in.
			{
				timer_period= jiffies + 10 ;  //timer peroid waiting for a stable state.
			}
			else //repeat key check
			{
				if(kp_data->repeat_enable)
				{
					kp_send_key(kp_data->input, (kp_data->cur_keycode>>16)&0xff, 2);
				}
				timer_period=jiffies+msecs_to_jiffies(kp_data->repeat_peroid);
			}
			mod_timer(&kp_data->repeat_timer,timer_period);
			kp_data->repeat_tick =0;
			break;
	}
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;
}
Ejemplo n.º 3
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;
}