static ssize_t dvfslock_ctrl(const char *buf, size_t count) { unsigned int ret = -EINVAL; int dlevel; int dtime_msec; ret = sscanf(buf, "%u", &gdDvfsctrl); if (ret != 1) return -EINVAL; if (gdDvfsctrl ==0) { if (dvfsctrl_locked) { s5pv310_cpufreq_lock_free(DVFS_LOCK_ID_APP); dvfsctrl_locked = 0; } return -EINVAL; } if (dvfsctrl_locked) { printk(KERN_ERR "%s - already locked\n", __func__); return 0; } dlevel = gdDvfsctrl / 10000; dtime_msec = gdDvfsctrl % 10000; if (dtime_msec < 16) dtime_msec = 16; if (dtime_msec == 0) return -EINVAL; if (dlevel) dlevel = CPU_L1; else dlevel = CPU_L0; printk(KERN_DEBUG "%s: level = %d, time =%d\n", __func__, dlevel, dtime_msec); s5pv310_cpufreq_lock(DVFS_LOCK_ID_APP, dlevel); dvfsctrl_locked = 1; schedule_delayed_work(&dvfslock_ctrl_unlock_work, msecs_to_jiffies(dtime_msec)); return -EINVAL; }
static int s5k6aafx_init(struct v4l2_subdev *sd, u32 val) { //struct i2c_client *client = v4l2_get_subdevdata(sd); struct s5k6aafx_state *state = to_state(sd); int err = -EINVAL; static int lock_level = -1; FUNC_ENTR(); #ifdef CONFIG_LOAD_FILE err = loadFile(); if (unlikely(err)) { printk("%s: failed to init\n", __func__); return err; } #endif #if defined(CONFIG_CPU_FREQ) if (lock_level < 0) lock_level = s5pv310_cpufreq_round_idx(CPUFREQ_1200MHZ); if (s5pv310_cpufreq_lock(DVFS_LOCK_ID_CAM, lock_level)) printk(KERN_ERR "%s: error : failed lock DVFS\n", __func__); #endif /* set initial regster value */ if (state->vt_mode == 0) { printk("%s: load camera common setting \n", __func__); #ifdef CONFIG_LOAD_FILE err = s5k6aafx_write_regs_from_sd(sd, "s5k6aafx_common"); #else err = s5k6aafx_write_regs(sd, s5k6aafx_common, sizeof(s5k6aafx_common) / sizeof(s5k6aafx_common[0])); #endif } else { printk("%s: load camera VT call setting \n", __func__); #ifdef CONFIG_LOAD_FILE err = s5k6aafx_write_regs_from_sd(sd, "s5k6aafx_vt_common"); #else err = s5k6aafx_write_regs(sd, s5k6aafx_vt_common, sizeof(s5k6aafx_vt_common) / sizeof(s5k6aafx_vt_common[0])); #endif } #if defined(CONFIG_CPU_FREQ) s5pv310_cpufreq_lock_free(DVFS_LOCK_ID_CAM); #endif if (unlikely(err)) { printk("%s: failed to init\n", __func__); return err; } #if defined(CONFIG_TARGET_LOCALE_LTN) //latin_cam VT Cam Antibanding if (state->anti_banding == ANTI_BANDING_60HZ) { err = s5k6aafx_set_60hz_antibanding(sd); if (unlikely(err)) { printk("%s: failed to s5k6aafx_set_60hz_antibanding \n", __func__); return err; } } //hmin84.park -10.07.06 #endif state->set_fmt.width = DEFAULT_WIDTH; state->set_fmt.height = DEFAULT_HEIGHT; return 0; }
static int s5k5bbgx_init(struct v4l2_subdev *sd, u32 val) { /* struct i2c_client *client = v4l2_get_subdevdata(sd); */ struct s5k5bbgx_state *state = to_state(sd); int err = -EINVAL; cam_dbg("E\n"); #ifdef CONFIG_CPU_FREQ if (s5pv310_cpufreq_lock(DVFS_LOCK_ID_CAM, CPU_L0)) cam_err("failed lock DVFS\n"); #endif /* set initial regster value */ #ifdef CONFIG_LOAD_FILE if (!state->vt_mode) { cam_dbg("load camera common setting\n"); err = s5k5bbgx_write_regs_from_sd(sd, "s5k5bbgx_common"); } else { if (state->vt_mode == 1) { cam_info("load camera VT call setting\n"); err = s5k5bbgx_write_regs_from_sd(sd, "s5k5bbgx_vt_common"); } else { cam_info("load camera WIFI VT call setting\n"); err = s5k5bbgx_write_regs_from_sd(sd, "s5k5bbgx_vt_wifi_common"); } } #else if (!state->vt_mode) { cam_info("load camera common setting\n"); err = s5k5bbgx_write_regs(sd, s5k5bbgx_common, sizeof(s5k5bbgx_common) / \ sizeof(s5k5bbgx_common[0])); } else { if (state->vt_mode == 1) { cam_info("load camera VT call setting\n"); err = s5k5bbgx_write_regs(sd, s5k5bbgx_vt_common, sizeof(s5k5bbgx_vt_common) / \ sizeof(s5k5bbgx_vt_common[0])); } else { cam_info("load camera WIFI VT call setting\n"); err = s5k5bbgx_write_regs(sd, s5k5bbgx_vt_wifi_common, sizeof(s5k5bbgx_vt_wifi_common) / \ sizeof(s5k5bbgx_vt_wifi_common[0])); } } #endif #ifdef CONFIG_CPU_FREQ s5pv310_cpufreq_lock_free(DVFS_LOCK_ID_CAM); #endif if (unlikely(err)) { cam_err("failed to init\n"); return err; } /* We stop stream-output from sensor when starting camera. */ err = s5k5bbgx_control_stream(sd, STREAM_STOP); if (unlikely(err < 0)) return err; msleep(150); if (state->vt_mode && (state->req_fps != state->set_fps)) { err = s5k5bbgx_set_frame_rate(sd, state->req_fps); if (unlikely(err < 0)) return err; else state->set_fps = state->req_fps; } state->initialized = 1; return 0; }