Lines Matching refs:sd
259 struct v4l2_subdev sd; member
279 static inline struct saa7127_state *to_state(struct v4l2_subdev *sd) in to_state() argument
281 return container_of(sd, struct saa7127_state, sd); in to_state()
315 static int saa7127_read(struct v4l2_subdev *sd, u8 reg) in saa7127_read() argument
317 struct i2c_client *client = v4l2_get_subdevdata(sd); in saa7127_read()
324 static int saa7127_write(struct v4l2_subdev *sd, u8 reg, u8 val) in saa7127_write() argument
326 struct i2c_client *client = v4l2_get_subdevdata(sd); in saa7127_write()
333 v4l2_err(sd, "I2C Write Problem\n"); in saa7127_write()
339 static int saa7127_write_inittab(struct v4l2_subdev *sd, in saa7127_write_inittab() argument
343 saa7127_write(sd, regs->reg, regs->value); in saa7127_write_inittab()
351 static int saa7127_set_vps(struct v4l2_subdev *sd, const struct v4l2_sliced_vbi_data *data) in saa7127_set_vps() argument
353 struct saa7127_state *state = to_state(sd); in saa7127_set_vps()
359 v4l2_dbg(1, debug, sd, "Turn VPS Signal %s\n", enable ? "on" : "off"); in saa7127_set_vps()
360 saa7127_write(sd, 0x54, enable << 7); in saa7127_set_vps()
371 v4l2_dbg(1, debug, sd, "Set VPS data %*ph\n", 5, state->vps_data); in saa7127_set_vps()
372 saa7127_write(sd, 0x55, state->vps_data[0]); in saa7127_set_vps()
373 saa7127_write(sd, 0x56, state->vps_data[1]); in saa7127_set_vps()
374 saa7127_write(sd, 0x57, state->vps_data[2]); in saa7127_set_vps()
375 saa7127_write(sd, 0x58, state->vps_data[3]); in saa7127_set_vps()
376 saa7127_write(sd, 0x59, state->vps_data[4]); in saa7127_set_vps()
382 static int saa7127_set_cc(struct v4l2_subdev *sd, const struct v4l2_sliced_vbi_data *data) in saa7127_set_cc() argument
384 struct saa7127_state *state = to_state(sd); in saa7127_set_cc()
391 v4l2_dbg(1, debug, sd, in saa7127_set_cc()
393 saa7127_write(sd, SAA7127_REG_CLOSED_CAPTION, in saa7127_set_cc()
400 v4l2_dbg(2, debug, sd, "CC data: %04x\n", cc); in saa7127_set_cc()
401 saa7127_write(sd, SAA7127_REG_LINE_21_ODD_0, cc & 0xff); in saa7127_set_cc()
402 saa7127_write(sd, SAA7127_REG_LINE_21_ODD_1, cc >> 8); in saa7127_set_cc()
409 static int saa7127_set_xds(struct v4l2_subdev *sd, const struct v4l2_sliced_vbi_data *data) in saa7127_set_xds() argument
411 struct saa7127_state *state = to_state(sd); in saa7127_set_xds()
418 v4l2_dbg(1, debug, sd, "Turn XDS %s\n", enable ? "on" : "off"); in saa7127_set_xds()
419 saa7127_write(sd, SAA7127_REG_CLOSED_CAPTION, in saa7127_set_xds()
426 v4l2_dbg(2, debug, sd, "XDS data: %04x\n", xds); in saa7127_set_xds()
427 saa7127_write(sd, SAA7127_REG_LINE_21_EVEN_0, xds & 0xff); in saa7127_set_xds()
428 saa7127_write(sd, SAA7127_REG_LINE_21_EVEN_1, xds >> 8); in saa7127_set_xds()
435 static int saa7127_set_wss(struct v4l2_subdev *sd, const struct v4l2_sliced_vbi_data *data) in saa7127_set_wss() argument
437 struct saa7127_state *state = to_state(sd); in saa7127_set_wss()
443 v4l2_dbg(1, debug, sd, "Turn WSS %s\n", enable ? "on" : "off"); in saa7127_set_wss()
444 saa7127_write(sd, 0x27, enable << 7); in saa7127_set_wss()
450 saa7127_write(sd, 0x26, data->data[0]); in saa7127_set_wss()
451 saa7127_write(sd, 0x27, 0x80 | (data->data[1] & 0x3f)); in saa7127_set_wss()
452 v4l2_dbg(1, debug, sd, in saa7127_set_wss()
460 static int saa7127_set_video_enable(struct v4l2_subdev *sd, int enable) in saa7127_set_video_enable() argument
462 struct saa7127_state *state = to_state(sd); in saa7127_set_video_enable()
465 v4l2_dbg(1, debug, sd, "Enable Video Output\n"); in saa7127_set_video_enable()
466 saa7127_write(sd, 0x2d, state->reg_2d); in saa7127_set_video_enable()
467 saa7127_write(sd, 0x61, state->reg_61); in saa7127_set_video_enable()
469 v4l2_dbg(1, debug, sd, "Disable Video Output\n"); in saa7127_set_video_enable()
470 saa7127_write(sd, 0x2d, (state->reg_2d & 0xf0)); in saa7127_set_video_enable()
471 saa7127_write(sd, 0x61, (state->reg_61 | 0xc0)); in saa7127_set_video_enable()
479 static int saa7127_set_std(struct v4l2_subdev *sd, v4l2_std_id std) in saa7127_set_std() argument
481 struct saa7127_state *state = to_state(sd); in saa7127_set_std()
485 v4l2_dbg(1, debug, sd, "Selecting 60 Hz video Standard\n"); in saa7127_set_std()
494 v4l2_dbg(1, debug, sd, in saa7127_set_std()
500 v4l2_dbg(1, debug, sd, "Selecting 50 Hz PAL video Standard\n"); in saa7127_set_std()
506 saa7127_write_inittab(sd, inittab); in saa7127_set_std()
513 static int saa7127_set_output_type(struct v4l2_subdev *sd, int output) in saa7127_set_output_type() argument
515 struct saa7127_state *state = to_state(sd); in saa7127_set_output_type()
560 v4l2_dbg(1, debug, sd, in saa7127_set_output_type()
564 saa7127_write(sd, 0x2d, state->reg_2d); in saa7127_set_output_type()
565 saa7127_write(sd, 0x3a, state->reg_3a | state->reg_3a_cb); in saa7127_set_output_type()
572 static int saa7127_set_input_type(struct v4l2_subdev *sd, int input) in saa7127_set_input_type() argument
574 struct saa7127_state *state = to_state(sd); in saa7127_set_input_type()
578 v4l2_dbg(1, debug, sd, "Selecting Normal Encoder Input\n"); in saa7127_set_input_type()
583 v4l2_dbg(1, debug, sd, "Selecting Color Bar generator\n"); in saa7127_set_input_type()
590 saa7127_write(sd, 0x3a, state->reg_3a | state->reg_3a_cb); in saa7127_set_input_type()
597 static int saa7127_s_std_output(struct v4l2_subdev *sd, v4l2_std_id std) in saa7127_s_std_output() argument
599 struct saa7127_state *state = to_state(sd); in saa7127_s_std_output()
603 return saa7127_set_std(sd, std); in saa7127_s_std_output()
606 static int saa7127_s_routing(struct v4l2_subdev *sd, in saa7127_s_routing() argument
609 struct saa7127_state *state = to_state(sd); in saa7127_s_routing()
613 rc = saa7127_set_input_type(sd, input); in saa7127_s_routing()
615 rc = saa7127_set_output_type(sd, output); in saa7127_s_routing()
619 static int saa7127_s_stream(struct v4l2_subdev *sd, int enable) in saa7127_s_stream() argument
621 struct saa7127_state *state = to_state(sd); in saa7127_s_stream()
625 return saa7127_set_video_enable(sd, enable); in saa7127_s_stream()
628 static int saa7127_g_sliced_fmt(struct v4l2_subdev *sd, struct v4l2_sliced_vbi_format *fmt) in saa7127_g_sliced_fmt() argument
630 struct saa7127_state *state = to_state(sd); in saa7127_g_sliced_fmt()
648 static int saa7127_s_vbi_data(struct v4l2_subdev *sd, const struct v4l2_sliced_vbi_data *data) in saa7127_s_vbi_data() argument
652 return saa7127_set_wss(sd, data); in saa7127_s_vbi_data()
654 return saa7127_set_vps(sd, data); in saa7127_s_vbi_data()
657 return saa7127_set_cc(sd, data); in saa7127_s_vbi_data()
658 return saa7127_set_xds(sd, data); in saa7127_s_vbi_data()
666 static int saa7127_g_register(struct v4l2_subdev *sd, struct v4l2_dbg_register *reg) in saa7127_g_register() argument
668 reg->val = saa7127_read(sd, reg->reg & 0xff); in saa7127_g_register()
673 static int saa7127_s_register(struct v4l2_subdev *sd, const struct v4l2_dbg_register *reg) in saa7127_s_register() argument
675 saa7127_write(sd, reg->reg & 0xff, reg->val & 0xff); in saa7127_s_register()
680 static int saa7127_log_status(struct v4l2_subdev *sd) in saa7127_log_status() argument
682 struct saa7127_state *state = to_state(sd); in saa7127_log_status()
684 v4l2_info(sd, "Standard: %s\n", (state->std & V4L2_STD_525_60) ? "60 Hz" : "50 Hz"); in saa7127_log_status()
685 v4l2_info(sd, "Input: %s\n", state->input_type ? "color bars" : "normal"); in saa7127_log_status()
686 v4l2_info(sd, "Output: %s\n", state->video_enable ? in saa7127_log_status()
688 v4l2_info(sd, "WSS: %s\n", state->wss_enable ? in saa7127_log_status()
690 v4l2_info(sd, "VPS: %s\n", state->vps_enable ? "enabled" : "disabled"); in saa7127_log_status()
691 v4l2_info(sd, "CC: %s\n", state->cc_enable ? "enabled" : "disabled"); in saa7127_log_status()
728 struct v4l2_subdev *sd; in saa7127_probe() local
742 sd = &state->sd; in saa7127_probe()
743 v4l2_i2c_subdev_init(sd, client, &saa7127_ops); in saa7127_probe()
750 if ((saa7127_read(sd, 0) & 0xe4) != 0 || in saa7127_probe()
751 (saa7127_read(sd, 0x29) & 0x3f) != 0x1d) { in saa7127_probe()
752 v4l2_dbg(1, debug, sd, "saa7127 not found\n"); in saa7127_probe()
762 read_result = saa7127_read(sd, SAA7129_REG_FADE_KEY_COL2); in saa7127_probe()
763 saa7127_write(sd, SAA7129_REG_FADE_KEY_COL2, 0xaa); in saa7127_probe()
764 if (saa7127_read(sd, SAA7129_REG_FADE_KEY_COL2) == 0xaa) { in saa7127_probe()
765 saa7127_write(sd, SAA7129_REG_FADE_KEY_COL2, in saa7127_probe()
775 v4l2_info(sd, "%s found @ 0x%x (%s)\n", client->name, in saa7127_probe()
778 v4l2_dbg(1, debug, sd, "Configuring encoder\n"); in saa7127_probe()
779 saa7127_write_inittab(sd, saa7127_init_config_common); in saa7127_probe()
780 saa7127_set_std(sd, V4L2_STD_NTSC); in saa7127_probe()
781 saa7127_set_output_type(sd, SAA7127_OUTPUT_TYPE_BOTH); in saa7127_probe()
782 saa7127_set_vps(sd, &vbi); in saa7127_probe()
783 saa7127_set_wss(sd, &vbi); in saa7127_probe()
784 saa7127_set_cc(sd, &vbi); in saa7127_probe()
785 saa7127_set_xds(sd, &vbi); in saa7127_probe()
789 saa7127_set_input_type(sd, SAA7127_INPUT_TYPE_TEST_IMAGE); in saa7127_probe()
791 saa7127_set_input_type(sd, SAA7127_INPUT_TYPE_NORMAL); in saa7127_probe()
792 saa7127_set_video_enable(sd, 1); in saa7127_probe()
795 saa7127_write_inittab(sd, saa7129_init_config_extra); in saa7127_probe()
803 struct v4l2_subdev *sd = i2c_get_clientdata(client); in saa7127_remove() local
805 v4l2_device_unregister_subdev(sd); in saa7127_remove()
807 saa7127_set_video_enable(sd, 0); in saa7127_remove()