Lines Matching refs:sd
55 struct v4l2_subdev sd; member
66 static inline struct saa7110 *to_saa7110(struct v4l2_subdev *sd) in to_saa7110() argument
68 return container_of(sd, struct saa7110, sd); in to_saa7110()
73 return &container_of(ctrl->handler, struct saa7110, hdl)->sd; in to_sd()
80 static int saa7110_write(struct v4l2_subdev *sd, u8 reg, u8 value) in saa7110_write() argument
82 struct i2c_client *client = v4l2_get_subdevdata(sd); in saa7110_write()
83 struct saa7110 *decoder = to_saa7110(sd); in saa7110_write()
89 static int saa7110_write_block(struct v4l2_subdev *sd, const u8 *data, unsigned int len) in saa7110_write_block() argument
91 struct i2c_client *client = v4l2_get_subdevdata(sd); in saa7110_write_block()
92 struct saa7110 *decoder = to_saa7110(sd); in saa7110_write_block()
109 ret = saa7110_write(sd, reg++, *data++); in saa7110_write_block()
118 static inline int saa7110_read(struct v4l2_subdev *sd) in saa7110_read() argument
120 struct i2c_client *client = v4l2_get_subdevdata(sd); in saa7110_read()
133 static int saa7110_selmux(struct v4l2_subdev *sd, int chan) in saa7110_selmux() argument
164 struct saa7110 *decoder = to_saa7110(sd); in saa7110_selmux()
167 saa7110_write(sd, 0x06, ptr[0]); /* Luminance control */ in saa7110_selmux()
168 saa7110_write(sd, 0x20, ptr[1]); /* Analog Control #1 */ in saa7110_selmux()
169 saa7110_write(sd, 0x21, ptr[2]); /* Analog Control #2 */ in saa7110_selmux()
170 saa7110_write(sd, 0x22, ptr[3]); /* Mixer Control #1 */ in saa7110_selmux()
171 saa7110_write(sd, 0x2C, ptr[4]); /* Mixer Control #2 */ in saa7110_selmux()
172 saa7110_write(sd, 0x30, ptr[5]); /* ADCs gain control */ in saa7110_selmux()
173 saa7110_write(sd, 0x31, ptr[6]); /* Mixer Control #3 */ in saa7110_selmux()
174 saa7110_write(sd, 0x21, ptr[7]); /* Analog Control #2 */ in saa7110_selmux()
190 static v4l2_std_id determine_norm(struct v4l2_subdev *sd) in determine_norm() argument
193 struct saa7110 *decoder = to_saa7110(sd); in determine_norm()
197 saa7110_write_block(sd, initseq, sizeof(initseq)); in determine_norm()
198 saa7110_selmux(sd, decoder->input); in determine_norm()
202 status = saa7110_read(sd); in determine_norm()
204 v4l2_dbg(1, debug, sd, "status=0x%02x (no signal)\n", status); in determine_norm()
208 saa7110_write(sd, 0x06, 0x83); in determine_norm()
210 v4l2_dbg(1, debug, sd, "status=0x%02x (NTSC/no color)\n", status); in determine_norm()
214 v4l2_dbg(1, debug, sd, "status=0x%02x (PAL/no color)\n", status); in determine_norm()
220 v4l2_dbg(1, debug, sd, "status=0x%02x (NTSC)\n", status); in determine_norm()
221 saa7110_write(sd, 0x0D, 0x86); in determine_norm()
222 saa7110_write(sd, 0x0F, 0x50); in determine_norm()
223 saa7110_write(sd, 0x11, 0x2C); in determine_norm()
229 saa7110_write(sd, 0x0D, 0x86); in determine_norm()
230 saa7110_write(sd, 0x0F, 0x10); in determine_norm()
231 saa7110_write(sd, 0x11, 0x59); in determine_norm()
238 status = saa7110_read(sd); in determine_norm()
240 v4l2_dbg(1, debug, sd, "status=0x%02x (SECAM)\n", status); in determine_norm()
241 saa7110_write(sd, 0x0D, 0x87); in determine_norm()
244 v4l2_dbg(1, debug, sd, "status=0x%02x (PAL)\n", status); in determine_norm()
248 static int saa7110_g_input_status(struct v4l2_subdev *sd, u32 *pstatus) in saa7110_g_input_status() argument
250 struct saa7110 *decoder = to_saa7110(sd); in saa7110_g_input_status()
252 int status = saa7110_read(sd); in saa7110_g_input_status()
254 v4l2_dbg(1, debug, sd, "status=0x%02x norm=%llx\n", in saa7110_g_input_status()
265 static int saa7110_querystd(struct v4l2_subdev *sd, v4l2_std_id *std) in saa7110_querystd() argument
267 *std &= determine_norm(sd); in saa7110_querystd()
271 static int saa7110_s_std(struct v4l2_subdev *sd, v4l2_std_id std) in saa7110_s_std() argument
273 struct saa7110 *decoder = to_saa7110(sd); in saa7110_s_std()
279 saa7110_write(sd, 0x0D, 0x86); in saa7110_s_std()
280 saa7110_write(sd, 0x0F, 0x50); in saa7110_s_std()
281 saa7110_write(sd, 0x11, 0x2C); in saa7110_s_std()
283 v4l2_dbg(1, debug, sd, "switched to NTSC\n"); in saa7110_s_std()
285 saa7110_write(sd, 0x0D, 0x86); in saa7110_s_std()
286 saa7110_write(sd, 0x0F, 0x10); in saa7110_s_std()
287 saa7110_write(sd, 0x11, 0x59); in saa7110_s_std()
289 v4l2_dbg(1, debug, sd, "switched to PAL\n"); in saa7110_s_std()
291 saa7110_write(sd, 0x0D, 0x87); in saa7110_s_std()
292 saa7110_write(sd, 0x0F, 0x10); in saa7110_s_std()
293 saa7110_write(sd, 0x11, 0x59); in saa7110_s_std()
295 v4l2_dbg(1, debug, sd, "switched to SECAM\n"); in saa7110_s_std()
303 static int saa7110_s_routing(struct v4l2_subdev *sd, in saa7110_s_routing() argument
306 struct saa7110 *decoder = to_saa7110(sd); in saa7110_s_routing()
309 v4l2_dbg(1, debug, sd, "input=%d not available\n", input); in saa7110_s_routing()
313 saa7110_selmux(sd, input); in saa7110_s_routing()
314 v4l2_dbg(1, debug, sd, "switched to input=%d\n", input); in saa7110_s_routing()
319 static int saa7110_s_stream(struct v4l2_subdev *sd, int enable) in saa7110_s_stream() argument
321 struct saa7110 *decoder = to_saa7110(sd); in saa7110_s_stream()
325 saa7110_write(sd, 0x0E, enable ? 0x18 : 0x80); in saa7110_s_stream()
326 v4l2_dbg(1, debug, sd, "YUV %s\n", enable ? "on" : "off"); in saa7110_s_stream()
333 struct v4l2_subdev *sd = to_sd(ctrl); in saa7110_s_ctrl() local
337 saa7110_write(sd, 0x19, ctrl->val); in saa7110_s_ctrl()
340 saa7110_write(sd, 0x13, ctrl->val); in saa7110_s_ctrl()
343 saa7110_write(sd, 0x12, ctrl->val); in saa7110_s_ctrl()
346 saa7110_write(sd, 0x07, ctrl->val); in saa7110_s_ctrl()
378 struct v4l2_subdev *sd; in saa7110_probe() local
392 sd = &decoder->sd; in saa7110_probe()
393 v4l2_i2c_subdev_init(sd, client, &saa7110_ops); in saa7110_probe()
406 sd->ctrl_handler = &decoder->hdl; in saa7110_probe()
417 rv = saa7110_write_block(sd, initseq, sizeof(initseq)); in saa7110_probe()
419 v4l2_dbg(1, debug, sd, "init status %d\n", rv); in saa7110_probe()
422 saa7110_write(sd, 0x21, 0x10); in saa7110_probe()
423 saa7110_write(sd, 0x0e, 0x18); in saa7110_probe()
424 saa7110_write(sd, 0x0D, 0x04); in saa7110_probe()
425 ver = saa7110_read(sd); in saa7110_probe()
426 saa7110_write(sd, 0x0D, 0x06); in saa7110_probe()
428 status = saa7110_read(sd); in saa7110_probe()
429 v4l2_dbg(1, debug, sd, "version %x, status=0x%02x\n", in saa7110_probe()
431 saa7110_write(sd, 0x0D, 0x86); in saa7110_probe()
432 saa7110_write(sd, 0x0F, 0x10); in saa7110_probe()
433 saa7110_write(sd, 0x11, 0x59); in saa7110_probe()
446 struct v4l2_subdev *sd = i2c_get_clientdata(client); in saa7110_remove() local
447 struct saa7110 *decoder = to_saa7110(sd); in saa7110_remove()
449 v4l2_device_unregister_subdev(sd); in saa7110_remove()