Lines Matching refs:sd
185 struct v4l2_subdev sd; member
200 static inline struct s5k4ecgx *to_s5k4ecgx(struct v4l2_subdev *sd) in to_s5k4ecgx() argument
202 return container_of(sd, struct s5k4ecgx, sd); in to_s5k4ecgx()
272 static int s5k4ecgx_read_fw_ver(struct v4l2_subdev *sd) in s5k4ecgx_read_fw_ver() argument
274 struct i2c_client *client = v4l2_get_subdevdata(sd); in s5k4ecgx_read_fw_ver()
280 v4l2_err(sd, "FW version check failed!\n"); in s5k4ecgx_read_fw_ver()
288 v4l2_info(sd, "chip found FW ver: 0x%x, HW rev: 0x%x\n", in s5k4ecgx_read_fw_ver()
293 static int s5k4ecgx_set_ahb_address(struct v4l2_subdev *sd) in s5k4ecgx_set_ahb_address() argument
295 struct i2c_client *client = v4l2_get_subdevdata(sd); in s5k4ecgx_set_ahb_address()
330 static int s5k4ecgx_load_firmware(struct v4l2_subdev *sd) in s5k4ecgx_load_firmware() argument
332 struct i2c_client *client = v4l2_get_subdevdata(sd); in s5k4ecgx_load_firmware()
339 err = request_firmware(&fw, S5K4ECGX_FIRMWARE, sd->v4l2_dev->dev); in s5k4ecgx_load_firmware()
341 v4l2_err(sd, "Failed to read firmware %s\n", S5K4ECGX_FIRMWARE); in s5k4ecgx_load_firmware()
346 v4l2_dbg(3, debug, sd, "FW: %s size %zu register sets %d\n", in s5k4ecgx_load_firmware()
357 v4l2_err(sd, "FW: invalid crc (%#x:%#x)\n", crc, crc_file); in s5k4ecgx_load_firmware()
432 struct i2c_client *client = v4l2_get_subdevdata(&priv->sd); in s5k4ecgx_set_output_framefmt()
446 static int s5k4ecgx_init_sensor(struct v4l2_subdev *sd) in s5k4ecgx_init_sensor() argument
450 ret = s5k4ecgx_set_ahb_address(sd); in s5k4ecgx_init_sensor()
456 ret = s5k4ecgx_load_firmware(sd); in s5k4ecgx_init_sensor()
458 v4l2_err(sd, "Failed to write initial settings\n"); in s5k4ecgx_init_sensor()
533 static int s5k4ecgx_enum_mbus_code(struct v4l2_subdev *sd, in s5k4ecgx_enum_mbus_code() argument
544 static int s5k4ecgx_get_fmt(struct v4l2_subdev *sd, struct v4l2_subdev_pad_config *cfg, in s5k4ecgx_get_fmt() argument
547 struct s5k4ecgx *priv = to_s5k4ecgx(sd); in s5k4ecgx_get_fmt()
552 mf = v4l2_subdev_get_try_format(sd, cfg, 0); in s5k4ecgx_get_fmt()
571 static const struct s5k4ecgx_pixfmt *s5k4ecgx_try_fmt(struct v4l2_subdev *sd, in s5k4ecgx_try_fmt() argument
584 static int s5k4ecgx_set_fmt(struct v4l2_subdev *sd, struct v4l2_subdev_pad_config *cfg, in s5k4ecgx_set_fmt() argument
587 struct s5k4ecgx *priv = to_s5k4ecgx(sd); in s5k4ecgx_set_fmt()
593 pf = s5k4ecgx_try_fmt(sd, &fmt->format); in s5k4ecgx_set_fmt()
600 mf = v4l2_subdev_get_try_format(sd, cfg, 0); in s5k4ecgx_set_fmt()
630 struct v4l2_subdev *sd = &container_of(ctrl->handler, struct s5k4ecgx, in s5k4ecgx_s_ctrl() local
631 handler)->sd; in s5k4ecgx_s_ctrl()
632 struct i2c_client *client = v4l2_get_subdevdata(sd); in s5k4ecgx_s_ctrl()
633 struct s5k4ecgx *priv = to_s5k4ecgx(sd); in s5k4ecgx_s_ctrl()
637 v4l2_dbg(1, debug, sd, "ctrl: 0x%x, value: %d\n", ctrl->id, ctrl->val); in s5k4ecgx_s_ctrl()
662 v4l2_err(sd, "Failed to write s_ctrl err %d\n", err); in s5k4ecgx_s_ctrl()
674 static int s5k4ecgx_registered(struct v4l2_subdev *sd) in s5k4ecgx_registered() argument
677 struct s5k4ecgx *priv = to_s5k4ecgx(sd); in s5k4ecgx_registered()
682 ret = s5k4ecgx_read_fw_ver(sd); in s5k4ecgx_registered()
693 static int s5k4ecgx_open(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh) in s5k4ecgx_open() argument
695 struct v4l2_mbus_framefmt *mf = v4l2_subdev_get_try_format(sd, fh->pad, 0); in s5k4ecgx_open()
711 static int s5k4ecgx_s_power(struct v4l2_subdev *sd, int on) in s5k4ecgx_s_power() argument
713 struct s5k4ecgx *priv = to_s5k4ecgx(sd); in s5k4ecgx_s_power()
716 v4l2_dbg(1, debug, sd, "Switching %s\n", on ? "on" : "off"); in s5k4ecgx_s_power()
724 ret = s5k4ecgx_init_sensor(sd); in s5k4ecgx_s_power()
736 static int s5k4ecgx_log_status(struct v4l2_subdev *sd) in s5k4ecgx_log_status() argument
738 v4l2_ctrl_handler_log_status(sd->ctrl_handler, sd->name); in s5k4ecgx_log_status()
750 struct i2c_client *client = v4l2_get_subdevdata(&priv->sd); in __s5k4ecgx_s_params()
797 struct i2c_client *client = v4l2_get_subdevdata(&priv->sd); in __s5k4ecgx_s_stream()
816 static int s5k4ecgx_s_stream(struct v4l2_subdev *sd, int on) in s5k4ecgx_s_stream() argument
818 struct s5k4ecgx *priv = to_s5k4ecgx(sd); in s5k4ecgx_s_stream()
821 v4l2_dbg(1, debug, sd, "Turn streaming %s\n", on ? "on" : "off"); in s5k4ecgx_s_stream()
929 priv->sd.ctrl_handler = hdl; in s5k4ecgx_init_v4l2_ctrls()
938 struct v4l2_subdev *sd; in s5k4ecgx_probe() local
954 sd = &priv->sd; in s5k4ecgx_probe()
956 v4l2_i2c_subdev_init(sd, client, &s5k4ecgx_ops); in s5k4ecgx_probe()
957 strlcpy(sd->name, S5K4ECGX_DRIVER_NAME, sizeof(sd->name)); in s5k4ecgx_probe()
959 sd->internal_ops = &s5k4ecgx_subdev_internal_ops; in s5k4ecgx_probe()
961 sd->flags |= V4L2_SUBDEV_FL_HAS_DEVNODE; in s5k4ecgx_probe()
964 sd->entity.type = MEDIA_ENT_T_V4L2_SUBDEV_SENSOR; in s5k4ecgx_probe()
965 ret = media_entity_init(&sd->entity, 1, &priv->pad, 0); in s5k4ecgx_probe()
995 media_entity_cleanup(&priv->sd.entity); in s5k4ecgx_probe()
1002 struct v4l2_subdev *sd = i2c_get_clientdata(client); in s5k4ecgx_remove() local
1003 struct s5k4ecgx *priv = to_s5k4ecgx(sd); in s5k4ecgx_remove()
1007 v4l2_device_unregister_subdev(sd); in s5k4ecgx_remove()
1009 media_entity_cleanup(&sd->entity); in s5k4ecgx_remove()