Lines Matching refs:mxb
152 struct mxb struct
173 #define saa7111a_call(mxb, o, f, args...) \ argument
174 v4l2_subdev_call(mxb->saa7111a, o, f, ##args)
175 #define tda9840_call(mxb, o, f, args...) \ argument
176 v4l2_subdev_call(mxb->tda9840, o, f, ##args)
177 #define tea6415c_call(mxb, o, f, args...) \ argument
178 v4l2_subdev_call(mxb->tea6415c, o, f, ##args)
179 #define tuner_call(mxb, o, f, args...) \ argument
180 v4l2_subdev_call(mxb->tuner, o, f, ##args)
184 static void mxb_update_audmode(struct mxb *mxb) in mxb_update_audmode() argument
187 .audmode = mxb->cur_mode, in mxb_update_audmode()
190 tda9840_call(mxb, tuner, s_tuner, &t); in mxb_update_audmode()
193 static inline void tea6420_route(struct mxb *mxb, int idx) in tea6420_route() argument
195 v4l2_subdev_call(mxb->tea6420_1, audio, s_routing, in tea6420_route()
197 v4l2_subdev_call(mxb->tea6420_2, audio, s_routing, in tea6420_route()
199 v4l2_subdev_call(mxb->tea6420_1, audio, s_routing, in tea6420_route()
201 v4l2_subdev_call(mxb->tea6420_2, audio, s_routing, in tea6420_route()
211 struct mxb *mxb = dev->ext_priv; in mxb_s_ctrl() local
215 mxb->cur_mute = ctrl->val; in mxb_s_ctrl()
217 tea6420_route(mxb, ctrl->val ? 6 : in mxb_s_ctrl()
218 video_audio_connect[mxb->cur_input]); in mxb_s_ctrl()
233 struct mxb *mxb = NULL; in mxb_probe() local
239 mxb = kzalloc(sizeof(struct mxb), GFP_KERNEL); in mxb_probe()
240 if (mxb == NULL) { in mxb_probe()
246 snprintf(mxb->i2c_adapter.name, sizeof(mxb->i2c_adapter.name), "mxb%d", mxb_num); in mxb_probe()
248 saa7146_i2c_adapter_prepare(dev, &mxb->i2c_adapter, SAA7146_I2C_BUS_BIT_RATE_480); in mxb_probe()
249 if (i2c_add_adapter(&mxb->i2c_adapter) < 0) { in mxb_probe()
251 kfree(mxb); in mxb_probe()
255 mxb->saa7111a = v4l2_i2c_new_subdev(&dev->v4l2_dev, &mxb->i2c_adapter, in mxb_probe()
257 mxb->tea6420_1 = v4l2_i2c_new_subdev(&dev->v4l2_dev, &mxb->i2c_adapter, in mxb_probe()
259 mxb->tea6420_2 = v4l2_i2c_new_subdev(&dev->v4l2_dev, &mxb->i2c_adapter, in mxb_probe()
261 mxb->tea6415c = v4l2_i2c_new_subdev(&dev->v4l2_dev, &mxb->i2c_adapter, in mxb_probe()
263 mxb->tda9840 = v4l2_i2c_new_subdev(&dev->v4l2_dev, &mxb->i2c_adapter, in mxb_probe()
265 mxb->tuner = v4l2_i2c_new_subdev(&dev->v4l2_dev, &mxb->i2c_adapter, in mxb_probe()
269 if (!mxb->tea6420_1 || !mxb->tea6420_2 || !mxb->tea6415c || in mxb_probe()
270 !mxb->tda9840 || !mxb->saa7111a || !mxb->tuner) { in mxb_probe()
272 i2c_del_adapter(&mxb->i2c_adapter); in mxb_probe()
273 kfree(mxb); in mxb_probe()
280 dev->ext_priv = mxb; in mxb_probe()
349 struct mxb* mxb = (struct mxb*)dev->ext_priv; in mxb_init_done() local
357 tea6420_route(mxb, 6); in mxb_init_done()
360 saa7111a_call(mxb, core, s_std, std); in mxb_init_done()
364 saa7111a_call(mxb, video, s_routing, SAA7115_COMPOSITE0, in mxb_init_done()
371 tuner_call(mxb, tuner, s_type_addr, &tun_setup); in mxb_init_done()
373 mxb->cur_freq.tuner = 0; in mxb_init_done()
374 mxb->cur_freq.type = V4L2_TUNER_ANALOG_TV; in mxb_init_done()
375 mxb->cur_freq.frequency = freq; in mxb_init_done()
376 tuner_call(mxb, tuner, s_frequency, &mxb->cur_freq); in mxb_init_done()
381 saa7111a_call(mxb, core, s_gpio, 1); in mxb_init_done()
382 saa7111a_call(mxb, core, s_std, std); in mxb_init_done()
383 tuner_call(mxb, core, s_std, std); in mxb_init_done()
386 tea6415c_call(mxb, video, s_routing, 3, 17, 0); in mxb_init_done()
389 tea6415c_call(mxb, video, s_routing, 3, 13, 0); in mxb_init_done()
392 mxb->cur_input = 0; in mxb_init_done()
393 mxb->cur_audinput = video_audio_connect[mxb->cur_input]; in mxb_init_done()
394 mxb->cur_mute = 1; in mxb_init_done()
396 mxb->cur_mode = V4L2_TUNER_MODE_STEREO; in mxb_init_done()
397 mxb_update_audmode(mxb); in mxb_init_done()
408 err = i2c_transfer(&mxb->i2c_adapter, &msg, 1); in mxb_init_done()
422 err = i2c_transfer(&mxb->i2c_adapter, &msg, 1); in mxb_init_done()
437 saa7146_set_hps_source_and_sync(dev, input_port_selection[mxb->cur_input].hps_source, in mxb_init_done()
438 input_port_selection[mxb->cur_input].hps_sync); in mxb_init_done()
472 struct mxb *mxb = (struct mxb *)dev->ext_priv; in vidioc_g_input() local
473 *i = mxb->cur_input; in vidioc_g_input()
482 struct mxb *mxb = (struct mxb *)dev->ext_priv; in vidioc_s_input() local
491 mxb->cur_input = input; in vidioc_s_input()
502 err = tea6415c_call(mxb, video, s_routing, 3, 17, 0); in vidioc_s_input()
506 err = tea6415c_call(mxb, video, s_routing, 3, 13, 0); in vidioc_s_input()
520 err = tea6415c_call(mxb, video, s_routing, 1, 17, 0); in vidioc_s_input()
528 if (saa7111a_call(mxb, video, s_routing, i, SAA7111_FMT_CCIR, 0)) in vidioc_s_input()
531 mxb->cur_audinput = video_audio_connect[input]; in vidioc_s_input()
533 if (0 == mxb->cur_mute) in vidioc_s_input()
534 tea6420_route(mxb, mxb->cur_audinput); in vidioc_s_input()
535 if (mxb->cur_audinput == 0) in vidioc_s_input()
536 mxb_update_audmode(mxb); in vidioc_s_input()
544 struct mxb *mxb = (struct mxb *)dev->ext_priv; in vidioc_g_tuner() local
559 t->audmode = mxb->cur_mode; in vidioc_g_tuner()
566 struct mxb *mxb = (struct mxb *)dev->ext_priv; in vidioc_s_tuner() local
574 mxb->cur_mode = t->audmode; in vidioc_s_tuner()
588 struct mxb *mxb = (struct mxb *)dev->ext_priv; in vidioc_g_frequency() local
592 *f = mxb->cur_freq; in vidioc_g_frequency()
594 DEB_EE("VIDIOC_G_FREQ: freq:0x%08x\n", mxb->cur_freq.frequency); in vidioc_g_frequency()
601 struct mxb *mxb = (struct mxb *)dev->ext_priv; in vidioc_s_frequency() local
610 DEB_EE("VIDIOC_S_FREQUENCY: freq:0x%08x\n", mxb->cur_freq.frequency); in vidioc_s_frequency()
613 tuner_call(mxb, tuner, s_frequency, f); in vidioc_s_frequency()
615 mxb->cur_freq = *f; in vidioc_s_frequency()
616 tuner_call(mxb, tuner, g_frequency, &mxb->cur_freq); in vidioc_s_frequency()
617 if (mxb->cur_audinput == 0) in vidioc_s_frequency()
618 mxb_update_audmode(mxb); in vidioc_s_frequency()
620 if (mxb->cur_input) in vidioc_s_frequency()
642 struct mxb *mxb = (struct mxb *)dev->ext_priv; in vidioc_g_audio() local
645 *a = mxb_audios[mxb->cur_audinput]; in vidioc_g_audio()
652 struct mxb *mxb = (struct mxb *)dev->ext_priv; in vidioc_s_audio() local
655 if (mxb_inputs[mxb->cur_input].audioset & (1 << a->index)) { in vidioc_s_audio()
656 if (mxb->cur_audinput != a->index) { in vidioc_s_audio()
657 mxb->cur_audinput = a->index; in vidioc_s_audio()
658 tea6420_route(mxb, a->index); in vidioc_s_audio()
659 if (mxb->cur_audinput == 0) in vidioc_s_audio()
660 mxb_update_audmode(mxb); in vidioc_s_audio()
702 struct mxb *mxb; in mxb_attach() local
711 mxb = (struct mxb *)dev->ext_priv; in mxb_attach()
728 if (saa7146_register_device(&mxb->video_dev, dev, "mxb", VFL_TYPE_GRABBER)) { in mxb_attach()
736 if (saa7146_register_device(&mxb->vbi_dev, dev, "mxb", VFL_TYPE_VBI)) { in mxb_attach()
750 struct mxb *mxb = (struct mxb *)dev->ext_priv; in mxb_detach() local
755 tea6420_route(mxb, 6); in mxb_detach()
757 saa7146_unregister_device(&mxb->video_dev,dev); in mxb_detach()
759 saa7146_unregister_device(&mxb->vbi_dev, dev); in mxb_detach()
764 i2c_del_adapter(&mxb->i2c_adapter); in mxb_detach()
765 kfree(mxb); in mxb_detach()
772 struct mxb *mxb = (struct mxb *)dev->ext_priv; in std_callback() local
780 saa7111a_call(mxb, core, s_gpio, 0); in std_callback()
781 saa7111a_call(mxb, core, s_std, std); in std_callback()
782 if (mxb->cur_input == 0) in std_callback()
783 tuner_call(mxb, core, s_std, std); in std_callback()
787 if (mxb->cur_input) in std_callback()
792 saa7111a_call(mxb, core, s_gpio, 1); in std_callback()
793 saa7111a_call(mxb, core, s_std, std); in std_callback()
794 if (mxb->cur_input == 0) in std_callback()
795 tuner_call(mxb, core, s_std, std); in std_callback()
824 static struct saa7146_pci_extension_data mxb = { variable
835 .driver_data = (unsigned long)&mxb,