Lines Matching refs:sd
56 struct v4l2_subdev sd; member
78 static inline struct saa717x_state *to_state(struct v4l2_subdev *sd) in to_state() argument
80 return container_of(sd, struct saa717x_state, sd); in to_state()
96 static int saa717x_write(struct v4l2_subdev *sd, u32 reg, u32 value) in saa717x_write() argument
98 struct i2c_client *client = v4l2_get_subdevdata(sd); in saa717x_write()
118 v4l2_dbg(2, debug, sd, "wrote: reg 0x%03x=%08x\n", reg, value); in saa717x_write()
122 static void saa717x_write_regs(struct v4l2_subdev *sd, u32 *data) in saa717x_write_regs() argument
125 saa717x_write(sd, data[0], data[1]); in saa717x_write_regs()
130 static u32 saa717x_read(struct v4l2_subdev *sd, u32 reg) in saa717x_read() argument
132 struct i2c_client *client = v4l2_get_subdevdata(sd); in saa717x_read()
156 v4l2_dbg(2, debug, sd, "read: reg 0x%03x=0x%08x\n", reg, value); in saa717x_read()
690 static void get_inf_dev_status(struct v4l2_subdev *sd, in get_inf_dev_status() argument
729 reg_data3 = saa717x_read(sd, 0x0528); in get_inf_dev_status()
731 v4l2_dbg(1, debug, sd, "tvaudio thread status: 0x%x [%s%s%s]\n", in get_inf_dev_status()
735 v4l2_dbg(1, debug, sd, "detailed status: " in get_inf_dev_status()
756 v4l2_dbg(1, debug, sd, "ST!!!\n"); in get_inf_dev_status()
761 v4l2_dbg(1, debug, sd, "DUAL!!!\n"); in get_inf_dev_status()
767 static void set_audio_mode(struct v4l2_subdev *sd, int audio_mode) in set_audio_mode() argument
769 v4l2_dbg(1, debug, sd, "writing registers to set audio mode by set %d\n", in set_audio_mode()
772 saa717x_write(sd, 0x46c, reg_set_audio_template[audio_mode][0]); in set_audio_mode()
773 saa717x_write(sd, 0x470, reg_set_audio_template[audio_mode][1]); in set_audio_mode()
777 static void set_video_output_level_regs(struct v4l2_subdev *sd, in set_video_output_level_regs() argument
781 saa717x_write(sd, 0x10a, decoder->bright); in set_video_output_level_regs()
787 saa717x_write(sd, 0x10b, decoder->contrast); in set_video_output_level_regs()
792 saa717x_write(sd, 0x10c, decoder->sat); in set_video_output_level_regs()
796 saa717x_write(sd, 0x10d, decoder->hue); in set_video_output_level_regs()
800 static int set_audio_regs(struct v4l2_subdev *sd, in set_audio_regs() argument
808 saa717x_write(sd, 0x0594, decoder->audio_input); in set_audio_regs()
809 v4l2_dbg(1, debug, sd, "set audio input %d\n", in set_audio_regs()
829 saa717x_write(sd, 0x480, val); in set_audio_regs()
834 saa717x_write(sd, 0x488, val); in set_audio_regs()
839 static void set_h_prescale(struct v4l2_subdev *sd, in set_h_prescale() argument
872 saa717x_write(sd, 0x60 + task_shift, vals[i].xpsc); in set_h_prescale()
874 saa717x_write(sd, 0x61 + task_shift, vals[i].xacl); in set_h_prescale()
876 saa717x_write(sd, 0x62 + task_shift, in set_h_prescale()
879 saa717x_write(sd, 0x63 + task_shift, in set_h_prescale()
884 static void set_v_scale(struct v4l2_subdev *sd, int task, int yscale) in set_v_scale() argument
890 saa717x_write(sd, 0x70 + task_shift, yscale & 0xff); in set_v_scale()
892 saa717x_write(sd, 0x71 + task_shift, yscale >> 8); in set_v_scale()
895 static int saa717x_s_ctrl(struct v4l2_subdev *sd, struct v4l2_control *ctrl) in saa717x_s_ctrl() argument
897 struct saa717x_state *state = to_state(sd); in saa717x_s_ctrl()
902 v4l2_err(sd, "invalid brightness setting %d\n", ctrl->value); in saa717x_s_ctrl()
907 v4l2_dbg(1, debug, sd, "bright:%d\n", state->bright); in saa717x_s_ctrl()
908 saa717x_write(sd, 0x10a, state->bright); in saa717x_s_ctrl()
913 v4l2_err(sd, "invalid contrast setting %d\n", ctrl->value); in saa717x_s_ctrl()
918 v4l2_dbg(1, debug, sd, "contrast:%d\n", state->contrast); in saa717x_s_ctrl()
919 saa717x_write(sd, 0x10b, state->contrast); in saa717x_s_ctrl()
924 v4l2_err(sd, "invalid saturation setting %d\n", ctrl->value); in saa717x_s_ctrl()
929 v4l2_dbg(1, debug, sd, "sat:%d\n", state->sat); in saa717x_s_ctrl()
930 saa717x_write(sd, 0x10c, state->sat); in saa717x_s_ctrl()
935 v4l2_err(sd, "invalid hue setting %d\n", ctrl->value); in saa717x_s_ctrl()
940 v4l2_dbg(1, debug, sd, "hue:%d\n", state->hue); in saa717x_s_ctrl()
941 saa717x_write(sd, 0x10d, state->hue); in saa717x_s_ctrl()
946 set_audio_regs(sd, state); in saa717x_s_ctrl()
951 set_audio_regs(sd, state); in saa717x_s_ctrl()
956 set_audio_regs(sd, state); in saa717x_s_ctrl()
961 set_audio_regs(sd, state); in saa717x_s_ctrl()
966 set_audio_regs(sd, state); in saa717x_s_ctrl()
976 static int saa717x_g_ctrl(struct v4l2_subdev *sd, struct v4l2_control *ctrl) in saa717x_g_ctrl() argument
978 struct saa717x_state *state = to_state(sd); in saa717x_g_ctrl()
1107 static int saa717x_s_video_routing(struct v4l2_subdev *sd, const struct v4l2_routing *route) in saa717x_s_video_routing() argument
1109 struct saa717x_state *decoder = to_state(sd); in saa717x_s_video_routing()
1115 v4l2_dbg(1, debug, sd, "decoder set input (%d)\n", inp); in saa717x_s_video_routing()
1125 v4l2_dbg(1, debug, sd, "now setting %s input %d\n", in saa717x_s_video_routing()
1130 saa717x_write(sd, 0x102, in saa717x_s_video_routing()
1131 (saa717x_read(sd, 0x102) & 0xf0) | in saa717x_s_video_routing()
1135 saa717x_write(sd, 0x109, in saa717x_s_video_routing()
1136 (saa717x_read(sd, 0x109) & 0x7f) | in saa717x_s_video_routing()
1142 set_audio_mode(sd, decoder->tuner_audio_mode); in saa717x_s_video_routing()
1146 set_audio_mode(sd, TUNER_AUDIO_STEREO); in saa717x_s_video_routing()
1150 saa717x_write_regs(sd, reg_init_tuner_input); in saa717x_s_video_routing()
1152 saa717x_write_regs(sd, reg_init_svideo_input); in saa717x_s_video_routing()
1154 saa717x_write_regs(sd, reg_init_composite_input); in saa717x_s_video_routing()
1160 static int saa717x_queryctrl(struct v4l2_subdev *sd, struct v4l2_queryctrl *qc) in saa717x_queryctrl() argument
1173 static int saa717x_g_register(struct v4l2_subdev *sd, struct v4l2_dbg_register *reg) in saa717x_g_register() argument
1175 struct i2c_client *client = v4l2_get_subdevdata(sd); in saa717x_g_register()
1181 reg->val = saa717x_read(sd, reg->reg); in saa717x_g_register()
1186 static int saa717x_s_register(struct v4l2_subdev *sd, struct v4l2_dbg_register *reg) in saa717x_s_register() argument
1188 struct i2c_client *client = v4l2_get_subdevdata(sd); in saa717x_s_register()
1196 saa717x_write(sd, addr, val); in saa717x_s_register()
1201 static int saa717x_s_fmt(struct v4l2_subdev *sd, struct v4l2_format *fmt) in saa717x_s_fmt() argument
1207 v4l2_dbg(1, debug, sd, "decoder set size\n"); in saa717x_s_fmt()
1225 set_h_prescale(sd, 0, prescale); in saa717x_s_fmt()
1226 set_h_prescale(sd, 1, prescale); in saa717x_s_fmt()
1230 saa717x_write(sd, 0x6C, (u8)(h_scale & 0xFF)); in saa717x_s_fmt()
1231 saa717x_write(sd, 0x6D, (u8)((h_scale >> 8) & 0xFF)); in saa717x_s_fmt()
1233 saa717x_write(sd, 0xAC, (u8)(h_scale & 0xFF)); in saa717x_s_fmt()
1234 saa717x_write(sd, 0xAD, (u8)((h_scale >> 8) & 0xFF)); in saa717x_s_fmt()
1237 set_v_scale(sd, 0, v_scale); in saa717x_s_fmt()
1238 set_v_scale(sd, 1, v_scale); in saa717x_s_fmt()
1243 saa717x_write(sd, 0x5C, (u8)(pix->width & 0xFF)); in saa717x_s_fmt()
1244 saa717x_write(sd, 0x5D, (u8)((pix->width >> 8) & 0xFF)); in saa717x_s_fmt()
1246 saa717x_write(sd, 0x9C, (u8)(pix->width & 0xFF)); in saa717x_s_fmt()
1247 saa717x_write(sd, 0x9D, (u8)((pix->width >> 8) & 0xFF)); in saa717x_s_fmt()
1251 saa717x_write(sd, 0x5E, (u8)(pix->height & 0xFF)); in saa717x_s_fmt()
1252 saa717x_write(sd, 0x5F, (u8)((pix->height >> 8) & 0xFF)); in saa717x_s_fmt()
1254 saa717x_write(sd, 0x9E, (u8)(pix->height & 0xFF)); in saa717x_s_fmt()
1255 saa717x_write(sd, 0x9F, (u8)((pix->height >> 8) & 0xFF)); in saa717x_s_fmt()
1259 static int saa717x_s_radio(struct v4l2_subdev *sd) in saa717x_s_radio() argument
1261 struct saa717x_state *decoder = to_state(sd); in saa717x_s_radio()
1267 static int saa717x_s_std(struct v4l2_subdev *sd, v4l2_std_id std) in saa717x_s_std() argument
1269 struct saa717x_state *decoder = to_state(sd); in saa717x_s_std()
1271 v4l2_dbg(1, debug, sd, "decoder set norm "); in saa717x_s_std()
1272 v4l2_dbg(1, debug, sd, "(not yet implementd)\n"); in saa717x_s_std()
1279 static int saa717x_s_audio_routing(struct v4l2_subdev *sd, const struct v4l2_routing *route) in saa717x_s_audio_routing() argument
1281 struct saa717x_state *decoder = to_state(sd); in saa717x_s_audio_routing()
1285 v4l2_dbg(1, debug, sd, in saa717x_s_audio_routing()
1288 set_audio_regs(sd, decoder); in saa717x_s_audio_routing()
1294 static int saa717x_s_stream(struct v4l2_subdev *sd, int enable) in saa717x_s_stream() argument
1296 struct saa717x_state *decoder = to_state(sd); in saa717x_s_stream()
1298 v4l2_dbg(1, debug, sd, "decoder %s output\n", in saa717x_s_stream()
1301 saa717x_write(sd, 0x193, enable ? 0xa6 : 0x26); in saa717x_s_stream()
1306 static int saa717x_s_tuner(struct v4l2_subdev *sd, struct v4l2_tuner *vt) in saa717x_s_tuner() argument
1308 struct saa717x_state *decoder = to_state(sd); in saa717x_s_tuner()
1331 v4l2_dbg(1, debug, sd, "change audio mode to %s\n", in saa717x_s_tuner()
1336 set_audio_mode(sd, decoder->tuner_audio_mode); in saa717x_s_tuner()
1340 static int saa717x_g_tuner(struct v4l2_subdev *sd, struct v4l2_tuner *vt) in saa717x_g_tuner() argument
1342 struct saa717x_state *decoder = to_state(sd); in saa717x_g_tuner()
1347 get_inf_dev_status(sd, &dual_f, &stereo_f); in saa717x_g_tuner()
1349 v4l2_dbg(1, debug, sd, "DETECT==st:%d dual:%d\n", in saa717x_g_tuner()
1355 v4l2_dbg(1, debug, sd, "DETECT==MONO\n"); in saa717x_g_tuner()
1363 v4l2_dbg(1, debug, sd, "DETECT==ST(ST)\n"); in saa717x_g_tuner()
1366 v4l2_dbg(1, debug, sd, "DETECT==ST(MONO)\n"); in saa717x_g_tuner()
1374 v4l2_dbg(1, debug, sd, "DETECT==DUAL1\n"); in saa717x_g_tuner()
1377 v4l2_dbg(1, debug, sd, "DETECT==DUAL2\n"); in saa717x_g_tuner()
1434 struct v4l2_subdev *sd; in saa717x_probe() local
1446 sd = &decoder->sd; in saa717x_probe()
1447 v4l2_i2c_subdev_init(sd, client, &saa717x_ops); in saa717x_probe()
1449 if (saa717x_write(sd, 0x5a4, 0xfe) && in saa717x_probe()
1450 saa717x_write(sd, 0x5a5, 0x0f) && in saa717x_probe()
1451 saa717x_write(sd, 0x5a6, 0x00) && in saa717x_probe()
1452 saa717x_write(sd, 0x5a7, 0x01)) in saa717x_probe()
1453 id = saa717x_read(sd, 0x5a0); in saa717x_probe()
1455 v4l2_dbg(1, debug, sd, "saa717x not found (id=%02x)\n", id); in saa717x_probe()
1467 v4l2_info(sd, "%s found @ 0x%x (%s)\n", p, in saa717x_probe()
1497 v4l2_dbg(1, debug, sd, "writing init values\n"); in saa717x_probe()
1500 saa717x_write_regs(sd, reg_init_initialize); in saa717x_probe()
1501 set_video_output_level_regs(sd, decoder); in saa717x_probe()
1505 set_audio_regs(sd, decoder); in saa717x_probe()
1514 struct v4l2_subdev *sd = i2c_get_clientdata(client); in saa717x_remove() local
1516 v4l2_device_unregister_subdev(sd); in saa717x_remove()
1517 kfree(to_state(sd)); in saa717x_remove()