Lines Matching refs:max96714

91 struct max96714 {  struct
126 #define to_max96714(sd) container_of(sd, struct max96714, subdev) argument
269 struct max96714 *max96714 = to_max96714(sd); in max96714_set_fmt() local
272 mutex_lock(&max96714->mutex); in max96714_set_fmt()
283 mutex_unlock(&max96714->mutex); in max96714_set_fmt()
287 if (max96714->streaming) { in max96714_set_fmt()
288 mutex_unlock(&max96714->mutex); in max96714_set_fmt()
293 mutex_unlock(&max96714->mutex); in max96714_set_fmt()
302 struct max96714 *max96714 = to_max96714(sd); in max96714_get_fmt() local
303 const struct max96714_mode *mode = max96714->cur_mode; in max96714_get_fmt()
305 mutex_lock(&max96714->mutex); in max96714_get_fmt()
310 mutex_unlock(&max96714->mutex); in max96714_get_fmt()
319 mutex_unlock(&max96714->mutex); in max96714_get_fmt()
356 struct max96714 *max96714 = to_max96714(sd); in max96714_g_frame_interval() local
357 const struct max96714_mode *mode = max96714->cur_mode; in max96714_g_frame_interval()
359 mutex_lock(&max96714->mutex); in max96714_g_frame_interval()
361 mutex_unlock(&max96714->mutex); in max96714_g_frame_interval()
366 static void max96714_get_module_inf(struct max96714 *max96714, in max96714_get_module_inf() argument
371 strscpy(inf->base.module, max96714->module_name, in max96714_get_module_inf()
373 strscpy(inf->base.lens, max96714->len_name, sizeof(inf->base.lens)); in max96714_get_module_inf()
376 static void max96714_get_vicap_rst_inf(struct max96714 *max96714, in max96714_get_vicap_rst_inf() argument
379 struct i2c_client *client = max96714->client; in max96714_get_vicap_rst_inf()
381 rst_info->is_reset = max96714->hot_plug; in max96714_get_vicap_rst_inf()
382 max96714->hot_plug = false; in max96714_get_vicap_rst_inf()
387 static void max96714_set_vicap_rst_inf(struct max96714 *max96714, in max96714_set_vicap_rst_inf() argument
390 max96714->is_reset = rst_info.is_reset; in max96714_set_vicap_rst_inf()
395 struct max96714 *max96714 = to_max96714(sd); in max96714_ioctl() local
401 max96714_get_module_inf(max96714, (struct rkmodule_inf *)arg); in max96714_ioctl()
408 ret = max96714_write_reg(max96714->client, in max96714_ioctl()
413 ret = max96714_write_reg(max96714->client, in max96714_ioctl()
419 max96714_get_vicap_rst_inf(max96714, in max96714_ioctl()
423 max96714_set_vicap_rst_inf(max96714, in max96714_ioctl()
540 static int __max96714_start_stream(struct max96714 *max96714) in __max96714_start_stream() argument
544 ret = max96714_write_array(max96714->client, max96714->cur_mode->reg_list); in __max96714_start_stream()
549 mutex_unlock(&max96714->mutex); in __max96714_start_stream()
550 ret = v4l2_ctrl_handler_setup(&max96714->ctrl_handler); in __max96714_start_stream()
551 mutex_lock(&max96714->mutex); in __max96714_start_stream()
555 return max96714_write_reg(max96714->client, in __max96714_start_stream()
561 static int __max96714_stop_stream(struct max96714 *max96714) in __max96714_stop_stream() argument
563 return max96714_write_reg(max96714->client, in __max96714_stop_stream()
571 struct max96714 *max96714 = to_max96714(sd); in max96714_s_stream() local
572 struct i2c_client *client = max96714->client; in max96714_s_stream()
576 max96714->cur_mode->width, in max96714_s_stream()
577 max96714->cur_mode->height, in max96714_s_stream()
578 DIV_ROUND_CLOSEST(max96714->cur_mode->max_fps.denominator, in max96714_s_stream()
579 max96714->cur_mode->max_fps.numerator)); in max96714_s_stream()
581 mutex_lock(&max96714->mutex); in max96714_s_stream()
583 if (on == max96714->streaming) in max96714_s_stream()
593 ret = __max96714_start_stream(max96714); in max96714_s_stream()
600 __max96714_stop_stream(max96714); in max96714_s_stream()
604 max96714->streaming = on; in max96714_s_stream()
607 mutex_unlock(&max96714->mutex); in max96714_s_stream()
614 struct max96714 *max96714 = to_max96714(sd); in max96714_s_power() local
615 struct i2c_client *client = max96714->client; in max96714_s_power()
618 mutex_lock(&max96714->mutex); in max96714_s_power()
621 if (max96714->power_on == !!on) in max96714_s_power()
631 max96714->power_on = true; in max96714_s_power()
634 max96714->power_on = false; in max96714_s_power()
638 mutex_unlock(&max96714->mutex); in max96714_s_power()
649 static int __max96714_power_on(struct max96714 *max96714) in __max96714_power_on() argument
653 struct device *dev = &max96714->client->dev; in __max96714_power_on()
655 if (!IS_ERR(max96714->power_gpio)) in __max96714_power_on()
656 gpiod_set_value_cansleep(max96714->power_gpio, 1); in __max96714_power_on()
660 if (!IS_ERR_OR_NULL(max96714->pins_default)) { in __max96714_power_on()
661 ret = pinctrl_select_state(max96714->pinctrl, in __max96714_power_on()
662 max96714->pins_default); in __max96714_power_on()
667 if (!IS_ERR(max96714->reset_gpio)) in __max96714_power_on()
668 gpiod_set_value_cansleep(max96714->reset_gpio, 0); in __max96714_power_on()
670 ret = regulator_bulk_enable(MAX96714_NUM_SUPPLIES, max96714->supplies); in __max96714_power_on()
676 if (!IS_ERR(max96714->reset_gpio)) in __max96714_power_on()
677 gpiod_set_value_cansleep(max96714->reset_gpio, 1); in __max96714_power_on()
680 if (!IS_ERR(max96714->pwdn_gpio)) in __max96714_power_on()
681 gpiod_set_value_cansleep(max96714->pwdn_gpio, 1); in __max96714_power_on()
690 clk_disable_unprepare(max96714->xvclk); in __max96714_power_on()
695 static void __max96714_power_off(struct max96714 *max96714) in __max96714_power_off() argument
698 struct device *dev = &max96714->client->dev; in __max96714_power_off()
700 if (!IS_ERR(max96714->pwdn_gpio)) in __max96714_power_off()
701 gpiod_set_value_cansleep(max96714->pwdn_gpio, 0); in __max96714_power_off()
702 clk_disable_unprepare(max96714->xvclk); in __max96714_power_off()
703 if (!IS_ERR(max96714->reset_gpio)) in __max96714_power_off()
704 gpiod_set_value_cansleep(max96714->reset_gpio, 0); in __max96714_power_off()
706 if (!IS_ERR_OR_NULL(max96714->pins_sleep)) { in __max96714_power_off()
707 ret = pinctrl_select_state(max96714->pinctrl, in __max96714_power_off()
708 max96714->pins_sleep); in __max96714_power_off()
712 if (!IS_ERR(max96714->power_gpio)) in __max96714_power_off()
713 gpiod_set_value_cansleep(max96714->power_gpio, 0); in __max96714_power_off()
715 regulator_bulk_disable(MAX96714_NUM_SUPPLIES, max96714->supplies); in __max96714_power_off()
722 struct max96714 *max96714 = to_max96714(sd); in max96714_runtime_resume() local
724 return __max96714_power_on(max96714); in max96714_runtime_resume()
731 struct max96714 *max96714 = to_max96714(sd); in max96714_runtime_suspend() local
733 __max96714_power_off(max96714); in max96714_runtime_suspend()
741 struct max96714 *max96714 = to_max96714(sd); in max96714_open() local
746 mutex_lock(&max96714->mutex); in max96714_open()
753 mutex_unlock(&max96714->mutex); in max96714_open()
791 struct max96714 *max96714 = to_max96714(sd); in max96714_get_selection() local
795 sel->r.width = max96714->cur_mode->width; in max96714_get_selection()
797 sel->r.height = max96714->cur_mode->height; in max96714_get_selection()
844 static int max96714_initialize_controls(struct max96714 *max96714) in max96714_initialize_controls() argument
850 handler = &max96714->ctrl_handler; in max96714_initialize_controls()
851 mode = max96714->cur_mode; in max96714_initialize_controls()
855 handler->lock = &max96714->mutex; in max96714_initialize_controls()
857 max96714->link_freq = v4l2_ctrl_new_int_menu(handler, NULL, in max96714_initialize_controls()
861 max96714->pixel_rate = v4l2_ctrl_new_std(handler, NULL, in max96714_initialize_controls()
866 __v4l2_ctrl_s_ctrl(max96714->link_freq, in max96714_initialize_controls()
871 dev_err(&max96714->client->dev, in max96714_initialize_controls()
876 max96714->subdev.ctrl_handler = handler; in max96714_initialize_controls()
886 static int max96714_check_sensor_id(struct max96714 *max96714, in max96714_check_sensor_id() argument
889 struct device *dev = &max96714->client->dev; in max96714_check_sensor_id()
905 static int max96714_configure_regulators(struct max96714 *max96714) in max96714_configure_regulators() argument
910 max96714->supplies[i].supply = max96714_supply_names[i]; in max96714_configure_regulators()
912 return devm_regulator_bulk_get(&max96714->client->dev, in max96714_configure_regulators()
914 max96714->supplies); in max96714_configure_regulators()
922 struct max96714 *max96714; in max96714_probe() local
932 max96714 = devm_kzalloc(dev, sizeof(*max96714), GFP_KERNEL); in max96714_probe()
933 if (!max96714) in max96714_probe()
937 &max96714->module_index); in max96714_probe()
939 &max96714->module_facing); in max96714_probe()
941 &max96714->module_name); in max96714_probe()
943 &max96714->len_name); in max96714_probe()
949 max96714->client = client; in max96714_probe()
950 max96714->cur_mode = &supported_modes[0]; in max96714_probe()
952 max96714->power_gpio = devm_gpiod_get(dev, "power", GPIOD_OUT_LOW); in max96714_probe()
953 if (IS_ERR(max96714->power_gpio)) in max96714_probe()
956 max96714->reset_gpio = devm_gpiod_get(dev, "reset", GPIOD_OUT_LOW); in max96714_probe()
957 if (IS_ERR(max96714->reset_gpio)) in max96714_probe()
960 max96714->pwdn_gpio = devm_gpiod_get(dev, "pwdn", GPIOD_OUT_LOW); in max96714_probe()
961 if (IS_ERR(max96714->pwdn_gpio)) in max96714_probe()
964 ret = max96714_configure_regulators(max96714); in max96714_probe()
970 max96714->pinctrl = devm_pinctrl_get(dev); in max96714_probe()
971 if (!IS_ERR(max96714->pinctrl)) { in max96714_probe()
972 max96714->pins_default = in max96714_probe()
973 pinctrl_lookup_state(max96714->pinctrl, in max96714_probe()
975 if (IS_ERR(max96714->pins_default)) in max96714_probe()
978 max96714->pins_sleep = in max96714_probe()
979 pinctrl_lookup_state(max96714->pinctrl, in max96714_probe()
981 if (IS_ERR(max96714->pins_sleep)) in max96714_probe()
985 mutex_init(&max96714->mutex); in max96714_probe()
987 sd = &max96714->subdev; in max96714_probe()
989 ret = max96714_initialize_controls(max96714); in max96714_probe()
993 ret = __max96714_power_on(max96714); in max96714_probe()
997 ret = max96714_check_sensor_id(max96714, client); in max96714_probe()
1006 max96714->pad.flags = MEDIA_PAD_FL_SOURCE; in max96714_probe()
1008 ret = media_entity_pads_init(&sd->entity, 1, &max96714->pad); in max96714_probe()
1014 if (strcmp(max96714->module_facing, "back") == 0) in max96714_probe()
1020 max96714->module_index, facing, in max96714_probe()
1039 __max96714_power_off(max96714); in max96714_probe()
1041 v4l2_ctrl_handler_free(&max96714->ctrl_handler); in max96714_probe()
1043 mutex_destroy(&max96714->mutex); in max96714_probe()
1051 struct max96714 *max96714 = to_max96714(sd); in max96714_remove() local
1057 v4l2_ctrl_handler_free(&max96714->ctrl_handler); in max96714_remove()
1058 mutex_destroy(&max96714->mutex); in max96714_remove()
1062 __max96714_power_off(max96714); in max96714_remove()