//[Arima Edison] add exception for charger usage++
static ssize_t enable_vibrator(struct device *dev,
					struct device_attribute *attr,
					const char *buf, size_t count)
{

	static unsigned long keep_time_data;
	int rc;

	if (strict_strtoul(buf, 10, &keep_time_data))
		return -EINVAL;

	hrtimer_cancel(&vibe_timer);

	keep_time_data = (keep_time_data > 300 ? 300 : keep_time_data);
	rc = pmic_vib_mot_set_mode(PM_VIB_MOT_MODE__MANUAL);

	if(keep_time_data == 0)
	{
		rc = pmic_vib_mot_set_volt(0);
	}
	else {
		rc = pmic_vib_mot_set_volt(3000);
		mdelay( keep_time_data );
		rc = pmic_vib_mot_set_volt(0);

	}

	return count;
}
static void board_vibrator_ctrl(int on)
{
	int ret = 0;
	static int nStatus = 0;
	unsigned int vib_voltage = 0;

	printk("%s on = %d nStatus = %d\n", __func__, on, nStatus);

	if(nStatus == on)	{
		printk("%s set already!\n", __func__);
		return VIBE_E_FAIL;
	}
	else {
		nStatus = on;
	}

	vib_voltage = 3100;

	if(on)	{
		ret = pmic_vib_mot_set_volt(vib_voltage);
	}
	else {
		ret = pmic_vib_mot_set_volt(0);
	}

	printk("%s status = %d\n", __func__, ret);

	return VIBE_S_SUCCESS;
}
示例#3
0
static void set_pmic_vibrator(int on)
{
	if (on){
		pmic_vib_mot_set_polarity(PM_VIB_MOT_POL__ACTIVE_LOW);
		pmic_vib_mot_set_mode(PM_VIB_MOT_MODE__DBUS2);
		pmic_vib_mot_set_volt(PMIC_VIBRATOR_ON_LEV);
	}else{
		pmic_vib_mot_set_volt(0);
	}
}
示例#4
0
static void set_pmic_vibrator(int on)
{
	mutex_lock(&sh_vibrator_pmic_mutex);
	if (on){
		pmic_vib_mot_set_polarity(PM_VIB_MOT_POL__ACTIVE_LOW);
		pmic_vib_mot_set_mode(PM_VIB_MOT_MODE__DBUS2);
		pmic_vib_mot_set_volt(PMIC_VIBRATOR_ON_LEV);
		pr_debug("[shvibrator] PMIC vibrator On.\n");
	}else{
		pr_debug("[shvibrator] PMIC vibrator Off.\n");
		pmic_vib_mot_set_volt(0);
	}
	mutex_unlock(&sh_vibrator_pmic_mutex);
}
static void set_pmic_vibrator(int on)
{
	int rc;

	rc = pmic_vib_mot_set_mode(PM_VIB_MOT_MODE__MANUAL);
	if (rc) {
		pr_err("%s: Vibrator set mode failed", __func__);
		return;
	}

	if (on)
		rc = pmic_vib_mot_set_volt(PMIC_VIBRATOR_LEVEL);
	else
		rc = pmic_vib_mot_set_volt(0);

	if (rc)
		pr_err("%s: Vibrator set voltage level failed", __func__);
}
示例#6
0
static void vibrator_control( struct vibrator_classdev *classdev, int state )
{
	struct vib_driver_data	*driver_data	= container_of( classdev, struct vib_driver_data, classdev );

	if( pmic_vib_mot_set_volt( state ? driver_data->level : 0 ) < 0 )
		printk( KERN_ERR "VIB : Vibrator(%s) set voltage level failed\n", classdev->name );
	else
		printk( "VIB : Vibrator(%s) %s\n", classdev->name, state ? "on" : "off" );
}
static void set_pmic_vibrator(int on)
{
	int rc;

	rc = pmic_vib_mot_set_mode(PM_VIB_MOT_MODE__MANUAL);
	if (rc) {
		pr_err("%s: Vibrator set mode failed", __func__);
		return;
	}

	if (on)
		rc = pmic_vib_mot_set_volt(vibrator_duration_value);
	else
		rc = pmic_vib_mot_set_volt(0);
#if 0
	if (rc)
		pr_err("%s: Vibrator set voltage level failed", __func__);
#endif
}
static void set_pmic_vibrator(int on)
{
	int rc;
	/*++ Kevin Shiu - 20121003 Save intensity using liked list ++*/
	vibrator_list *vibrator = NULL;
	/*-- Kevin Shiu - 20121003 Save intensity using liked list --*/

	rc = pmic_vib_mot_set_mode(PM_VIB_MOT_MODE__MANUAL);
	if (rc) {
		pr_err("%s: Vibrator set mode failed", __func__);
		return;
	}

	/*++ Kevin Shiu - 20121003 Save intensity using liked list ++*/
	if(on && (vibrator_list_head.next == &vibrator_list_head)){
		pr_err("%s: list_head is invalid", __func__);
		return;
	}

	if(on){
		//get vibrator_list pointer
		vibrator = list_entry(vibrator_list_head.next , vibrator_list , list);
		rc = pmic_vib_mot_set_volt(vibrator->vibrator_level);

        //if ture, it means that only creates a structure.
		if(vibrator->list.next == vibrator->list.prev){
			list_del_rcu(&vibrator_list_head);
			INIT_LIST_HEAD(&vibrator_list_head);
		}else{	
			list_del_rcu(&vibrator->list);
		}

		//free
		kfree(vibrator);
	}else{
		rc = pmic_vib_mot_set_volt(0);
	}
    /*-- Kevin Shiu - 20121003 Save intensity using liked list --*/

	if (rc)
		pr_err("%s: Vibrator set voltage level failed", __func__);
}
示例#9
0
static void set_pmic_vibrator(int on)
{
	int rc = 0;

	rc = pmic_vib_mot_set_mode(PM_VIB_MOT_MODE__MANUAL);
	if (rc < 0) {
		printk(KERN_ERR "vib set mode rpc failed!\n");
	}

	rc = pmic_vib_mot_set_volt(on?PMIC_VIBRATOR_LEVEL:0);
	if (rc < 0) {
		printk(KERN_ERR "vib set volt rpc failed!\n");
	}
}
示例#10
0
static int debug_vib_mot_set_volt(char *buf, int size)
{
	int vol;
	int	cnt;

	cnt = sscanf(buf, "%d", &vol);
	if (cnt < 1) {
		printk(KERN_ERR "%s: sscanf failed cnt=%d" , __func__, cnt);
		return -EINVAL;
	}
	if (pmic_vib_mot_set_volt(vol) < 0)
		return -EFAULT;

	return size;
}
示例#11
0
static void set_pmic_vibrator(int on)
{
	int rc;

	rc = pmic_vib_mot_set_mode(PM_VIB_MOT_MODE__MANUAL);
	if (rc) {
		pr_err("%s: Vibrator set mode failed", __func__);
		return;
	}

/* LGE_CHANGE,
 * Apply changed voltage to operate vibrator
 * 2011-08-20, [email protected]
*/
	if (on)
		/* rc = pmic_vib_mot_set_volt(PMIC_VIBRATOR_LEVEL); */ /* origin code */
		rc = pmic_vib_mot_set_volt(voltage);
/* LGE_CHANGE End */
	else
		rc = pmic_vib_mot_set_volt(0);

	if (rc)
		pr_err("%s: Vibrator set voltage level failed", __func__);
}
示例#12
0
static int hcit_ioctl(struct inode *ino, struct file *filp, unsigned int cmd,
		      unsigned long arg)
{
	int err = 0;

	switch (cmd) {
	case HCIT_IOCTL_KEYLED_ON:
		printk("[HCIT] HCIT_IOControl : IOCTL_GPIO_KEYLEDON \r\n");
		pmic_set_led_intensity(LED_KEYPAD, PMIC_LED_LCD__LEVEL4);
		break;
	case HCIT_IOCTL_KEYLED_OFF:
		printk("[HCIT] HCIT_IOControl : IOCTL_GPIO_KEYLEDOFF\r\n");
		pmic_set_led_intensity(LED_KEYPAD, PMIC_LED_LCD__LEVEL0);
		break;
	case HCIT_IOCTL_VIB_ON:
		{
			int time_ms;
			time_ms = *((int *)arg);
			pmic_vib_mot_set_volt(VIBRATOR_MOTOR_ON_VOLT);
			if (time_ms > 0) {
				msleep(time_ms);
				pmic_vib_mot_set_volt(VIBRATOR_MOTOR_OFF_VOLT);
			}
		}
		break;
	case HCIT_IOCTL_VIB_OFF:
		pmic_vib_mot_set_volt(VIBRATOR_MOTOR_OFF_VOLT);
		break;
	case HCIT_IOCTL_LCD_BACKLIGHT_ON:
		printk
		    ("[HCIT] HCIT_IOControl : HCIT_IOCTL_LCD_BACKLIGHT_ON \r\n");
		gpio_direction_output(29, 1);
		break;
	case HCIT_IOCTL_LCD_BACKLIGHT_OFF:
		printk
		    ("[HCIT] HCIT_IOControl : HCIT_IOCTL_LCD_BACKLIGHT_OFF \r\n");
		gpio_direction_output(29, 0);
		break;
	case HCIT_IOCTL_GPIOLED_ON:
	case HCIT_IOCTL_GPIOLED_OFF:
		printk
		    ("[HCIT] HCIT_IOControl : HCIT_IOCTL_GPIOLED_ON / OFF\r\n");
		hcit_gpioled_ctl(arg);
		break;
	case HCIT_IOCTL_BLUETOOTH_ON:
		err = bluetooth_power(1);
		printk
		    ("[HCIT] HCIT_IOControl : HCIT_IOCTL_BLUETOOTH_ON err<%d>\r\n",
		     err);
		break;
	case HCIT_IOCTL_BLUETOOTH_OFF:
		err = bluetooth_power(0);
		printk
		    ("[HCIT] HCIT_IOControl : HCIT_IOCTL_BLUETOOTH_OFF err<%d>\r\n",
		     err);
		break;
	default:
		printk("[HCIT] HCIT_IOControl : unknown cmd=%d\r\n", cmd);
		break;
	}

	return 0;
}