Lines Matching refs:info

245 static inline int set_i2c_page(struct noon010_info *info,  in set_i2c_page()  argument
251 if (info->i2c_reg_page != page && (reg & 0xFF) != 0x03) { in set_i2c_page()
254 info->i2c_reg_page = page; in set_i2c_page()
262 struct noon010_info *info = to_noon010(sd); in cam_i2c_read() local
263 int ret = set_i2c_page(info, client, reg_addr); in cam_i2c_read()
273 struct noon010_info *info = to_noon010(sd); in cam_i2c_write() local
274 int ret = set_i2c_page(info, client, reg_addr); in cam_i2c_write()
297 struct noon010_info *info = to_noon010(sd); in noon010_power_ctrl() local
308 info->i2c_reg_page = -1; in noon010_power_ctrl()
327 struct noon010_info *info = to_noon010(sd); in noon010_set_flip() local
342 info->hflip = hflip; in noon010_set_flip()
343 info->vflip = vflip; in noon010_set_flip()
351 struct noon010_info *info = to_noon010(sd); in noon010_set_params() local
354 info->curr_win->vid_ctl1); in noon010_set_params()
358 info->curr_fmt->ispctl1_reg); in noon010_set_params()
391 static int power_enable(struct noon010_info *info) in power_enable() argument
395 if (info->power) { in power_enable()
396 v4l2_info(&info->sd, "%s: sensor is already on\n", __func__); in power_enable()
400 if (gpio_is_valid(info->gpio_nstby)) in power_enable()
401 gpio_set_value(info->gpio_nstby, 0); in power_enable()
403 if (gpio_is_valid(info->gpio_nreset)) in power_enable()
404 gpio_set_value(info->gpio_nreset, 0); in power_enable()
406 ret = regulator_bulk_enable(NOON010_NUM_SUPPLIES, info->supply); in power_enable()
410 if (gpio_is_valid(info->gpio_nreset)) { in power_enable()
412 gpio_set_value(info->gpio_nreset, 1); in power_enable()
414 if (gpio_is_valid(info->gpio_nstby)) { in power_enable()
416 gpio_set_value(info->gpio_nstby, 1); in power_enable()
418 if (gpio_is_valid(info->gpio_nreset)) { in power_enable()
420 gpio_set_value(info->gpio_nreset, 0); in power_enable()
422 gpio_set_value(info->gpio_nreset, 1); in power_enable()
425 info->power = 1; in power_enable()
427 v4l2_dbg(1, debug, &info->sd, "%s: sensor is on\n", __func__); in power_enable()
432 static int power_disable(struct noon010_info *info) in power_disable() argument
436 if (!info->power) { in power_disable()
437 v4l2_info(&info->sd, "%s: sensor is already off\n", __func__); in power_disable()
441 ret = regulator_bulk_disable(NOON010_NUM_SUPPLIES, info->supply); in power_disable()
445 if (gpio_is_valid(info->gpio_nstby)) in power_disable()
446 gpio_set_value(info->gpio_nstby, 0); in power_disable()
448 if (gpio_is_valid(info->gpio_nreset)) in power_disable()
449 gpio_set_value(info->gpio_nreset, 0); in power_disable()
451 info->power = 0; in power_disable()
453 v4l2_dbg(1, debug, &info->sd, "%s: sensor is off\n", __func__); in power_disable()
461 struct noon010_info *info = to_noon010(sd); in noon010_s_ctrl() local
467 mutex_lock(&info->lock); in noon010_s_ctrl()
473 if (!info->power) in noon010_s_ctrl()
490 mutex_unlock(&info->lock); in noon010_s_ctrl()
509 struct noon010_info *info = to_noon010(sd); in noon010_get_fmt() local
521 mutex_lock(&info->lock); in noon010_get_fmt()
522 mf->width = info->curr_win->width; in noon010_get_fmt()
523 mf->height = info->curr_win->height; in noon010_get_fmt()
524 mf->code = info->curr_fmt->code; in noon010_get_fmt()
525 mf->colorspace = info->curr_fmt->colorspace; in noon010_get_fmt()
528 mutex_unlock(&info->lock); in noon010_get_fmt()
549 struct noon010_info *info = to_noon010(sd); in noon010_set_fmt() local
567 mutex_lock(&info->lock); in noon010_set_fmt()
568 if (!info->streaming) { in noon010_set_fmt()
569 info->apply_new_cfg = 1; in noon010_set_fmt()
570 info->curr_fmt = nf; in noon010_set_fmt()
571 info->curr_win = size; in noon010_set_fmt()
575 mutex_unlock(&info->lock); in noon010_set_fmt()
593 struct noon010_info *info = to_noon010(sd); in noon010_s_power() local
596 mutex_lock(&info->lock); in noon010_s_power()
598 ret = power_enable(info); in noon010_s_power()
603 ret = power_disable(info); in noon010_s_power()
605 mutex_unlock(&info->lock); in noon010_s_power()
609 ret = v4l2_ctrl_handler_setup(&info->hdl); in noon010_s_power()
616 struct noon010_info *info = to_noon010(sd); in noon010_s_stream() local
619 mutex_lock(&info->lock); in noon010_s_stream()
620 if (!info->streaming != !on) { in noon010_s_stream()
623 info->streaming = on; in noon010_s_stream()
625 if (!ret && on && info->apply_new_cfg) { in noon010_s_stream()
628 info->apply_new_cfg = 0; in noon010_s_stream()
630 mutex_unlock(&info->lock); in noon010_s_stream()
636 struct noon010_info *info = to_noon010(sd); in noon010_log_status() local
638 v4l2_ctrl_handler_log_status(&info->hdl, sd->name); in noon010_log_status()
684 static int noon010_detect(struct i2c_client *client, struct noon010_info *info) in noon010_detect() argument
688 ret = power_enable(info); in noon010_detect()
696 power_disable(info); in noon010_detect()
704 struct noon010_info *info; in noon010_probe() local
716 info = devm_kzalloc(&client->dev, sizeof(*info), GFP_KERNEL); in noon010_probe()
717 if (!info) in noon010_probe()
720 mutex_init(&info->lock); in noon010_probe()
721 sd = &info->sd; in noon010_probe()
728 v4l2_ctrl_handler_init(&info->hdl, 3); in noon010_probe()
730 v4l2_ctrl_new_std(&info->hdl, &noon010_ctrl_ops, in noon010_probe()
732 v4l2_ctrl_new_std(&info->hdl, &noon010_ctrl_ops, in noon010_probe()
734 v4l2_ctrl_new_std(&info->hdl, &noon010_ctrl_ops, in noon010_probe()
737 sd->ctrl_handler = &info->hdl; in noon010_probe()
739 ret = info->hdl.error; in noon010_probe()
743 info->i2c_reg_page = -1; in noon010_probe()
744 info->gpio_nreset = -EINVAL; in noon010_probe()
745 info->gpio_nstby = -EINVAL; in noon010_probe()
746 info->curr_fmt = &noon010_formats[0]; in noon010_probe()
747 info->curr_win = &noon010_sizes[0]; in noon010_probe()
757 info->gpio_nreset = pdata->gpio_nreset; in noon010_probe()
758 gpio_export(info->gpio_nreset, 0); in noon010_probe()
769 info->gpio_nstby = pdata->gpio_nstby; in noon010_probe()
770 gpio_export(info->gpio_nstby, 0); in noon010_probe()
774 info->supply[i].supply = noon010_supply_name[i]; in noon010_probe()
777 info->supply); in noon010_probe()
781 info->pad.flags = MEDIA_PAD_FL_SOURCE; in noon010_probe()
783 ret = media_entity_init(&sd->entity, 1, &info->pad, 0); in noon010_probe()
787 ret = noon010_detect(client, info); in noon010_probe()
792 v4l2_ctrl_handler_free(&info->hdl); in noon010_probe()
800 struct noon010_info *info = to_noon010(sd); in noon010_remove() local
803 v4l2_ctrl_handler_free(&info->hdl); in noon010_remove()