Beispiel #1
0
/*=============================================================================

FUNCTION sh_boot_get_bootmode_to_user

DESCRIPTION

DEPENDENCIES
  None

RETURN VALUE

SIDE EFFECTS
  None

NOTE
  None

=============================================================================*/
static int sh_boot_get_bootmode_to_user(char *buffer, const struct kernel_param *kp)
{
	int ret = 0;

	boot_mode = sh_boot_get_bootmode();
	ret = param_get_int(buffer, kp);

	return ret;
}
Beispiel #2
0
static void qpnp_vib_enable(struct timed_output_dev *dev, int value)
{
#ifdef CONFIG_QPNP_SCVIBRATOR
	unsigned short bootmode = sh_boot_get_bootmode();
#endif /* CONFIG_QPNP_SCVIBRATOR */

	struct qpnp_vib *vib = container_of(dev, struct qpnp_vib,
					 timed_dev);

	mutex_lock(&vib->lock);
	hrtimer_cancel(&vib->vib_timer);

	if (value == 0)
		vib->state = 0;
	else {
#ifdef CONFIG_QPNP_SCVIBRATOR
		if (bootmode == 0) {
			value = (value > vib->timeout ?
					 vib->timeout : value);
			printk( KERN_ERR "[%s][ sh_boot_get_bootmode == 0 ] vib timeout_ms = %d ms\n", __func__, value);
		} else if (bootmode == SH_BOOT_NORMAL) {
			value = (value > vib->timeout ?
					 vib->timeout : value);
		}
#else /* CONFIG_QPNP_SCVIBRATOR */
		value = (value > vib->timeout ?
				 vib->timeout : value);
#endif /* CONFIG_QPNP_SCVIBRATOR */
		vib->state = 1;
		hrtimer_start(&vib->vib_timer,
			      ktime_set(value / 1000, (value % 1000) * 1000000),
			      HRTIMER_MODE_REL);
	}
	mutex_unlock(&vib->lock);
	schedule_work(&vib->work);
}