Lines Matching defs:mxb

3     mxb - v4l2 driver for the Multimedia eXtension Board
7 Visit http://www.themm.net/~mihu/linux/saa7146/mxb.html
67 input actually uses. the mxb uses port 0 for every input */
142 struct mxb
163 #define saa7111a_call(mxb, o, f, args...) \
164 v4l2_subdev_call(mxb->saa7111a, o, f, ##args)
165 #define tda9840_call(mxb, o, f, args...) \
166 v4l2_subdev_call(mxb->tda9840, o, f, ##args)
167 #define tea6415c_call(mxb, o, f, args...) \
168 v4l2_subdev_call(mxb->tea6415c, o, f, ##args)
169 #define tuner_call(mxb, o, f, args...) \
170 v4l2_subdev_call(mxb->tuner, o, f, ##args)
174 static void mxb_update_audmode(struct mxb *mxb)
177 .audmode = mxb->cur_mode,
180 tda9840_call(mxb, tuner, s_tuner, &t);
183 static inline void tea6420_route(struct mxb *mxb, int idx)
185 v4l2_subdev_call(mxb->tea6420_1, audio, s_routing,
187 v4l2_subdev_call(mxb->tea6420_2, audio, s_routing,
189 v4l2_subdev_call(mxb->tea6420_1, audio, s_routing,
191 v4l2_subdev_call(mxb->tea6420_2, audio, s_routing,
201 struct mxb *mxb = dev->ext_priv;
205 mxb->cur_mute = ctrl->val;
207 tea6420_route(mxb, ctrl->val ? 6 :
208 video_audio_connect[mxb->cur_input]);
223 struct mxb *mxb = NULL;
229 mxb = kzalloc(sizeof(struct mxb), GFP_KERNEL);
230 if (mxb == NULL) {
236 snprintf(mxb->i2c_adapter.name, sizeof(mxb->i2c_adapter.name), "mxb%d", mxb_num);
238 saa7146_i2c_adapter_prepare(dev, &mxb->i2c_adapter, SAA7146_I2C_BUS_BIT_RATE_480);
239 if (i2c_add_adapter(&mxb->i2c_adapter) < 0) {
241 kfree(mxb);
245 mxb->saa7111a = v4l2_i2c_new_subdev(&dev->v4l2_dev, &mxb->i2c_adapter,
247 mxb->tea6420_1 = v4l2_i2c_new_subdev(&dev->v4l2_dev, &mxb->i2c_adapter,
249 mxb->tea6420_2 = v4l2_i2c_new_subdev(&dev->v4l2_dev, &mxb->i2c_adapter,
251 mxb->tea6415c = v4l2_i2c_new_subdev(&dev->v4l2_dev, &mxb->i2c_adapter,
253 mxb->tda9840 = v4l2_i2c_new_subdev(&dev->v4l2_dev, &mxb->i2c_adapter,
255 mxb->tuner = v4l2_i2c_new_subdev(&dev->v4l2_dev, &mxb->i2c_adapter,
259 if (!mxb->tea6420_1 || !mxb->tea6420_2 || !mxb->tea6415c ||
260 !mxb->tda9840 || !mxb->saa7111a || !mxb->tuner) {
262 i2c_del_adapter(&mxb->i2c_adapter);
263 kfree(mxb);
270 dev->ext_priv = mxb;
339 struct mxb* mxb = (struct mxb*)dev->ext_priv;
347 tea6420_route(mxb, 6);
350 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);
516 mxb->video_dev.tvnorms = mxb_inputs[input].std;
517 mxb->vbi_dev.tvnorms = mxb_inputs[input].std;
520 if (saa7111a_call(mxb, video, s_routing, i, SAA7111_FMT_CCIR, 0))
523 mxb->cur_audinput = video_audio_connect[input];
525 if (0 == mxb->cur_mute)
526 tea6420_route(mxb, mxb->cur_audinput);
527 if (mxb->cur_audinput == 0)
528 mxb_update_audmode(mxb);
536 struct mxb *mxb = (struct mxb *)dev->ext_priv;
551 t->audmode = mxb->cur_mode;
558 struct mxb *mxb = (struct mxb *)dev->ext_priv;
566 mxb->cur_mode = t->audmode;
580 struct mxb *mxb = (struct mxb *)dev->ext_priv;
584 *f = mxb->cur_freq;
586 DEB_EE("VIDIOC_G_FREQ: freq:0x%08x\n", mxb->cur_freq.frequency);
593 struct mxb *mxb = (struct mxb *)dev->ext_priv;
601 DEB_EE("VIDIOC_S_FREQUENCY: freq:0x%08x\n", mxb->cur_freq.frequency);
604 tuner_call(mxb, tuner, s_frequency, f);
606 mxb->cur_freq = *f;
607 tuner_call(mxb, tuner, g_frequency, &mxb->cur_freq);
608 if (mxb->cur_audinput == 0)
609 mxb_update_audmode(mxb);
624 struct mxb *mxb = (struct mxb *)dev->ext_priv;
627 *a = mxb_audios[mxb->cur_audinput];
634 struct mxb *mxb = (struct mxb *)dev->ext_priv;
638 !(mxb_inputs[mxb->cur_input].audioset & (1 << a->index)))
641 if (mxb->cur_audinput != a->index) {
642 mxb->cur_audinput = a->index;
643 tea6420_route(mxb, a->index);
644 if (mxb->cur_audinput == 0)
645 mxb_update_audmode(mxb);
678 struct mxb *mxb;
693 mxb = (struct mxb *)dev->ext_priv;
721 if (saa7146_register_device(&mxb->video_dev, dev, "mxb", VFL_TYPE_VIDEO)) {
729 if (saa7146_register_device(&mxb->vbi_dev, dev, "mxb", VFL_TYPE_VBI)) {
743 struct mxb *mxb = (struct mxb *)dev->ext_priv;
748 tea6420_route(mxb, 6);
750 saa7146_unregister_device(&mxb->video_dev,dev);
752 saa7146_unregister_device(&mxb->vbi_dev, dev);
757 i2c_del_adapter(&mxb->i2c_adapter);
758 kfree(mxb);
765 struct mxb *mxb = (struct mxb *)dev->ext_priv;
770 DEB_D("VIDIOC_S_STD: setting mxb for PAL_I\n");
773 saa7111a_call(mxb, core, s_gpio, 0);
774 saa7111a_call(mxb, video, s_std, std);
775 if (mxb->cur_input == 0)
776 tuner_call(mxb, video, s_std, std);
780 if (mxb->cur_input)
782 DEB_D("VIDIOC_S_STD: setting mxb for PAL/NTSC/SECAM\n");
785 saa7111a_call(mxb, core, s_gpio, 1);
786 saa7111a_call(mxb, video, s_std, std);
787 if (mxb->cur_input == 0)
788 tuner_call(mxb, video, s_std, std);
817 static struct saa7146_pci_extension_data mxb = {
828 .driver_data = (unsigned long)&mxb,