Exemplo n.º 1
0
static long hw_camera_led_ioctl(struct file *filep ,unsigned int cmd, unsigned long arg)
{
	int ret = 0;
	unsigned int camera_led_state;
	extern int tps61310_set_flash(unsigned led_state);
	
	CDBG("function %s enterence\n",__func__);
	switch(cmd)
	{
		case CAMERA_LED_GET :
			
			camera_led_state = atomic_read(&camera_led_flag);
			if(copy_to_user((void __user *)arg,&camera_led_state,sizeof(camera_led_state))) 
			{
				pr_err("function copy_to_user fail");
				ret = -EFAULT;
			}
			break;
		case CAMERA_LED_SET :
			if(copy_from_user(&camera_led_state,(void __user *)arg,sizeof(camera_led_state)))
			{
				pr_err("function copy_from_user fail");
				ret = -EFAULT;
			}
			else
			{
				/*these handset use tps61310 as flash*/
				if(/* machine_is_msm8x25_U8825()
				|| machine_is_msm8x25_U8825D()
                || machine_is_msm8x25_U8833D()
                || machine_is_msm8x25_U8833()                
				|| machine_is_msm8x25_C8825D()
				|| machine_is_msm8x25_C8950D()
				|| machine_is_msm8x25_U8950D()
				|| machine_is_msm8x25_U8951()
                || machine_is_msm8x25_C8951()
                || machine_is_msm8x25_H881C()
				||machine_is_msm8x25_U8950()*/ 1)
				{
				call_led_set_state(camera_led_state);
				}
				else
				{
					ret = msm_camera_flash_set_led_state(&hw_camera_led_data, camera_led_state);
				}
				
				if(!ret)
				{
					atomic_set(&camera_led_flag,camera_led_state);
				}
			}
			break;
		default:
			pr_err("hw_camera_led_ioctl:error ioctl cmd");
			ret = -EINVAL;
		
	}
	
	return ret;
}
Exemplo n.º 2
0
int msm_flash_ctrl(struct msm_camera_sensor_info *sdata,
	struct flash_ctrl_data *flash_info)
{
	int rc = 0;
	sensor_data = sdata;
	switch (flash_info->flashtype) {
	case LED_FLASH:
/* LGE_CHANGE_S L9II Camera bringup 2013-03-11 [email protected] */
#if defined (CONFIG_MSM_CAMERA_FLASH_LM3559)
		rc = lm3559_flash_set_led_state(flash_info->ctrl_data.led_state);
		CDBG("%s: lm3559_flash_set_led_state rc = %d\n", __func__, rc);
#elif defined (CONFIG_MSM_CAMERA_FLASH_LM3639)
		rc = lm3639_flash_set_led_state(flash_info->ctrl_data.led_state);
		CDBG("%s: lm3639_flash_set_led_state rc = %d\n", __func__, rc);
#else
		rc = msm_camera_flash_set_led_state(sdata->flash_data,
			flash_info->ctrl_data.led_state);
#endif
/* LGE_CHANGE_E L9II Camera bringup 2013-03-11 [email protected] */
			break;
	case STROBE_FLASH:
		rc = msm_strobe_flash_ctrl(sdata->strobe_flash_data,
			&(flash_info->ctrl_data.strobe_ctrl));
		break;
	default:
		pr_err("Invalid Flash MODE\n");
		rc = -EINVAL;
	}
	return rc;
}
int msm_flash_ctrl(struct msm_camera_sensor_info *sdata,
	struct flash_ctrl_data *flash_info)
{
	int rc = 0;
	sensor_data = sdata;
	switch (flash_info->flashtype) {
	case LED_FLASH:

#ifdef CONFIG_MSM_CAMERA_FLASH_LM3559
		rc = lm3559_flash_set_led_state(flash_info->ctrl_data.led_state);
#else
		rc = msm_camera_flash_set_led_state(sdata->flash_data,
		    flash_info->ctrl_data.led_state);
#endif
		break;
	case STROBE_FLASH:
		rc = msm_strobe_flash_ctrl(sdata->strobe_flash_data,
			&(flash_info->ctrl_data.strobe_ctrl));
		break;
	default:
		pr_err("Invalid Flash MODE\n");
		rc = -EINVAL;
	}
	return rc;
}
Exemplo n.º 4
0
static long hw_camera_led_ioctl(struct file *filep ,unsigned int cmd, unsigned long arg)
{
    int ret = 0;
    unsigned int camera_led_state;

    CDBG("function %s enterence\n", __func__);
    switch (cmd)
    {
    case CAMERA_LED_GET:

        camera_led_state = atomic_read(&camera_led_flag);
        if (copy_to_user((void __user *)arg, &camera_led_state, sizeof(camera_led_state)))
        {
            pr_err("function copy_to_user fail");
            ret = -EFAULT;
        }

        break;
    case CAMERA_LED_SET:
        if (copy_from_user(&camera_led_state, (void __user *)arg, sizeof(camera_led_state)))
        {
            pr_err("function copy_from_user fail");
            ret = -EFAULT;
        }
        else
        {
            /* U8680 and U8730 use tps61310 flash driver IC, so set led with tps61310 function */
#ifdef CONFIG_ARCH_MSM7X27A
			ret = tps61310_set_flash(camera_led_state);
#else
            if (machine_is_msm8255_u8680() 
               || machine_is_msm8255_u8730()
               //|| machine_is_msm8255_u8867z()
				)
            {
                tps61310_set_flash(camera_led_state);
            }
            else
            {
                ret = msm_camera_flash_set_led_state(&hw_camera_led_data, camera_led_state);
            }
#endif

            if (!ret)
            {
                atomic_set(&camera_led_flag, camera_led_state);
            }
        }

        break;
    default:
        pr_err("hw_camera_led_ioctl:error ioctl cmd");
        ret = -EINVAL;
    }

    return ret;
}
Exemplo n.º 5
0
static long hw_camera_led_ioctl(struct file *filep ,unsigned int cmd, unsigned long arg)
{
    int ret = 0;
    unsigned int camera_led_state;
    hw_product_sub_type product_sub_type = get_hw_sub_board_id();

    CDBG("function %s enterence\n",__func__);
    switch(cmd)
    {
    case CAMERA_LED_GET :

        camera_led_state = atomic_read(&camera_led_flag);
        if(copy_to_user((void __user *)arg,&camera_led_state,sizeof(camera_led_state)))
        {
            pr_err("function copy_to_user fail");
            ret = -EFAULT;
        }
        break;
    case CAMERA_LED_SET :
        if(copy_from_user(&camera_led_state,(void __user *)arg,sizeof(camera_led_state)))
        {
            pr_err("function copy_from_user fail");
            ret = -EFAULT;
        }
        else
        {
            /*C8813Q support torch */
            if( machine_is_msm8x25_C8950D()
                    || machine_is_msm8x25_C8813()
                    || machine_is_msm8x25_C8813Q()
                    || machine_is_msm8x25_G610C()
                    || ( ( machine_is_msm8x25_U8951()
                           || machine_is_msm8x25_G520U())
                         && ( !IS_UMTS_DOUBLE_SIM(product_sub_type) ) ) )
            {
                ret = call_led_set_state(camera_led_state);
            }
            else
            {
                ret = msm_camera_flash_set_led_state(&hw_camera_led_data, camera_led_state);
            }

            if(!ret)
            {
                atomic_set(&camera_led_flag,camera_led_state);
            }
        }
        break;
    default:
        pr_err("hw_camera_led_ioctl:error ioctl cmd");
        ret = -EINVAL;

    }

    return ret;
}
Exemplo n.º 6
0
int msm_flash_ctrl(struct msm_camera_sensor_info *sdata,
	struct flash_ctrl_data *flash_info)
{
	int rc = 0;
	switch (flash_info->flashtype) {
	case LED_FLASH:
		rc = msm_camera_flash_set_led_state(sdata->flash_data,
			flash_info->ctrl_data.led_state);
			break;
	case STROBE_FLASH:
		rc = msm_strobe_flash_ctrl(sdata->strobe_flash_data,
			&(flash_info->ctrl_data.strobe_ctrl));
		break;
	default:
		pr_err("Invalid Flash MODE\n");
		rc = -EINVAL;
	}
	return rc;
}