linux/drivers/media/pci/saa7134/saa7134-dvb.c

// SPDX-License-Identifier: GPL-2.0-or-later
/*
 *
 * (c) 2004 Gerd Knorr <[email protected]> [SuSE Labs]
 *
 *  Extended 3 / 2005 by Hartmut Hackmann to support various
 *  cards with the tda10046 DVB-T channel decoder
 */

#include "saa7134.h"
#include "saa7134-reg.h"

#include <linux/init.h>
#include <linux/list.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/delay.h>
#include <linux/kthread.h>
#include <linux/suspend.h>

#include <media/v4l2-common.h>
#include "dvb-pll.h"
#include <media/dvb_frontend.h>

#include "mt352.h"
#include "mt352_priv.h" /* FIXME */
#include "tda1004x.h"
#include "nxt200x.h"
#include "xc2028.h"
#include "xc5000.h"

#include "tda10086.h"
#include "tda826x.h"
#include "tda827x.h"
#include "isl6421.h"
#include "isl6405.h"
#include "lnbp21.h"
#include "tuner-simple.h"
#include "tda10048.h"
#include "tda18271.h"
#include "lgdt3305.h"
#include "tda8290.h"
#include "mb86a20s.h"
#include "lgs8gxx.h"

#include "zl10353.h"
#include "qt1010.h"

#include "zl10036.h"
#include "zl10039.h"
#include "mt312.h"
#include "s5h1411.h"

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

static unsigned int antenna_pwr;

module_param(antenna_pwr, int, 0444);
MODULE_PARM_DESC();

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

DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr);

/* ------------------------------------------------------------------
 * mt352 based DVB-T cards
 */

static int pinnacle_antenna_pwr(struct saa7134_dev *dev, int on)
{}

static int mt352_pinnacle_init(struct dvb_frontend* fe)
{}

static int mt352_aver777_init(struct dvb_frontend* fe)
{}

static int mt352_avermedia_xc3028_init(struct dvb_frontend *fe)
{}

static int mt352_pinnacle_tuner_set_params(struct dvb_frontend *fe)
{}

static struct mt352_config pinnacle_300i =;

static struct mt352_config avermedia_777 =;

static struct mt352_config avermedia_xc3028_mt352_dev =;

static struct tda18271_std_map mb86a20s_tda18271_std_map =;

static struct tda18271_config kworld_tda18271_config =;

static const struct mb86a20s_config kworld_mb86a20s_config =;

static int kworld_sbtvd_gate_ctrl(struct dvb_frontend* fe, int enable)
{}

/* ==================================================================
 * tda1004x based DVB-T cards, helper functions
 */

static int philips_tda1004x_request_firmware(struct dvb_frontend *fe,
					   const struct firmware **fw, char *name)
{}

/* ------------------------------------------------------------------
 * these tuners are tu1216, td1316(a)
 */

static int philips_tda6651_pll_set(struct dvb_frontend *fe)
{}

static int philips_tu1216_init(struct dvb_frontend *fe)
{}

/* ------------------------------------------------------------------ */

static struct tda1004x_config philips_tu1216_60_config =;

static struct tda1004x_config philips_tu1216_61_config =;

/* ------------------------------------------------------------------ */

static int philips_td1316_tuner_init(struct dvb_frontend *fe)
{}

static int philips_td1316_tuner_set_params(struct dvb_frontend *fe)
{}

static int philips_td1316_tuner_sleep(struct dvb_frontend *fe)
{}

/* ------------------------------------------------------------------ */

static int philips_europa_tuner_init(struct dvb_frontend *fe)
{}

static int philips_europa_tuner_sleep(struct dvb_frontend *fe)
{}

static int philips_europa_demod_sleep(struct dvb_frontend *fe)
{}

static struct tda1004x_config philips_europa_config =;

static struct tda1004x_config medion_cardbus =;

static struct tda1004x_config technotrend_budget_t3000_config =;

/* ------------------------------------------------------------------
 * tda 1004x based cards with philips silicon tuner
 */

static int tda8290_i2c_gate_ctrl( struct dvb_frontend* fe, int enable)
{}

static int philips_tda827x_tuner_init(struct dvb_frontend *fe)
{}

static int philips_tda827x_tuner_sleep(struct dvb_frontend *fe)
{}

static int configure_tda827x_fe(struct saa7134_dev *dev,
				struct tda1004x_config *cdec_conf,
				struct tda827x_config *tuner_conf)
{}

/* ------------------------------------------------------------------ */

static struct tda827x_config tda827x_cfg_0 =;

static struct tda827x_config tda827x_cfg_1 =;

static struct tda827x_config tda827x_cfg_2 =;

static struct tda827x_config tda827x_cfg_2_sw42 =;

/* ------------------------------------------------------------------ */

static struct tda1004x_config tda827x_lifeview_config =;

static struct tda1004x_config philips_tiger_config =;

static struct tda1004x_config cinergy_ht_config =;

static struct tda1004x_config cinergy_ht_pci_config =;

