Beispiel #1
0
static int s5k6aafx_s_stream(struct v4l2_subdev *sd, int enable)
{
	struct s5k6aafx_state *state = to_state(sd);
	struct i2c_client *client = v4l2_get_subdevdata(sd);

	int err;
	u32 int_factor;

	if (!enable)
		return 0;

	if (state->req_fmt.colorspace != V4L2_COLORSPACE_JPEG) {
		err = s5k6aafx_set_preview_start(sd);

		printk("s5k6aafx_set_preview_start~~~~~ \n");
		if (err < 0) {
			printk("faild to start preview\n");
			return err;
		}
	}
	else {
		err = s5k6aafx_set_capture_start(sd);
		printk("s5k6aafx_set_capture_start~~~~~ \n");
		if (err < 0) {
			printk("faild to start capture\n");
			return err;
		}
	}
	return 0;
}
Beispiel #2
0
//static long s5k6aafx_set_sensor_mode(enum sensor_mode_t mode)
static long s5k6aafx_set_sensor_mode(int mode)
{
	unsigned short value =0;
	int shade_value = 0;
	unsigned short agc_value = 0;
	switch (mode) 
	{
	case SENSOR_PREVIEW_MODE:
		printk("[PGH] S5K6AAFX SENSOR_PREVIEW_MODE START\n");
		
		s5k6aafx_set_preview_start();

		//test
		printk("<=PCAM=> test delay 150~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
		//mdelay(150);
		msleep(300);
	
		break;

	case SENSOR_SNAPSHOT_MODE:

		printk("<=PCAM=> SENSOR_SNAPSHOT_MODE START\n");
		
		s5k6aafx_set_capture_start();
		
		//test
		printk("<=PCAM=> so many 200msecdelay~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
		//mdelay(200);
		msleep(200);
		
		break;

	
	//case SENSOR_SNAPSHOT_TRANSFER:
	//	CAM_DEBUG("SENSOR_SNAPSHOT_TRANSFER START\n");


		break;
		
	default:
		return -EFAULT;
	}

	return 0;
}
static int s5k6aafx_s_ctrl(struct v4l2_subdev *sd, struct v4l2_control *ctrl)
{
    struct i2c_client *client = v4l2_get_subdevdata(sd);
    struct s5k6aafx_state *state = to_state(sd);

    int err = 0;

    FUNC_ENTR();

    printk("ctrl->id : %d \n", ctrl->id - V4L2_CID_PRIVATE_BASE);
    if(state->check_dataline)
    {
        if( ( ctrl->id != V4L2_CID_CAM_PREVIEW_ONOFF ) &&
                ( ctrl->id != V4L2_CID_CAMERA_CHECK_DATALINE_STOP ) &&
                ( ctrl->id != V4L2_CID_CAMERA_CHECK_DATALINE ) )
        {
            return 0;
        }
    }

    switch (ctrl->id) {
    case V4L2_CID_CAM_PREVIEW_ONOFF:
        if (ctrl->value)
        {
            err = s5k6aafx_set_preview_start(sd);
        }
        else
        {
            err = s5k6aafx_set_preview_stop(sd);
        }
        printk("V4L2_CID_CAM_PREVIEW_ONOFF [%d] \n", ctrl->value);
        break;

    case V4L2_CID_CAM_CAPTURE:
        err = s5k6aafx_set_capture_start(sd, ctrl);
        printk("V4L2_CID_CAM_CAPTURE [%d] \n", ctrl->value);
        break;
    //add capture mode and separate preview mode

    case V4L2_CID_CAMERA_VT_MODE:
        state->vt_mode = ctrl->value;
        err = 0;
        printk("V4L2_CID_CAMERA_VT_MODE [%d] \n", ctrl->value);
        break;
    //add vt mode for read vt settings

    case V4L2_CID_CAMERA_BRIGHTNESS:
        err = s5k6aafx_set_brightness(sd, ctrl);
        printk("V4L2_CID_CAMERA_BRIGHTNESS [%d] \n", ctrl->value);
        break;

    case V4L2_CID_CAMERA_VGA_BLUR:
        err = s5k6aafx_set_blur(sd, ctrl);
        printk("V4L2_CID_CAMERA_VGA_BLUR [%d] \n", ctrl->value);
        break;
        //CID_CAMERA_VGA_BLUR

#if defined(CONFIG_TARGET_LOCALE_LTN)
    //latin_cam VT Camera Antibanding
    case V4L2_CID_CAMERA_ANTI_BANDING:
        state->anti_banding = ctrl->value;
        printk("V4L2_CID_CAMERA_ANTI_BANDING [%d],[%d]\n",state->anti_banding,ctrl->value);
        err = 0;
        break;
        //hmin84.park - 10.07.06
#endif

    case V4L2_CID_CAMERA_CHECK_DATALINE:
        state->check_dataline = ctrl->value;
        err = 0;
        break;

    case V4L2_CID_CAMERA_CHECK_DATALINE_STOP:
        err = s5k6aafx_check_dataline_stop(sd);
        break;

    case V4L2_CID_CAMERA_FRAME_RATE:
        err = s5k6aafx_set_frame_rate(sd, ctrl);
        state->fps = ctrl->value;
        break;

    case V4L2_CID_CAMERA_APP_CHECK:
        err = 0;
        break;

    case V4L2_CID_CAM_JPEG_QUALITY:
        err = 0;
        break;

    case V4L2_CID_CAMERA_SENSOR_MODE:
        err = 0;
        break;

    case V4L2_CID_CAMERA_CHECK_FLIP:
        state->set_vhflip = ctrl->value;
        err = s5k6aafx_set_flip(sd, ctrl);
        break;

    default:
        dev_err(&client->dev, "%s: no such control\n", __func__);
        break;
    }

    return err;
}