Example #1
0
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;
}
Example #2
0
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;
}