Lines Matching refs:sd

420 	struct v4l2_subdev sd;  member
437 static inline struct tvp7002 *to_tvp7002(struct v4l2_subdev *sd) in to_tvp7002() argument
439 return container_of(sd, struct tvp7002, sd); in to_tvp7002()
444 return &container_of(ctrl->handler, struct tvp7002, hdl)->sd; in to_sd()
455 static int tvp7002_read(struct v4l2_subdev *sd, u8 addr, u8 *dst) in tvp7002_read() argument
457 struct i2c_client *c = v4l2_get_subdevdata(sd); in tvp7002_read()
471 v4l2_err(sd, "TVP7002 read error %d\n", error); in tvp7002_read()
485 static inline void tvp7002_read_err(struct v4l2_subdev *sd, u8 reg, in tvp7002_read_err() argument
489 *err = tvp7002_read(sd, reg, dst); in tvp7002_read_err()
501 static int tvp7002_write(struct v4l2_subdev *sd, u8 addr, u8 value) in tvp7002_write() argument
507 c = v4l2_get_subdevdata(sd); in tvp7002_write()
515 v4l2_warn(sd, "Write: retry ... %d\n", retry); in tvp7002_write()
518 v4l2_err(sd, "TVP7002 write error %d\n", error); in tvp7002_write()
532 static inline void tvp7002_write_err(struct v4l2_subdev *sd, u8 reg, in tvp7002_write_err() argument
536 *err = tvp7002_write(sd, reg, val); in tvp7002_write_err()
547 static int tvp7002_write_inittab(struct v4l2_subdev *sd, in tvp7002_write_inittab() argument
555 tvp7002_write_err(sd, regs->reg, regs->value, &error); in tvp7002_write_inittab()
562 static int tvp7002_s_dv_timings(struct v4l2_subdev *sd, in tvp7002_s_dv_timings() argument
565 struct tvp7002 *device = to_tvp7002(sd); in tvp7002_s_dv_timings()
576 return tvp7002_write_inittab(sd, tvp7002_timings[i].p_settings); in tvp7002_s_dv_timings()
582 static int tvp7002_g_dv_timings(struct v4l2_subdev *sd, in tvp7002_g_dv_timings() argument
585 struct tvp7002 *device = to_tvp7002(sd); in tvp7002_g_dv_timings()
600 struct v4l2_subdev *sd = to_sd(ctrl); in tvp7002_s_ctrl() local
605 tvp7002_write_err(sd, TVP7002_R_FINE_GAIN, ctrl->val, &error); in tvp7002_s_ctrl()
606 tvp7002_write_err(sd, TVP7002_G_FINE_GAIN, ctrl->val, &error); in tvp7002_s_ctrl()
607 tvp7002_write_err(sd, TVP7002_B_FINE_GAIN, ctrl->val, &error); in tvp7002_s_ctrl()
621 static int tvp7002_query_dv(struct v4l2_subdev *sd, int *index) in tvp7002_query_dv() argument
637 tvp7002_read_err(sd, TVP7002_L_FRAME_STAT_LSBS, &lpf_lsb, &error); in tvp7002_query_dv()
638 tvp7002_read_err(sd, TVP7002_L_FRAME_STAT_MSBS, &lpf_msb, &error); in tvp7002_query_dv()
643 tvp7002_read_err(sd, TVP7002_CLK_L_STAT_LSBS, &cpl_lsb, &error); in tvp7002_query_dv()
644 tvp7002_read_err(sd, TVP7002_CLK_L_STAT_MSBS, &cpl_msb, &error); in tvp7002_query_dv()
665 v4l2_dbg(1, debug, sd, "detection failed: lpf = %x, cpl = %x\n", in tvp7002_query_dv()
671 v4l2_dbg(1, debug, sd, "detected timings: %d\n", *index); in tvp7002_query_dv()
675 static int tvp7002_query_dv_timings(struct v4l2_subdev *sd, in tvp7002_query_dv_timings() argument
679 int err = tvp7002_query_dv(sd, &index); in tvp7002_query_dv_timings()
697 static int tvp7002_g_register(struct v4l2_subdev *sd, in tvp7002_g_register() argument
703 ret = tvp7002_read(sd, reg->reg & 0xff, &val); in tvp7002_g_register()
717 static int tvp7002_s_register(struct v4l2_subdev *sd, in tvp7002_s_register() argument
720 return tvp7002_write(sd, reg->reg & 0xff, reg->val & 0xff); in tvp7002_s_register()
731 static int tvp7002_s_stream(struct v4l2_subdev *sd, int enable) in tvp7002_s_stream() argument
733 struct tvp7002 *device = to_tvp7002(sd); in tvp7002_s_stream()
740 error = tvp7002_write(sd, TVP7002_MISC_CTL_2, enable ? 0x00 : 0x03); in tvp7002_s_stream()
742 v4l2_dbg(1, debug, sd, "Fail to set streaming\n"); in tvp7002_s_stream()
757 static int tvp7002_log_status(struct v4l2_subdev *sd) in tvp7002_log_status() argument
759 struct tvp7002 *device = to_tvp7002(sd); in tvp7002_log_status()
764 tvp7002_query_dv(sd, &detected); in tvp7002_log_status()
767 v4l2_info(sd, "Selected DV Timings: %ux%u\n", bt->width, bt->height); in tvp7002_log_status()
769 v4l2_info(sd, "Detected DV Timings: None\n"); in tvp7002_log_status()
772 v4l2_info(sd, "Detected DV Timings: %ux%u\n", in tvp7002_log_status()
775 v4l2_info(sd, "Streaming enabled: %s\n", in tvp7002_log_status()
779 v4l2_ctrl_handler_log_status(&device->hdl, sd->name); in tvp7002_log_status()
784 static int tvp7002_enum_dv_timings(struct v4l2_subdev *sd, in tvp7002_enum_dv_timings() argument
811 tvp7002_enum_mbus_code(struct v4l2_subdev *sd, struct v4l2_subdev_pad_config *cfg, in tvp7002_enum_mbus_code() argument
832 tvp7002_get_pad_format(struct v4l2_subdev *sd, struct v4l2_subdev_pad_config *cfg, in tvp7002_get_pad_format() argument
835 struct tvp7002 *tvp7002 = to_tvp7002(sd); in tvp7002_get_pad_format()
855 tvp7002_set_pad_format(struct v4l2_subdev *sd, struct v4l2_subdev_pad_config *cfg, in tvp7002_set_pad_format() argument
858 return tvp7002_get_pad_format(sd, cfg, fmt); in tvp7002_set_pad_format()
947 struct v4l2_subdev *sd; in tvp7002_probe() local
970 sd = &device->sd; in tvp7002_probe()
975 v4l2_i2c_subdev_init(sd, c, &tvp7002_ops); in tvp7002_probe()
979 error = tvp7002_read(sd, TVP7002_CHIP_REV, &revision); in tvp7002_probe()
984 v4l2_info(sd, "Rev. %02x detected.\n", revision); in tvp7002_probe()
986 v4l2_info(sd, "Unknown revision detected.\n"); in tvp7002_probe()
989 error = tvp7002_write_inittab(sd, tvp7002_init_default); in tvp7002_probe()
997 error = tvp7002_write(sd, TVP7002_SYNC_CTL_1, polarity_a); in tvp7002_probe()
1004 error = tvp7002_write(sd, TVP7002_MISC_CTL_3, polarity_b); in tvp7002_probe()
1010 error = tvp7002_s_dv_timings(sd, &timings); in tvp7002_probe()
1014 device->sd.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE; in tvp7002_probe()
1015 device->sd.entity.flags |= MEDIA_ENT_T_V4L2_SUBDEV_DECODER; in tvp7002_probe()
1017 error = media_entity_init(&device->sd.entity, 1, &device->pad, 0); in tvp7002_probe()
1025 sd->ctrl_handler = &device->hdl; in tvp7002_probe()
1032 error = v4l2_async_register_subdev(&device->sd); in tvp7002_probe()
1041 media_entity_cleanup(&device->sd.entity); in tvp7002_probe()
1055 struct v4l2_subdev *sd = i2c_get_clientdata(c); in tvp7002_remove() local
1056 struct tvp7002 *device = to_tvp7002(sd); in tvp7002_remove()
1058 v4l2_dbg(1, debug, sd, "Removing tvp7002 adapter" in tvp7002_remove()
1060 v4l2_async_unregister_subdev(&device->sd); in tvp7002_remove()
1062 media_entity_cleanup(&device->sd.entity); in tvp7002_remove()