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; }
//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; }