linux/drivers/media/pci/saa7146/mxb.c

// SPDX-License-Identifier: GPL-2.0-or-later
/*
    mxb - v4l2 driver for the Multimedia eXtension Board

    Copyright (C) 1998-2006 Michael Hunold <[email protected]>

    Visit http://www.themm.net/~mihu/linux/saa7146/mxb.html
    for further details about this card.

*/

#define pr_fmt(fmt)

#define DEBUG_VARIABLE

#include <media/drv-intf/saa7146_vv.h>
#include <media/tuner.h>
#include <media/v4l2-common.h>
#include <media/i2c/saa7115.h>
#include <linux/module.h>
#include <linux/kernel.h>

#include "tea6415c.h"
#include "tea6420.h"

#define MXB_AUDIOS

#define I2C_SAA7111A
#define I2C_TDA9840
#define I2C_TEA6415C
#define I2C_TEA6420_1
#define I2C_TEA6420_2
#define I2C_TUNER

#define MXB_BOARD_CAN_DO_VBI(dev)

/* global variable */
static int mxb_num;

/* initial frequence the tuner will be tuned to.
   in verden (lower saxony, germany) 4148 is a
   channel called "phoenix" */
static int freq =;
module_param(freq, int, 0644);
MODULE_PARM_DESC();

static int debug;
module_param(debug, int, 0644);
MODULE_PARM_DESC();

#define MXB_STD
#define MXB_INPUTS
enum {};

static struct v4l2_input mxb_inputs[MXB_INPUTS] =;

/* this array holds the information, which port of the saa7146 each
   input actually uses. the mxb uses port 0 for every input */
static struct {} input_port_selection[MXB_INPUTS] =;

/* this array holds the information of the audio source (mxb_audios),
   which has to be switched corresponding to the video source (mxb_channels) */
static int video_audio_connect[MXB_INPUTS] =;

struct mxb_routing {};

/* these are the available audio sources, which can switched
   to the line- and cd-output individually */
static struct v4l2_audio mxb_audios[MXB_AUDIOS] =;

/* These are the necessary input-output-pins for bringing one audio source
   (see above) to the CD-output. Note that gain is set to 0 in this table. */
static struct mxb_routing TEA6420_cd[MXB_AUDIOS + 1][2] =;

/* These are the necessary input-output-pins for bringing one audio source
   (see above) to the line-output. Note that gain is set to 0 in this table. */
static struct mxb_routing TEA6420_line[MXB_AUDIOS + 1][2] =;

struct mxb
{};

#define saa7111a_call(mxb, o, f, args...)
#define tda9840_call(mxb, o, f, args...)
#define tea6415c_call(mxb, o, f, args...)
#define tuner_call(mxb, o, f, args...)
#define call_all(dev, o, f, args...)

static void mxb_update_audmode(struct mxb *mxb)
{}

static inline void tea6420_route(struct mxb *mxb, int idx)
{}

static struct saa7146_extension extension;

static int mxb_s_ctrl(struct v4l2_ctrl *ctrl)
{}

static const struct v4l2_ctrl_ops mxb_ctrl_ops =;

static int mxb_probe(struct saa7146_dev *dev)
{}

/* some init data for the saa7740, the so-called 'sound arena module'.
   there are no specs available, so we simply use some init values */
static struct {} mxb_saa7740_init[] =;

/* bring hardware to a sane state. this has to be done, just in case someone
   wants to capture from this device before it has been properly initialized.
   the capture engine would badly fail, because no valid signal arrives on the
   saa7146, thus leading to timeouts and stuff. */
static int mxb_init_done(struct saa7146_dev* dev)
{}

/* interrupt-handler. this gets called when irq_mask is != 0.
   it must clear the interrupt-bits in irq_mask it has handled */
/*
void mxb_irq_bh(struct saa7146_dev* dev, u32* irq_mask)
{
	struct mxb* mxb = (struct mxb*)dev->ext_priv;
}
*/

static int vidioc_enum_input(struct file *file, void *fh, struct v4l2_input *i)
{}

static int vidioc_g_input(struct file *file, void *fh, unsigned int *i)
{}

static int vidioc_s_input(struct file *file, void *fh, unsigned int input)
{}

static int vidioc_g_tuner(struct file *file, void *fh, struct v4l2_tuner *t)
{}

static int vidioc_s_tuner(struct file *file, void *fh, const struct v4l2_tuner *t)
{}

static int vidioc_querystd(struct file *file, void *fh, v4l2_std_id *norm)
{}

static int vidioc_g_frequency(struct file *file, void *fh, struct v4l2_frequency *f)
{}

static int vidioc_s_frequency(struct file *file, void *fh, const struct v4l2_frequency *f)
{}

static int vidioc_enumaudio(struct file *file, void *fh, struct v4l2_audio *a)
{}

static int vidioc_g_audio(struct file *file, void *fh, struct v4l2_audio *a)
{}

static int vidioc_s_audio(struct file *file, void *fh, const struct v4l2_audio *a)
{}

#ifdef CONFIG_VIDEO_ADV_DEBUG
static int vidioc_g_register(struct file *file, void *fh, struct v4l2_dbg_register *reg)
{}

static int vidioc_s_register(struct file *file, void *fh, const struct v4l2_dbg_register *reg)
{}
#endif

static struct saa7146_ext_vv vv_data;

/* this function only gets called when the probing was successful */
static int mxb_attach(struct saa7146_dev *dev, struct saa7146_pci_extension_data *info)
{}

static int mxb_detach(struct saa7146_dev *dev)
{}

static int std_callback(struct saa7146_dev *dev, struct saa7146_standard *standard)
{}

static struct saa7146_standard standard[] =;

static struct saa7146_pci_extension_data mxb =;

static const struct pci_device_id pci_tbl[] =;

MODULE_DEVICE_TABLE(pci, pci_tbl);

static struct saa7146_ext_vv vv_data =;

static struct saa7146_extension extension =;

static int __init mxb_init_module(void)
{}

static void __exit mxb_cleanup_module(void)
{}

module_init();
module_exit(mxb_cleanup_module);

MODULE_DESCRIPTION();
MODULE_AUTHOR();
MODULE_LICENSE();