示例#1
0
void input_event(struct input_dev *dev,
		 unsigned int type, unsigned int code, int value)
{
	unsigned long flags;

	if (is_event_supported(type, dev->evbit, EV_MAX)) {

		spin_lock_irqsave(&dev->event_lock, flags);
		add_input_randomness(type, code, value);
		input_handle_event(dev, type, code, value);
		spin_unlock_irqrestore(&dev->event_lock, flags);
	}
}
示例#2
0
void input_event(struct input_dev *dev,
		 unsigned int type, unsigned int code, int value)
{
	unsigned long flags;

	if (is_event_supported(type, dev->evbit, EV_MAX)) {

//henry+mouse speed setting
if(type==EV_REL && (code==REL_X || code==REL_Y)){
 //printk("Henry>>add speed!\n");
	value=(int) ( (value * m_speed) / 4);
}
		spin_lock_irqsave(&dev->event_lock, flags);
		add_input_randomness(type, code, value);
		input_handle_event(dev, type, code, value);
		spin_unlock_irqrestore(&dev->event_lock, flags);
	}
}
示例#3
0
void input_event(struct input_dev *dev,
		 unsigned int type, unsigned int code, int value)
{
	unsigned long flags;

	if (is_event_supported(type, dev->evbit, EV_MAX)) {

		spin_lock_irqsave(&dev->event_lock, flags);
		add_input_randomness(type, code, value);
#ifdef	CONFIG_FAKE_PM
		if(code == 116)
			input_handle_event(dev, type, code, value);
		else if(if_in_suspend == 0)
		{
#endif
			input_handle_event(dev, type, code, value);
#ifdef	CONFIG_FAKE_PM
		}
#endif
		spin_unlock_irqrestore(&dev->event_lock, flags);
	}
}
示例#4
0
void input_event(struct input_dev *dev,
		 unsigned int type, unsigned int code, int value)
{
	unsigned long flags;
/*
 *  Forced upload mode key string (tkhwang)
 */
     
#ifdef CONFIG_KERNEL_DEBUG_SEC
    static bool first=0, second=0, third = 0;
    
#if defined (CONFIG_KEYPAD_S3C)

    if(strcmp(dev->name,"s3c-keypad")==0)
    {
        if(value)
        {
            if(code==KERNEL_SEC_FORCED_UPLOAD_1ST_KEY)
            {
                first =1;
            }
            if(first==1 && code==KERNEL_SEC_FORCED_UPLOAD_2ND_KEY)
            {
                if ( (KERNEL_SEC_DEBUG_LEVEL_MID == kernel_sec_get_debug_level()) ||
                	    KERNEL_SEC_DEBUG_LEVEL_HIGH == kernel_sec_get_debug_level() )
                {
                    // Display the working callstack for the debugging.
                    dump_stack();

                    if (kernel_sec_viraddr_wdt_reset_reg)
                    {
                       kernel_sec_set_cp_upload();
                       kernel_sec_save_final_context(); // Save theh final context.
                       kernel_sec_set_upload_cause(UPLOAD_CAUSE_FORCED_UPLOAD);
                       kernel_sec_hw_reset(false);      // Reboot.
                    }
                 }                
            }                
        }
        else
        {
            if(code==KERNEL_SEC_FORCED_UPLOAD_1ST_KEY)
            {
                first = 0;
            }
        }
    }
#endif //CONFIG_KEYPAD_S3C

#if defined (CONFIG_KEYBOARD_GPIO)    
    if(strcmp(dev->name,"gpio-keys")==0)
    {
        if(value)
        {
            if(code == KEY_VOLUMEUP)
                first = true;
                
            if(code == KEY_POWER)
                second = true;

		if(code == KEY_VOLUMEDOWN)
                third = true;
                
            if(first&&second&&third)
            {
            
                if (kernel_sec_viraddr_wdt_reset_reg)
                {
                printk("[%s][line:%d]\n",__func__, __LINE__);
                      kernel_sec_set_cp_upload();
                      kernel_sec_save_final_context(); // Save theh final context.
                      kernel_sec_set_upload_cause(UPLOAD_CAUSE_FORCED_UPLOAD);
                      kernel_sec_hw_reset(false);      // Reboot.
                }
            }
        }
        else
        {
            if(code == KEY_VOLUMEUP)
                first = false;

            if(code == KEY_POWER)
                second = false;

		if(code == KEY_VOLUMEDOWN)
                third = false;
		     
        }
    }
#endif  //CONFIG_KEYBOARD_GPIO

#endif // CONFIG_KERNEL_DEBUG_SEC


	if (is_event_supported(type, dev->evbit, EV_MAX)) {

		spin_lock_irqsave(&dev->event_lock, flags);
		add_input_randomness(type, code, value);
		input_handle_event(dev, type, code, value);
		spin_unlock_irqrestore(&dev->event_lock, flags);
	}
}
示例#5
0
void input_event(struct input_dev *dev,
		 unsigned int type, unsigned int code, int value)
{
	unsigned long flags;

/*
 *  Forced upload mode key string (tkhwang)
 */
     
#ifdef CONFIG_KERNEL_DEBUG_SEC

    static int first=0, second=0;

    if(strcmp(dev->name,"s3c-keypad")==0)
    {
        if(value)
        {
            if(code==KERNEL_SEC_FORCED_UPLOAD_1ST_KEY)
            {
                first =1;
            }
            if(first==1 && code==KERNEL_SEC_FORCED_UPLOAD_2ND_KEY)
            {

                printk(KERN_ERR"level %d  reg %x \n",kernel_sec_get_debug_level(), kernel_sec_viraddr_wdt_reset_reg);
               			
                if ( (KERNEL_SEC_DEBUG_LEVEL_MID == kernel_sec_get_debug_level()) ||
                	    KERNEL_SEC_DEBUG_LEVEL_HIGH == kernel_sec_get_debug_level() )
                {

                printk(KERN_ERR" USER Press volume key + Power key ==> Force RAM DUMP \n");

#if 0 
                    // Display the working callstack for the debugging.
                    dump_stack();

                    if (kernel_sec_viraddr_wdt_reset_reg)
                    {
                       kernel_sec_set_cp_upload();
                       kernel_sec_save_final_context(); // Save theh final context.
                       kernel_sec_set_upload_cause(UPLOAD_CAUSE_FORCED_UPLOAD);
                       kernel_sec_hw_reset(false);      // Reboot.
                    }


#endif 
                 }                
           }
        }
        else
        {
            if(code==KERNEL_SEC_FORCED_UPLOAD_1ST_KEY)
            {
                first = 0;
            }
        }
    }
#endif // CONFIG_KERNEL_DEBUG_SEC    

	if (is_event_supported(type, dev->evbit, EV_MAX)) {

		spin_lock_irqsave(&dev->event_lock, flags);
		add_input_randomness(type, code, value);
		input_handle_event(dev, type, code, value);
		spin_unlock_irqrestore(&dev->event_lock, flags);
	}
}
示例#6
0
void input_event(struct input_dev *dev, unsigned int type, unsigned int code, int value)
{
	struct input_handle *handle = dev->handle;

/*
 * Filter non-events, and bad input values out.
 */

	if (type > EV_MAX || !test_bit(type, dev->evbit))
		return;

	switch (type) {

		case EV_KEY:

			if (code > KEY_MAX || !test_bit(code, dev->keybit) || !!test_bit(code, dev->key) == value)
				return;

			if (value == 2) break;

			change_bit(code, dev->key);

			if (test_bit(EV_REP, dev->evbit) && dev->timer.function) {
				if (value) {
					mod_timer(&dev->timer, jiffies + dev->rep[REP_DELAY]);
					dev->repeat_key = code;
					break;
				}
				if (dev->repeat_key == code)
					del_timer(&dev->timer);
			}

			break;
		
		case EV_ABS:

			if (code > ABS_MAX || !test_bit(code, dev->absbit) || (value == dev->abs[code]))
				return;

			dev->abs[code] = value;

			break;

		case EV_REL:

			if (code > REL_MAX || !test_bit(code, dev->relbit) || (value == 0))
				return;

			break;

		case EV_LED:
	
			if (code > LED_MAX || !test_bit(code, dev->ledbit) || !!test_bit(code, dev->led) == value)
				return;

			change_bit(code, dev->led);
			if (dev->event) dev->event(dev, type, code, value);	
	
			break;

		case EV_SND:
	
			if (code > SND_MAX || !test_bit(code, dev->sndbit) || !!test_bit(code, dev->snd) == value)
				return;

			change_bit(code, dev->snd);
			if (dev->event) dev->event(dev, type, code, value);	
	
			break;

		case EV_REP:

			if (code > REP_MAX || dev->rep[code] == value) return;

			dev->rep[code] = value;
			if (dev->event) dev->event(dev, type, code, value);

			break;
	}
/*
 * Add randomness.
 */

#if 0 /* BUG */
	add_input_randomness(((unsigned long) dev) ^ (type << 24) ^ (code << 16) ^ value);
#endif

/*
 * Distribute the event to handler modules.
 */

	while (handle) {
		handle->handler->event(handle, type, code, value);
		handle = handle->dnext;
	}
}