Lines Matching refs:sd
234 struct v4l2_subdev sd; member
254 static inline struct saa7127_state *to_state(struct v4l2_subdev *sd) in to_state() argument
256 return container_of(sd, struct saa7127_state, sd); in to_state()
290 static int saa7127_read(struct v4l2_subdev *sd, u8 reg) in saa7127_read() argument
292 struct i2c_client *client = v4l2_get_subdevdata(sd); in saa7127_read()
299 static int saa7127_write(struct v4l2_subdev *sd, u8 reg, u8 val) in saa7127_write() argument
301 struct i2c_client *client = v4l2_get_subdevdata(sd); in saa7127_write()
308 v4l2_err(sd, "I2C Write Problem\n"); in saa7127_write()
314 static int saa7127_write_inittab(struct v4l2_subdev *sd, in saa7127_write_inittab() argument
318 saa7127_write(sd, regs->reg, regs->value); in saa7127_write_inittab()
326 static int saa7127_set_vps(struct v4l2_subdev *sd, const struct v4l2_sliced_vbi_data *data) in saa7127_set_vps() argument
328 struct saa7127_state *state = to_state(sd); in saa7127_set_vps()
334 v4l2_dbg(1, debug, sd, "Turn VPS Signal %s\n", enable ? "on" : "off"); in saa7127_set_vps()
335 saa7127_write(sd, 0x54, enable << 7); in saa7127_set_vps()
346 v4l2_dbg(1, debug, sd, "Set VPS data %02x %02x %02x %02x %02x\n", in saa7127_set_vps()
350 saa7127_write(sd, 0x55, state->vps_data[0]); in saa7127_set_vps()
351 saa7127_write(sd, 0x56, state->vps_data[1]); in saa7127_set_vps()
352 saa7127_write(sd, 0x57, state->vps_data[2]); in saa7127_set_vps()
353 saa7127_write(sd, 0x58, state->vps_data[3]); in saa7127_set_vps()
354 saa7127_write(sd, 0x59, state->vps_data[4]); in saa7127_set_vps()
360 static int saa7127_set_cc(struct v4l2_subdev *sd, const struct v4l2_sliced_vbi_data *data) in saa7127_set_cc() argument
362 struct saa7127_state *state = to_state(sd); in saa7127_set_cc()
369 v4l2_dbg(1, debug, sd, in saa7127_set_cc()
371 saa7127_write(sd, SAA7127_REG_CLOSED_CAPTION, in saa7127_set_cc()
378 v4l2_dbg(2, debug, sd, "CC data: %04x\n", cc); in saa7127_set_cc()
379 saa7127_write(sd, SAA7127_REG_LINE_21_ODD_0, cc & 0xff); in saa7127_set_cc()
380 saa7127_write(sd, SAA7127_REG_LINE_21_ODD_1, cc >> 8); in saa7127_set_cc()
387 static int saa7127_set_xds(struct v4l2_subdev *sd, const struct v4l2_sliced_vbi_data *data) in saa7127_set_xds() argument
389 struct saa7127_state *state = to_state(sd); in saa7127_set_xds()
396 v4l2_dbg(1, debug, sd, "Turn XDS %s\n", enable ? "on" : "off"); in saa7127_set_xds()
397 saa7127_write(sd, SAA7127_REG_CLOSED_CAPTION, in saa7127_set_xds()
404 v4l2_dbg(2, debug, sd, "XDS data: %04x\n", xds); in saa7127_set_xds()
405 saa7127_write(sd, SAA7127_REG_LINE_21_EVEN_0, xds & 0xff); in saa7127_set_xds()
406 saa7127_write(sd, SAA7127_REG_LINE_21_EVEN_1, xds >> 8); in saa7127_set_xds()
413 static int saa7127_set_wss(struct v4l2_subdev *sd, const struct v4l2_sliced_vbi_data *data) in saa7127_set_wss() argument
415 struct saa7127_state *state = to_state(sd); in saa7127_set_wss()
421 v4l2_dbg(1, debug, sd, "Turn WSS %s\n", enable ? "on" : "off"); in saa7127_set_wss()
422 saa7127_write(sd, 0x27, enable << 7); in saa7127_set_wss()
428 saa7127_write(sd, 0x26, data->data[0]); in saa7127_set_wss()
429 saa7127_write(sd, 0x27, 0x80 | (data->data[1] & 0x3f)); in saa7127_set_wss()
430 v4l2_dbg(1, debug, sd, in saa7127_set_wss()
438 static int saa7127_set_video_enable(struct v4l2_subdev *sd, int enable) in saa7127_set_video_enable() argument
440 struct saa7127_state *state = to_state(sd); in saa7127_set_video_enable()
443 v4l2_dbg(1, debug, sd, "Enable Video Output\n"); in saa7127_set_video_enable()
444 saa7127_write(sd, 0x2d, state->reg_2d); in saa7127_set_video_enable()
445 saa7127_write(sd, 0x61, state->reg_61); in saa7127_set_video_enable()
447 v4l2_dbg(1, debug, sd, "Disable Video Output\n"); in saa7127_set_video_enable()
448 saa7127_write(sd, 0x2d, (state->reg_2d & 0xf0)); in saa7127_set_video_enable()
449 saa7127_write(sd, 0x61, (state->reg_61 | 0xc0)); in saa7127_set_video_enable()
457 static int saa7127_set_std(struct v4l2_subdev *sd, v4l2_std_id std) in saa7127_set_std() argument
459 struct saa7127_state *state = to_state(sd); in saa7127_set_std()
463 v4l2_dbg(1, debug, sd, "Selecting 60 Hz video Standard\n"); in saa7127_set_std()
467 v4l2_dbg(1, debug, sd, "Selecting 50 Hz video Standard\n"); in saa7127_set_std()
473 saa7127_write_inittab(sd, inittab); in saa7127_set_std()
480 static int saa7127_set_output_type(struct v4l2_subdev *sd, int output) in saa7127_set_output_type() argument
482 struct saa7127_state *state = to_state(sd); in saa7127_set_output_type()
527 v4l2_dbg(1, debug, sd, in saa7127_set_output_type()
531 saa7127_write(sd, 0x2d, state->reg_2d); in saa7127_set_output_type()
532 saa7127_write(sd, 0x3a, state->reg_3a | state->reg_3a_cb); in saa7127_set_output_type()
539 static int saa7127_set_input_type(struct v4l2_subdev *sd, int input) in saa7127_set_input_type() argument
541 struct saa7127_state *state = to_state(sd); in saa7127_set_input_type()
545 v4l2_dbg(1, debug, sd, "Selecting Normal Encoder Input\n"); in saa7127_set_input_type()
550 v4l2_dbg(1, debug, sd, "Selecting Color Bar generator\n"); in saa7127_set_input_type()
557 saa7127_write(sd, 0x3a, state->reg_3a | state->reg_3a_cb); in saa7127_set_input_type()
564 static int saa7127_s_std_output(struct v4l2_subdev *sd, v4l2_std_id std) in saa7127_s_std_output() argument
566 struct saa7127_state *state = to_state(sd); in saa7127_s_std_output()
570 return saa7127_set_std(sd, std); in saa7127_s_std_output()
573 static int saa7127_s_routing(struct v4l2_subdev *sd, const struct v4l2_routing *route) in saa7127_s_routing() argument
575 struct saa7127_state *state = to_state(sd); in saa7127_s_routing()
579 rc = saa7127_set_input_type(sd, route->input); in saa7127_s_routing()
581 rc = saa7127_set_output_type(sd, route->output); in saa7127_s_routing()
585 static int saa7127_s_stream(struct v4l2_subdev *sd, int enable) in saa7127_s_stream() argument
587 struct saa7127_state *state = to_state(sd); in saa7127_s_stream()
591 return saa7127_set_video_enable(sd, enable); in saa7127_s_stream()
594 static int saa7127_g_fmt(struct v4l2_subdev *sd, struct v4l2_format *fmt) in saa7127_g_fmt() argument
596 struct saa7127_state *state = to_state(sd); in saa7127_g_fmt()
617 static int saa7127_s_vbi_data(struct v4l2_subdev *sd, const struct v4l2_sliced_vbi_data *data) in saa7127_s_vbi_data() argument
621 return saa7127_set_wss(sd, data); in saa7127_s_vbi_data()
623 return saa7127_set_vps(sd, data); in saa7127_s_vbi_data()
626 return saa7127_set_cc(sd, data); in saa7127_s_vbi_data()
627 return saa7127_set_xds(sd, data); in saa7127_s_vbi_data()
635 static int saa7127_g_register(struct v4l2_subdev *sd, struct v4l2_dbg_register *reg) in saa7127_g_register() argument
637 struct i2c_client *client = v4l2_get_subdevdata(sd); in saa7127_g_register()
643 reg->val = saa7127_read(sd, reg->reg & 0xff); in saa7127_g_register()
648 static int saa7127_s_register(struct v4l2_subdev *sd, struct v4l2_dbg_register *reg) in saa7127_s_register() argument
650 struct i2c_client *client = v4l2_get_subdevdata(sd); in saa7127_s_register()
656 saa7127_write(sd, reg->reg & 0xff, reg->val & 0xff); in saa7127_s_register()
661 static int saa7127_g_chip_ident(struct v4l2_subdev *sd, struct v4l2_dbg_chip_ident *chip) in saa7127_g_chip_ident() argument
663 struct saa7127_state *state = to_state(sd); in saa7127_g_chip_ident()
664 struct i2c_client *client = v4l2_get_subdevdata(sd); in saa7127_g_chip_ident()
669 static int saa7127_log_status(struct v4l2_subdev *sd) in saa7127_log_status() argument
671 struct saa7127_state *state = to_state(sd); in saa7127_log_status()
673 v4l2_info(sd, "Standard: %s\n", (state->std & V4L2_STD_525_60) ? "60 Hz" : "50 Hz"); in saa7127_log_status()
674 v4l2_info(sd, "Input: %s\n", state->input_type ? "color bars" : "normal"); in saa7127_log_status()
675 v4l2_info(sd, "Output: %s\n", state->video_enable ? in saa7127_log_status()
677 v4l2_info(sd, "WSS: %s\n", state->wss_enable ? in saa7127_log_status()
679 v4l2_info(sd, "VPS: %s\n", state->vps_enable ? "enabled" : "disabled"); in saa7127_log_status()
680 v4l2_info(sd, "CC: %s\n", state->cc_enable ? "enabled" : "disabled"); in saa7127_log_status()
714 struct v4l2_subdev *sd; in saa7127_probe() local
728 sd = &state->sd; in saa7127_probe()
729 v4l2_i2c_subdev_init(sd, client, &saa7127_ops); in saa7127_probe()
736 if ((saa7127_read(sd, 0) & 0xe4) != 0 || in saa7127_probe()
737 (saa7127_read(sd, 0x29) & 0x3f) != 0x1d) { in saa7127_probe()
738 v4l2_dbg(1, debug, sd, "saa7127 not found\n"); in saa7127_probe()
749 read_result = saa7127_read(sd, SAA7129_REG_FADE_KEY_COL2); in saa7127_probe()
750 saa7127_write(sd, SAA7129_REG_FADE_KEY_COL2, 0xaa); in saa7127_probe()
751 if (saa7127_read(sd, SAA7129_REG_FADE_KEY_COL2) == 0xaa) { in saa7127_probe()
752 saa7127_write(sd, SAA7129_REG_FADE_KEY_COL2, in saa7127_probe()
762 v4l2_info(sd, "%s found @ 0x%x (%s)\n", client->name, in saa7127_probe()
765 v4l2_dbg(1, debug, sd, "Configuring encoder\n"); in saa7127_probe()
766 saa7127_write_inittab(sd, saa7127_init_config_common); in saa7127_probe()
767 saa7127_set_std(sd, V4L2_STD_NTSC); in saa7127_probe()
768 saa7127_set_output_type(sd, SAA7127_OUTPUT_TYPE_BOTH); in saa7127_probe()
769 saa7127_set_vps(sd, &vbi); in saa7127_probe()
770 saa7127_set_wss(sd, &vbi); in saa7127_probe()
771 saa7127_set_cc(sd, &vbi); in saa7127_probe()
772 saa7127_set_xds(sd, &vbi); in saa7127_probe()
776 saa7127_set_input_type(sd, SAA7127_INPUT_TYPE_TEST_IMAGE); in saa7127_probe()
778 saa7127_set_input_type(sd, SAA7127_INPUT_TYPE_NORMAL); in saa7127_probe()
779 saa7127_set_video_enable(sd, 1); in saa7127_probe()
782 saa7127_write_inittab(sd, saa7129_init_config_extra); in saa7127_probe()
790 struct v4l2_subdev *sd = i2c_get_clientdata(client); in saa7127_remove() local
792 v4l2_device_unregister_subdev(sd); in saa7127_remove()
794 saa7127_set_video_enable(sd, 0); in saa7127_remove()
795 kfree(to_state(sd)); in saa7127_remove()