Lines Matching refs:sd

89 static int tvp514x_s_stream(struct v4l2_subdev *sd, int enable);
107 struct v4l2_subdev sd; member
270 static inline struct tvp514x_decoder *to_decoder(struct v4l2_subdev *sd) in to_decoder() argument
272 return container_of(sd, struct tvp514x_decoder, sd); in to_decoder()
277 return &container_of(ctrl->handler, struct tvp514x_decoder, hdl)->sd; in to_sd()
288 static int tvp514x_read_reg(struct v4l2_subdev *sd, u8 reg) in tvp514x_read_reg() argument
291 struct i2c_client *client = v4l2_get_subdevdata(sd); in tvp514x_read_reg()
298 v4l2_warn(sd, "Read: retry ... %d\n", retry); in tvp514x_read_reg()
313 static void dump_reg(struct v4l2_subdev *sd, u8 reg) in dump_reg() argument
317 val = tvp514x_read_reg(sd, reg); in dump_reg()
318 v4l2_info(sd, "Reg(0x%.2X): 0x%.2X\n", reg, val); in dump_reg()
330 static int tvp514x_write_reg(struct v4l2_subdev *sd, u8 reg, u8 val) in tvp514x_write_reg() argument
333 struct i2c_client *client = v4l2_get_subdevdata(sd); in tvp514x_write_reg()
340 v4l2_warn(sd, "Write: retry ... %d\n", retry); in tvp514x_write_reg()
362 static int tvp514x_write_regs(struct v4l2_subdev *sd, in tvp514x_write_regs() argument
377 err = tvp514x_write_reg(sd, next->reg, (u8) next->val); in tvp514x_write_regs()
379 v4l2_err(sd, "Write failed. Err[%d]\n", err); in tvp514x_write_regs()
393 static enum tvp514x_std tvp514x_query_current_std(struct v4l2_subdev *sd) in tvp514x_query_current_std() argument
397 std = tvp514x_read_reg(sd, REG_VIDEO_STD); in tvp514x_query_current_std()
400 std_status = tvp514x_read_reg(sd, REG_VIDEO_STD_STATUS); in tvp514x_query_current_std()
420 static void tvp514x_reg_dump(struct v4l2_subdev *sd) in tvp514x_reg_dump() argument
422 dump_reg(sd, REG_INPUT_SEL); in tvp514x_reg_dump()
423 dump_reg(sd, REG_AFE_GAIN_CTRL); in tvp514x_reg_dump()
424 dump_reg(sd, REG_VIDEO_STD); in tvp514x_reg_dump()
425 dump_reg(sd, REG_OPERATION_MODE); in tvp514x_reg_dump()
426 dump_reg(sd, REG_COLOR_KILLER); in tvp514x_reg_dump()
427 dump_reg(sd, REG_LUMA_CONTROL1); in tvp514x_reg_dump()
428 dump_reg(sd, REG_LUMA_CONTROL2); in tvp514x_reg_dump()
429 dump_reg(sd, REG_LUMA_CONTROL3); in tvp514x_reg_dump()
430 dump_reg(sd, REG_BRIGHTNESS); in tvp514x_reg_dump()
431 dump_reg(sd, REG_CONTRAST); in tvp514x_reg_dump()
432 dump_reg(sd, REG_SATURATION); in tvp514x_reg_dump()
433 dump_reg(sd, REG_HUE); in tvp514x_reg_dump()
434 dump_reg(sd, REG_CHROMA_CONTROL1); in tvp514x_reg_dump()
435 dump_reg(sd, REG_CHROMA_CONTROL2); in tvp514x_reg_dump()
436 dump_reg(sd, REG_COMP_PR_SATURATION); in tvp514x_reg_dump()
437 dump_reg(sd, REG_COMP_Y_CONTRAST); in tvp514x_reg_dump()
438 dump_reg(sd, REG_COMP_PB_SATURATION); in tvp514x_reg_dump()
439 dump_reg(sd, REG_COMP_Y_BRIGHTNESS); in tvp514x_reg_dump()
440 dump_reg(sd, REG_AVID_START_PIXEL_LSB); in tvp514x_reg_dump()
441 dump_reg(sd, REG_AVID_START_PIXEL_MSB); in tvp514x_reg_dump()
442 dump_reg(sd, REG_AVID_STOP_PIXEL_LSB); in tvp514x_reg_dump()
443 dump_reg(sd, REG_AVID_STOP_PIXEL_MSB); in tvp514x_reg_dump()
444 dump_reg(sd, REG_HSYNC_START_PIXEL_LSB); in tvp514x_reg_dump()
445 dump_reg(sd, REG_HSYNC_START_PIXEL_MSB); in tvp514x_reg_dump()
446 dump_reg(sd, REG_HSYNC_STOP_PIXEL_LSB); in tvp514x_reg_dump()
447 dump_reg(sd, REG_HSYNC_STOP_PIXEL_MSB); in tvp514x_reg_dump()
448 dump_reg(sd, REG_VSYNC_START_LINE_LSB); in tvp514x_reg_dump()
449 dump_reg(sd, REG_VSYNC_START_LINE_MSB); in tvp514x_reg_dump()
450 dump_reg(sd, REG_VSYNC_STOP_LINE_LSB); in tvp514x_reg_dump()
451 dump_reg(sd, REG_VSYNC_STOP_LINE_MSB); in tvp514x_reg_dump()
452 dump_reg(sd, REG_VBLK_START_LINE_LSB); in tvp514x_reg_dump()
453 dump_reg(sd, REG_VBLK_START_LINE_MSB); in tvp514x_reg_dump()
454 dump_reg(sd, REG_VBLK_STOP_LINE_LSB); in tvp514x_reg_dump()
455 dump_reg(sd, REG_VBLK_STOP_LINE_MSB); in tvp514x_reg_dump()
456 dump_reg(sd, REG_SYNC_CONTROL); in tvp514x_reg_dump()
457 dump_reg(sd, REG_OUTPUT_FORMATTER1); in tvp514x_reg_dump()
458 dump_reg(sd, REG_OUTPUT_FORMATTER2); in tvp514x_reg_dump()
459 dump_reg(sd, REG_OUTPUT_FORMATTER3); in tvp514x_reg_dump()
460 dump_reg(sd, REG_OUTPUT_FORMATTER4); in tvp514x_reg_dump()
461 dump_reg(sd, REG_OUTPUT_FORMATTER5); in tvp514x_reg_dump()
462 dump_reg(sd, REG_OUTPUT_FORMATTER6); in tvp514x_reg_dump()
463 dump_reg(sd, REG_CLEAR_LOST_LOCK); in tvp514x_reg_dump()
473 static int tvp514x_configure(struct v4l2_subdev *sd, in tvp514x_configure() argument
480 tvp514x_write_regs(sd, decoder->tvp514x_regs); in tvp514x_configure()
485 tvp514x_reg_dump(sd); in tvp514x_configure()
501 static int tvp514x_detect(struct v4l2_subdev *sd, in tvp514x_detect() argument
505 struct i2c_client *client = v4l2_get_subdevdata(sd); in tvp514x_detect()
507 chip_id_msb = tvp514x_read_reg(sd, REG_CHIP_ID_MSB); in tvp514x_detect()
508 chip_id_lsb = tvp514x_read_reg(sd, REG_CHIP_ID_LSB); in tvp514x_detect()
509 rom_ver = tvp514x_read_reg(sd, REG_ROM_VERSION); in tvp514x_detect()
511 v4l2_dbg(1, debug, sd, in tvp514x_detect()
520 v4l2_err(sd, "chip id mismatch msb:0x%x lsb:0x%x\n", in tvp514x_detect()
527 v4l2_info(sd, "%s (Version - 0x%.2x) found at 0x%x (%s)\n", in tvp514x_detect()
541 static int tvp514x_querystd(struct v4l2_subdev *sd, v4l2_std_id *std_id) in tvp514x_querystd() argument
543 struct tvp514x_decoder *decoder = to_decoder(sd); in tvp514x_querystd()
553 tvp514x_s_stream(sd, 1); in tvp514x_querystd()
558 current_std = tvp514x_query_current_std(sd); in tvp514x_querystd()
602 sync_lock_status = tvp514x_read_reg(sd, REG_STATUS1); in tvp514x_querystd()
610 v4l2_dbg(1, debug, sd, "Current STD: %s\n", in tvp514x_querystd()
623 static int tvp514x_s_std(struct v4l2_subdev *sd, v4l2_std_id std_id) in tvp514x_s_std() argument
625 struct tvp514x_decoder *decoder = to_decoder(sd); in tvp514x_s_std()
635 err = tvp514x_write_reg(sd, REG_VIDEO_STD, in tvp514x_s_std()
644 v4l2_dbg(1, debug, sd, "Standard set to: %s\n", in tvp514x_s_std()
660 static int tvp514x_s_routing(struct v4l2_subdev *sd, in tvp514x_s_routing() argument
663 struct tvp514x_decoder *decoder = to_decoder(sd); in tvp514x_s_routing()
676 err = tvp514x_write_reg(sd, REG_INPUT_SEL, input_sel); in tvp514x_s_routing()
680 output_sel |= tvp514x_read_reg(sd, in tvp514x_s_routing()
682 err = tvp514x_write_reg(sd, REG_OUTPUT_FORMATTER1, in tvp514x_s_routing()
692 v4l2_dbg(1, debug, sd, "Input set to: %d\n", input_sel); in tvp514x_s_routing()
706 struct v4l2_subdev *sd = to_sd(ctrl); in tvp514x_s_ctrl() local
707 struct tvp514x_decoder *decoder = to_decoder(sd); in tvp514x_s_ctrl()
714 err = tvp514x_write_reg(sd, REG_BRIGHTNESS, value); in tvp514x_s_ctrl()
719 err = tvp514x_write_reg(sd, REG_CONTRAST, value); in tvp514x_s_ctrl()
724 err = tvp514x_write_reg(sd, REG_SATURATION, value); in tvp514x_s_ctrl()
733 err = tvp514x_write_reg(sd, REG_HUE, value); in tvp514x_s_ctrl()
738 err = tvp514x_write_reg(sd, REG_AFE_GAIN_CTRL, value ? 0x0f : 0x0c); in tvp514x_s_ctrl()
744 v4l2_dbg(1, debug, sd, "Set Control: ID - %d - %d\n", in tvp514x_s_ctrl()
757 tvp514x_g_parm(struct v4l2_subdev *sd, struct v4l2_streamparm *a) in tvp514x_g_parm() argument
759 struct tvp514x_decoder *decoder = to_decoder(sd); in tvp514x_g_parm()
790 tvp514x_s_parm(struct v4l2_subdev *sd, struct v4l2_streamparm *a) in tvp514x_s_parm() argument
792 struct tvp514x_decoder *decoder = to_decoder(sd); in tvp514x_s_parm()
821 static int tvp514x_s_stream(struct v4l2_subdev *sd, int enable) in tvp514x_s_stream() argument
824 struct tvp514x_decoder *decoder = to_decoder(sd); in tvp514x_s_stream()
833 err = tvp514x_write_reg(sd, REG_OPERATION_MODE, 0x01); in tvp514x_s_stream()
835 v4l2_err(sd, "Unable to turn off decoder\n"); in tvp514x_s_stream()
844 err = tvp514x_write_regs(sd, decoder->int_seq); in tvp514x_s_stream()
846 v4l2_err(sd, "Unable to turn on decoder\n"); in tvp514x_s_stream()
850 err = tvp514x_detect(sd, decoder); in tvp514x_s_stream()
852 v4l2_err(sd, "Unable to detect decoder\n"); in tvp514x_s_stream()
855 err = tvp514x_configure(sd, decoder); in tvp514x_s_stream()
857 v4l2_err(sd, "Unable to configure decoder\n"); in tvp514x_s_stream()
883 static int tvp514x_enum_mbus_code(struct v4l2_subdev *sd, in tvp514x_enum_mbus_code() argument
910 static int tvp514x_get_pad_format(struct v4l2_subdev *sd, in tvp514x_get_pad_format() argument
914 struct tvp514x_decoder *decoder = to_decoder(sd); in tvp514x_get_pad_format()
942 static int tvp514x_set_pad_format(struct v4l2_subdev *sd, in tvp514x_set_pad_format() argument
946 struct tvp514x_decoder *decoder = to_decoder(sd); in tvp514x_set_pad_format()
1050 struct v4l2_subdev *sd; in tvp514x_probe() local
1092 sd = &decoder->sd; in tvp514x_probe()
1093 v4l2_i2c_subdev_init(sd, client, &tvp514x_ops); in tvp514x_probe()
1097 decoder->sd.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE; in tvp514x_probe()
1098 decoder->sd.entity.flags |= MEDIA_ENT_T_V4L2_SUBDEV_DECODER; in tvp514x_probe()
1100 ret = media_entity_init(&decoder->sd.entity, 1, &decoder->pad, 0); in tvp514x_probe()
1102 v4l2_err(sd, "%s decoder driver failed to register !!\n", in tvp514x_probe()
1103 sd->name); in tvp514x_probe()
1118 sd->ctrl_handler = &decoder->hdl; in tvp514x_probe()
1125 ret = v4l2_async_register_subdev(&decoder->sd); in tvp514x_probe()
1127 v4l2_info(sd, "%s decoder driver registered !!\n", sd->name); in tvp514x_probe()
1133 media_entity_cleanup(&decoder->sd.entity); in tvp514x_probe()
1148 struct v4l2_subdev *sd = i2c_get_clientdata(client); in tvp514x_remove() local
1149 struct tvp514x_decoder *decoder = to_decoder(sd); in tvp514x_remove()
1151 v4l2_async_unregister_subdev(&decoder->sd); in tvp514x_remove()
1153 media_entity_cleanup(&decoder->sd.entity); in tvp514x_remove()