static struct tda1004x_config philips_tiger_s_config =;

static struct tda1004x_config pinnacle_pctv_310i_config =;

static struct tda1004x_config hauppauge_hvr_1110_config =;

static struct tda1004x_config asus_p7131_dual_config =;

static struct tda1004x_config lifeview_trio_config =;

static struct tda1004x_config tevion_dvbt220rf_config =;

static struct tda1004x_config md8800_dvbt_config =;

static struct tda1004x_config asus_p7131_4871_config =;

static struct tda1004x_config asus_p7131_hybrid_lna_config =;

static struct tda1004x_config kworld_dvb_t_210_config =;

static struct tda1004x_config avermedia_super_007_config =;

static struct tda1004x_config twinhan_dtv_dvb_3056_config =;

static struct tda1004x_config asus_tiger_3in1_config =;

static struct tda1004x_config asus_ps3_100_config =;

/* ------------------------------------------------------------------
 * special case: this card uses saa713x GPIO22 for the mode switch
 */

static int ads_duo_tuner_init(struct dvb_frontend *fe)
{}

static int ads_duo_tuner_sleep(struct dvb_frontend *fe)
{}

static struct tda827x_config ads_duo_cfg =;

static struct tda1004x_config ads_tech_duo_config =;

static struct zl10353_config behold_h6_config =;

static struct xc5000_config behold_x7_tunerconfig =;

static struct zl10353_config behold_x7_config =;

static struct zl10353_config videomate_t750_zl10353_config =;

static struct qt1010_config videomate_t750_qt1010_config =;


/* ==================================================================
 * tda10086 based DVB-S cards, helper functions
 */

static struct tda10086_config flydvbs =;

static struct tda10086_config sd1878_4m =;

/* ------------------------------------------------------------------
 * special case: lnb supply is connected to the gated i2c
 */

static int md8800_set_voltage(struct dvb_frontend *fe,
			      enum fe_sec_voltage voltage)
{
	int res = -EIO;
	struct saa7134_dev *dev = fe->dvb->priv;
	if (fe->ops.i2c_gate_ctrl) {
		fe->ops.i2c_gate_ctrl(fe, 1);
		if (dev->original_set_voltage)
			res = dev->original_set_voltage(fe, voltage);
		fe->ops.i2c_gate_ctrl(fe, 0);
	}
	return res;
};

static int md8800_set_high_voltage(struct dvb_frontend *fe, long arg)
{
	int res = -EIO;
	struct saa7134_dev *dev = fe->dvb->priv;
	if (fe->ops.i2c_gate_ctrl) {
		fe->ops.i2c_gate_ctrl(fe, 1);
		if (dev->original_set_high_voltage)
			res = dev->original_set_high_voltage(fe, arg);
		fe->ops.i2c_gate_ctrl(fe, 0);
	}
	return res;
};

static int md8800_set_voltage2(struct dvb_frontend *fe,
			       enum fe_sec_voltage voltage)
{}

static int md8800_set_high_voltage2(struct dvb_frontend *fe, long arg)
{}

/* ==================================================================
 * nxt200x based ATSC cards, helper functions
 */

static const struct nxt200x_config avertvhda180 =;

static const struct nxt200x_config kworldatsc110 =;

/* ------------------------------------------------------------------ */

static struct mt312_config avertv_a700_mt312 =;

static struct zl10036_config avertv_a700_tuner =;

static struct mt312_config zl10313_compro_s350_config =;

static struct mt312_config zl10313_avermedia_a706_config =;

static struct lgdt3305_config hcw_lgdt3305_config =;

static struct tda10048_config hcw_tda10048_config =;

static struct tda18271_std_map hauppauge_tda18271_std_map =;

static struct tda18271_config hcw_tda18271_config =;

static struct tda829x_config tda829x_no_probe =;

static struct tda10048_config zolid_tda10048_config =;

static struct tda18271_config zolid_tda18271_config =;

static struct tda10048_config dtv1000s_tda10048_config =;

static struct tda18271_std_map dtv1000s_tda18271_std_map =;

static struct tda18271_config dtv1000s_tda18271_config =;

static struct lgs8gxx_config prohdtv_pro2_lgs8g75_config =;

static struct tda18271_config prohdtv_pro2_tda18271_config =;

static struct tda18271_std_map kworld_tda18271_std_map =;

static struct tda18271_config kworld_pc150u_tda18271_config =;

static struct s5h1411_config kworld_s5h1411_config =;

static struct tda18271_config hdtv200h_tda18271_config =;

static struct s5h1411_config hdtv200h_s5h1411_config =;


/* ==================================================================
 * Core code
 */

static int dvb_init(struct saa7134_dev *dev)
{}

static int dvb_fini(struct saa7134_dev *dev)
{}

static struct saa7134_mpeg_ops dvb_ops =;

static int __init dvb_register(void)
{}

static void __exit dvb_unregister(void)
{}

module_init();
module_exit(dvb_unregister);