Lines Matching defs:mxb

3     mxb - v4l2 driver for the Multimedia eXtension Board
7 Visit http://www.themm.net/~mihu/linux/saa7146/mxb.html
66 input actually uses. the mxb uses port 0 for every input */
141 struct mxb
162 #define saa7111a_call(mxb, o, f, args...) \
163 v4l2_subdev_call(mxb->saa7111a, o, f, ##args)
164 #define tda9840_call(mxb, o, f, args...) \
165 v4l2_subdev_call(mxb->tda9840, o, f, ##args)
166 #define tea6415c_call(mxb, o, f, args...) \
167 v4l2_subdev_call(mxb->tea6415c, o, f, ##args)
168 #define tuner_call(mxb, o, f, args...) \
169 v4l2_subdev_call(mxb->tuner, o, f, ##args)
173 static void mxb_update_audmode(struct mxb *mxb)
176 .audmode = mxb->cur_mode,
179 tda9840_call(mxb, tuner, s_tuner, &t);
182 static inline void tea6420_route(struct mxb *mxb, int idx)
184 v4l2_subdev_call(mxb->tea6420_1, audio, s_routing,
186 v4l2_subdev_call(mxb->tea6420_2, audio, s_routing,
188 v4l2_subdev_call(mxb->tea6420_1, audio, s_routing,
190 v4l2_subdev_call(mxb->tea6420_2, audio, s_routing,
200 struct mxb *mxb = dev->ext_priv;
204 mxb->cur_mute = ctrl->val;
206 tea6420_route(mxb, ctrl->val ? 6 :
207 video_audio_connect[mxb->cur_input]);
222 struct mxb *mxb = NULL;
228 mxb = kzalloc(sizeof(struct mxb), GFP_KERNEL);
229 if (mxb == NULL) {
235 snprintf(mxb->i2c_adapter.name, sizeof(mxb->i2c_adapter.name), "mxb%d", mxb_num);
237 saa7146_i2c_adapter_prepare(dev, &mxb->i2c_adapter, SAA7146_I2C_BUS_BIT_RATE_480);
238 if (i2c_add_adapter(&mxb->i2c_adapter) < 0) {
240 kfree(mxb);
244 mxb->saa7111a = v4l2_i2c_new_subdev(&dev->v4l2_dev, &mxb->i2c_adapter,
246 mxb->tea6420_1 = v4l2_i2c_new_subdev(&dev->v4l2_dev, &mxb->i2c_adapter,
248 mxb->tea6420_2 = v4l2_i2c_new_subdev(&dev->v4l2_dev, &mxb->i2c_adapter,
250 mxb->tea6415c = v4l2_i2c_new_subdev(&dev->v4l2_dev, &mxb->i2c_adapter,
252 mxb->tda9840 = v4l2_i2c_new_subdev(&dev->v4l2_dev, &mxb->i2c_adapter,
254 mxb->tuner = v4l2_i2c_new_subdev(&dev->v4l2_dev, &mxb->i2c_adapter,
258 if (!mxb->tea6420_1 || !mxb->tea6420_2 || !mxb->tea6415c ||
259 !mxb->tda9840 || !mxb->saa7111a || !mxb->tuner) {
261 i2c_del_adapter(&mxb->i2c_adapter);
262 kfree(mxb);
269 dev->ext_priv = mxb;
338 struct mxb* mxb = (struct mxb*)dev->ext_priv;
346 tea6420_route(mxb, 6);
349 saa7111a_call(mxb, video, s_std, std);
353 saa7111a_call(mxb, video, s_routing, SAA7115_COMPOSITE0,
360 tuner_call(mxb, tuner, s_type_addr, &tun_setup);
362 mxb->cur_freq.tuner = 0;
363 mxb->cur_freq.type = V4L2_TUNER_ANALOG_TV;
364 mxb->cur_freq.frequency = freq;
365 tuner_call(mxb, tuner, s_frequency, &mxb->cur_freq);
370 saa7111a_call(mxb, core, s_gpio, 1);
371 saa7111a_call(mxb, video, s_std, std);
372 tuner_call(mxb, video, s_std, std);
375 tea6415c_call(mxb, video, s_routing, 3, 17, 0);
378 tea6415c_call(mxb, video, s_routing, 3, 13, 0);
380 /* the rest for mxb */
381 mxb->cur_input = 0;
382 mxb->cur_audinput = video_audio_connect[mxb->cur_input];
383 mxb->cur_mute = 1;
385 mxb->cur_mode = V4L2_TUNER_MODE_STEREO;
386 mxb_update_audmode(mxb);
389 on the mxb. if so, we must initialize it. due to lack of
397 err = i2c_transfer(&mxb->i2c_adapter, &msg, 1);
411 err = i2c_transfer(&mxb->i2c_adapter, &msg, 1);
426 saa7146_set_hps_source_and_sync(dev, input_port_selection[mxb->cur_input].hps_source,
427 input_port_selection[mxb->cur_input].hps_sync);
445 struct mxb* mxb = (struct mxb*)dev->ext_priv;
461 struct mxb *mxb = (struct mxb *)dev->ext_priv;
462 *i = mxb->cur_input;
471 struct mxb *mxb = (struct mxb *)dev->ext_priv;
480 mxb->cur_input = input;
491 err = tea6415c_call(mxb, video, s_routing, 3, 17, 0);
495 err = tea6415c_call(mxb, video, s_routing, 3, 13, 0);
509 err = tea6415c_call(mxb, video, s_routing, 1, 17, 0);
517 if (saa7111a_call(mxb, video, s_routing, i, SAA7111_FMT_CCIR, 0))
520 mxb->cur_audinput = video_audio_connect[input];
522 if (0 == mxb->cur_mute)
523 tea6420_route(mxb, mxb->cur_audinput);
524 if (mxb->cur_audinput == 0)
525 mxb_update_audmode(mxb);
533 struct mxb *mxb = (struct mxb *)dev->ext_priv;
548 t->audmode = mxb->cur_mode;
555 struct mxb *mxb = (struct mxb *)dev->ext_priv;
563 mxb->cur_mode = t->audmode;
577 struct mxb *mxb = (struct mxb *)dev->ext_priv;
581 *f = mxb->cur_freq;
583 DEB_EE("VIDIOC_G_FREQ: freq:0x%08x\n", mxb->cur_freq.frequency);
590 struct mxb *mxb = (struct mxb *)dev->ext_priv;
599 DEB_EE("VIDIOC_S_FREQUENCY: freq:0x%08x\n", mxb->cur_freq.frequency);
602 tuner_call(mxb, tuner, s_frequency, f);
604 mxb->cur_freq = *f;
605 tuner_call(mxb, tuner, g_frequency, &mxb->cur_freq);
606 if (mxb->cur_audinput == 0)
607 mxb_update_audmode(mxb);
609 if (mxb->cur_input)
631 struct mxb *mxb = (struct mxb *)dev->ext_priv;
634 *a = mxb_audios[mxb->cur_audinput];
641 struct mxb *mxb = (struct mxb *)dev->ext_priv;
645 !(mxb_inputs[mxb->cur_input].audioset & (1 << a->index)))
648 if (mxb->cur_audinput != a->index) {
649 mxb->cur_audinput = a->index;
650 tea6420_route(mxb, a->index);
651 if (mxb->cur_audinput == 0)
652 mxb_update_audmode(mxb);
685 struct mxb *mxb;
700 mxb = (struct mxb *)dev->ext_priv;
717 if (saa7146_register_device(&mxb->video_dev, dev, "mxb", VFL_TYPE_VIDEO)) {
725 if (saa7146_register_device(&mxb->vbi_dev, dev, "mxb", VFL_TYPE_VBI)) {
739 struct mxb *mxb = (struct mxb *)dev->ext_priv;
744 tea6420_route(mxb, 6);
746 saa7146_unregister_device(&mxb->video_dev,dev);
748 saa7146_unregister_device(&mxb->vbi_dev, dev);
753 i2c_del_adapter(&mxb->i2c_adapter);
754 kfree(mxb);
761 struct mxb *mxb = (struct mxb *)dev->ext_priv;
766 DEB_D("VIDIOC_S_STD: setting mxb for PAL_I\n");
769 saa7111a_call(mxb, core, s_gpio, 0);
770 saa7111a_call(mxb, video, s_std, std);
771 if (mxb->cur_input == 0)
772 tuner_call(mxb, video, s_std, std);
776 if (mxb->cur_input)
778 DEB_D("VIDIOC_S_STD: setting mxb for PAL/NTSC/SECAM\n");
781 saa7111a_call(mxb, core, s_gpio, 1);
782 saa7111a_call(mxb, video, s_std, std);
783 if (mxb->cur_input == 0)
784 tuner_call(mxb, video, s_std, std);
813 static struct saa7146_pci_extension_data mxb = {
824 .driver_data = (unsigned long)&mxb,