linux/drivers/media/pci/ttpci/budget-ci.c

// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * budget-ci.ko: driver for the SAA7146 based Budget DVB cards
 *               with CI (but without analog video input)
 *
 * Compiled from various sources by Michael Hunold <[email protected]>
 *
 *     msp430 IR support contributed by Jack Thomasson <[email protected]>
 *     partially based on the Siemens DVB driver by Ralph+Marcus Metzler
 *
 * CI interface support (c) 2004 Andrew de Quincey <[email protected]>
 *
 * the project's page is at https://linuxtv.org
 */

#include <linux/module.h>
#include <linux/errno.h>
#include <linux/slab.h>
#include <linux/interrupt.h>
#include <linux/spinlock.h>
#include <linux/workqueue.h>
#include <media/rc-core.h>

#include "budget.h"

#include <media/dvb_ca_en50221.h>
#include "stv0299.h"
#include "stv0297.h"
#include "tda1004x.h"
#include "stb0899_drv.h"
#include "stb0899_reg.h"
#include "stb0899_cfg.h"
#include "stb6100.h"
#include "stb6100_cfg.h"
#include "lnbp21.h"
#include "bsbe1.h"
#include "bsru6.h"
#include "tda1002x.h"
#include "tda827x.h"
#include "bsbe1-d01a.h"

#define MODULE_NAME

/*
 * Regarding DEBIADDR_IR:
 * Some CI modules hang if random addresses are read.
 * Using address 0x4000 for the IR read means that we
 * use the same address as for CI version, which should
 * be a safe default.
 */
#define DEBIADDR_IR
#define DEBIADDR_CICONTROL
#define DEBIADDR_CIVERSION
#define DEBIADDR_IO
#define DEBIADDR_ATTR

#define CICONTROL_RESET
#define CICONTROL_ENABLETS
#define CICONTROL_CAMDETECT

#define DEBICICTL
#define DEBICICAM

#define SLOTSTATUS_NONE
#define SLOTSTATUS_PRESENT
#define SLOTSTATUS_RESET
#define SLOTSTATUS_READY
#define SLOTSTATUS_OCCUPIED

/* RC5 device wildcard */
#define IR_DEVICE_ANY

static int rc5_device =;
module_param(rc5_device, int, 0644);
MODULE_PARM_DESC();

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

DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr);

struct budget_ci_ir {};

struct budget_ci {};

static void msp430_ir_interrupt(struct work_struct *t)
{}

static int msp430_ir_init(struct budget_ci *budget_ci)
{}

static void msp430_ir_deinit(struct budget_ci *budget_ci)
{}

static int ciintf_read_attribute_mem(struct dvb_ca_en50221 *ca, int slot, int address)
{}

static int ciintf_write_attribute_mem(struct dvb_ca_en50221 *ca, int slot, int address, u8 value)
{}

static int ciintf_read_cam_control(struct dvb_ca_en50221 *ca, int slot, u8 address)
{}

static int ciintf_write_cam_control(struct dvb_ca_en50221 *ca, int slot, u8 address, u8 value)
{}

static int ciintf_slot_reset(struct dvb_ca_en50221 *ca, int slot)
{}

static int ciintf_slot_shutdown(struct dvb_ca_en50221 *ca, int slot)
{}

static int ciintf_slot_ts_enable(struct dvb_ca_en50221 *ca, int slot)
{}

static void ciintf_interrupt(struct work_struct *t)
{}

static int ciintf_poll_slot_status(struct dvb_ca_en50221 *ca, int slot, int open)
{}

static int ciintf_init(struct budget_ci *budget_ci)
{}

static void ciintf_deinit(struct budget_ci *budget_ci)
{}

static void budget_ci_irq(struct saa7146_dev *dev, u32 *isr)
{}

static u8 philips_su1278_tt_inittab[] =;

static int philips_su1278_tt_set_symbol_rate(struct dvb_frontend *fe, u32 srate, u32 ratio)
{}

static int philips_su1278_tt_tuner_set_params(struct dvb_frontend *fe)
{}

static const struct stv0299_config philips_su1278_tt_config =;



static int philips_tdm1316l_tuner_init(struct dvb_frontend *fe)
{}

static int philips_tdm1316l_tuner_set_params(struct dvb_frontend *fe)
{}

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

static struct tda1004x_config philips_tdm1316l_config =;

static struct tda1004x_config philips_tdm1316l_config_invert =;

static int dvbc_philips_tdm1316l_tuner_set_params(struct dvb_frontend *fe)
{}

static u8 dvbc_philips_tdm1316l_inittab[] =;

static struct stv0297_config dvbc_philips_tdm1316l_config =;

static struct tda10023_config tda10023_config =;

static struct tda827x_config tda827x_config =;

/* TT S2-3200 DVB-S (STB0899) Inittab */
static const struct stb0899_s1_reg tt3200_stb0899_s1_init_1[] =;

static const struct stb0899_s1_reg tt3200_stb0899_s1_init_3[] =;

static struct stb0899_config tt3200_config =;

static struct stb6100_config tt3200_stb6100_config =;

static void frontend_init(struct budget_ci *budget_ci)
{}

static int budget_ci_attach(struct saa7146_dev *dev, struct saa7146_pci_extension_data *info)
{}

static int budget_ci_detach(struct saa7146_dev *dev)
{}

static struct saa7146_extension budget_extension;

MAKE_BUDGET_INFO();
MAKE_BUDGET_INFO();
MAKE_BUDGET_INFO();
MAKE_BUDGET_INFO();
MAKE_BUDGET_INFO();
MAKE_BUDGET_INFO();
MAKE_BUDGET_INFO();
MAKE_BUDGET_INFO();

static const struct pci_device_id pci_tbl[] =;

MODULE_DEVICE_TABLE(pci, pci_tbl);

static struct saa7146_extension budget_extension =;

static int __init budget_ci_init(void)
{}

static void __exit budget_ci_exit(void)
{}

module_init();
module_exit(budget_ci_exit);

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