Lines Matching defs:info

241 static inline int set_i2c_page(struct noon010_info *info,
247 if (info->i2c_reg_page != page && (reg & 0xFF) != 0x03) {
250 info->i2c_reg_page = page;
258 struct noon010_info *info = to_noon010(sd);
259 int ret = set_i2c_page(info, client, reg_addr);
269 struct noon010_info *info = to_noon010(sd);
270 int ret = set_i2c_page(info, client, reg_addr);
293 struct noon010_info *info = to_noon010(sd);
304 info->i2c_reg_page = -1;
323 struct noon010_info *info = to_noon010(sd);
338 info->hflip = hflip;
339 info->vflip = vflip;
347 struct noon010_info *info = to_noon010(sd);
350 info->curr_win->vid_ctl1);
354 info->curr_fmt->ispctl1_reg);
386 /* Called with info.lock mutex held */
387 static int power_enable(struct noon010_info *info)
391 if (info->power) {
392 v4l2_info(&info->sd, "%s: sensor is already on\n", __func__);
396 if (gpio_is_valid(info->gpio_nstby))
397 gpio_set_value(info->gpio_nstby, 0);
399 if (gpio_is_valid(info->gpio_nreset))
400 gpio_set_value(info->gpio_nreset, 0);
402 ret = regulator_bulk_enable(NOON010_NUM_SUPPLIES, info->supply);
406 if (gpio_is_valid(info->gpio_nreset)) {
408 gpio_set_value(info->gpio_nreset, 1);
410 if (gpio_is_valid(info->gpio_nstby)) {
412 gpio_set_value(info->gpio_nstby, 1);
414 if (gpio_is_valid(info->gpio_nreset)) {
416 gpio_set_value(info->gpio_nreset, 0);
418 gpio_set_value(info->gpio_nreset, 1);
421 info->power = 1;
423 v4l2_dbg(1, debug, &info->sd, "%s: sensor is on\n", __func__);
427 /* Called with info.lock mutex held */
428 static int power_disable(struct noon010_info *info)
432 if (!info->power) {
433 v4l2_info(&info->sd, "%s: sensor is already off\n", __func__);
437 ret = regulator_bulk_disable(NOON010_NUM_SUPPLIES, info->supply);
441 if (gpio_is_valid(info->gpio_nstby))
442 gpio_set_value(info->gpio_nstby, 0);
444 if (gpio_is_valid(info->gpio_nreset))
445 gpio_set_value(info->gpio_nreset, 0);
447 info->power = 0;
449 v4l2_dbg(1, debug, &info->sd, "%s: sensor is off\n", __func__);
457 struct noon010_info *info = to_noon010(sd);
463 mutex_lock(&info->lock);
469 if (!info->power)
486 mutex_unlock(&info->lock);
505 struct noon010_info *info = to_noon010(sd);
517 mutex_lock(&info->lock);
518 mf->width = info->curr_win->width;
519 mf->height = info->curr_win->height;
520 mf->code = info->curr_fmt->code;
521 mf->colorspace = info->curr_fmt->colorspace;
524 mutex_unlock(&info->lock);
545 struct noon010_info *info = to_noon010(sd);
563 mutex_lock(&info->lock);
564 if (!info->streaming) {
565 info->apply_new_cfg = 1;
566 info->curr_fmt = nf;
567 info->curr_win = size;
571 mutex_unlock(&info->lock);
589 struct noon010_info *info = to_noon010(sd);
592 mutex_lock(&info->lock);
594 ret = power_enable(info);
599 ret = power_disable(info);
601 mutex_unlock(&info->lock);
605 ret = v4l2_ctrl_handler_setup(&info->hdl);
612 struct noon010_info *info = to_noon010(sd);
615 mutex_lock(&info->lock);
616 if (!info->streaming != !on) {
619 info->streaming = on;
621 if (!ret && on && info->apply_new_cfg) {
624 info->apply_new_cfg = 0;
626 mutex_unlock(&info->lock);
632 struct noon010_info *info = to_noon010(sd);
634 v4l2_ctrl_handler_log_status(&info->hdl, sd->name);
680 static int noon010_detect(struct i2c_client *client, struct noon010_info *info)
684 ret = power_enable(info);
692 power_disable(info);
700 struct noon010_info *info;
712 info = devm_kzalloc(&client->dev, sizeof(*info), GFP_KERNEL);
713 if (!info)
716 mutex_init(&info->lock);
717 sd = &info->sd;
725 v4l2_ctrl_handler_init(&info->hdl, 3);
727 v4l2_ctrl_new_std(&info->hdl, &noon010_ctrl_ops,
729 v4l2_ctrl_new_std(&info->hdl, &noon010_ctrl_ops,
731 v4l2_ctrl_new_std(&info->hdl, &noon010_ctrl_ops,
734 sd->ctrl_handler = &info->hdl;
736 ret = info->hdl.error;
740 info->i2c_reg_page = -1;
741 info->gpio_nreset = -EINVAL;
742 info->gpio_nstby = -EINVAL;
743 info->curr_fmt = &noon010_formats[0];
744 info->curr_win = &noon010_sizes[0];
754 info->gpio_nreset = pdata->gpio_nreset;
755 gpio_export(info->gpio_nreset, 0);
766 info->gpio_nstby = pdata->gpio_nstby;
767 gpio_export(info->gpio_nstby, 0);
771 info->supply[i].supply = noon010_supply_name[i];
774 info->supply);
778 info->pad.flags = MEDIA_PAD_FL_SOURCE;
780 ret = media_entity_pads_init(&sd->entity, 1, &info->pad);
784 ret = noon010_detect(client, info);
789 v4l2_ctrl_handler_free(&info->hdl);
797 struct noon010_info *info = to_noon010(sd);
800 v4l2_ctrl_handler_free(&info->hdl);