static void vibrator_enable(struct timed_output_dev *dev, int value)
{
/* FUJITSU:2011-12-1 mod VIB start	*/
#if 0
	hrtimer_cancel(&vibe_timer);

	if (value == 0)
		timed_vibrator_off(dev);
	else {
		value = (value > 15000 ? 15000 : value);

		timed_vibrator_on(dev);

		hrtimer_start(&vibe_timer,
			      ktime_set(value / 1000, (value % 1000) * 1000000),
			      HRTIMER_MODE_REL);
	}
#else
	int vibrator_time = 0;
	if (value == 0) {
		if (vibrator_timer_active()) {
			vibrator_time = vibrator_get_time(dev);
			printk("[VIB] vibrator Off(time[%d])\n", vibrator_time );
			/* Put a delay of 10 ms, in case the vibrator is off immediately */
			if (vibrator_time < 10 || vibrator_time > 50){
				hrtimer_cancel(&vibe_timer);
				vibrator_time = 0;
			}

			vibrator_value = value;
#if TIMED_VIBRATOR_FLAG
			if(timed_vibrator_flag == 1){
				printk("timed_vibrator_enable off schedule cancel\n");
				return;
			}
#endif
			timed_vibrator_off(dev, vibrator_time + 10);
		}
	}
	else {
		printk("[VIB] vibrator On(time[%d])\n", value );
        /* Provisional management                                        */ 
        /* Normal operation is not carried out in case of a small value. */ 
        /* For this reason, 10 ms is used when smaller than 10 ms.       */ 
		if((0 < value )&&(value < 10)){
			value = 10;
		}
		vibrator_value = (value > 15000 ? 15000 : value);
		hrtimer_cancel(&vibe_timer);
		timed_vibrator_on(dev);
	}
#endif
/* FUJITSU:2011-12-1 mod VIB end */
}
Beispiel #2
0
static void vibrator_enable(struct timed_output_dev *dev, int value)
{
        int vibrator_time = 0;
	if (value == 0) {
		if (vibrator_timer_active()) {
                   vibrator_time = vibrator_get_time(dev);
		//	hrtimer_cancel(&vibe_timer);
			/* Put a delay of 10 ms, in case the vibrator is off immediately */
                       if (vibrator_time < 10 || vibrator_time > 50)   
                          {
                            hrtimer_cancel(&vibe_timer);
                            vibrator_time = 0;
                          }

                        vibrator_value = value;
                        timed_vibrator_off(dev, vibrator_time + 10);
		}
	}
	else {
                vibrator_value = (value > 15000 ? 15000 : value);
		hrtimer_cancel(&vibe_timer);
		timed_vibrator_on(dev);
	}
}