linux/drivers/media/pci/pt3/pt3.c

// SPDX-License-Identifier: GPL-2.0
/*
 * Earthsoft PT3 driver
 *
 * Copyright (C) 2014 Akihiro Tsukada <[email protected]>
 */

#include <linux/freezer.h>
#include <linux/kernel.h>
#include <linux/kthread.h>
#include <linux/mutex.h>
#include <linux/module.h>
#include <linux/pci.h>
#include <linux/string.h>
#include <linux/sched/signal.h>

#include <media/dmxdev.h>
#include <media/dvbdev.h>
#include <media/dvb_demux.h>
#include <media/dvb_frontend.h>

#include "pt3.h"

DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr);

static bool one_adapter;
module_param(one_adapter, bool, 0444);
MODULE_PARM_DESC();

static int num_bufs =;
module_param(num_bufs, int, 0444);
MODULE_PARM_DESC();


static const struct i2c_algorithm pt3_i2c_algo =;

static const struct pt3_adap_config adap_conf[PT3_NUM_FE] =;


struct reg_val {};

static int
pt3_demod_write(struct pt3_adapter *adap, const struct reg_val *data, int num)
{}

static inline void pt3_lnb_ctrl(struct pt3_board *pt3, bool on)
{}

static inline struct pt3_adapter *pt3_find_adapter(struct dvb_frontend *fe)
{}

/*
 * all 4 tuners in PT3 are packaged in a can module (Sharp VA4M6JC2103).
 * it seems that they share the power lines and Amp power line and
 * adaps[3] controls those powers.
 */
static int
pt3_set_tuner_power(struct pt3_board *pt3, bool tuner_on, bool amp_on)
{}

static int pt3_set_lna(struct dvb_frontend *fe)
{}

static int pt3_set_voltage(struct dvb_frontend *fe, enum fe_sec_voltage volt)
{}

/* register values used in pt3_fe_init() */

static const struct reg_val init0_sat[] =;
static const struct reg_val init0_ter[] =;
static const struct reg_val cfg_sat[] =;
static const struct reg_val cfg_ter[] =;

/*
 * pt3_fe_init: initialize demod sub modules and ISDB-T tuners all at once.
 *
 * As for demod IC (TC90522) and ISDB-T tuners (MxL301RF),
 * the i2c sequences for init'ing them are not public and hidden in a ROM,
 * and include the board specific configurations as well.
 * They are stored in a lump and cannot be taken out / accessed separately,
 * thus cannot be moved to the FE/tuner driver.
 */
static int pt3_fe_init(struct pt3_board *pt3)
{}


static int pt3_attach_fe(struct pt3_board *pt3, int i)
{}


static int pt3_fetch_thread(void *data)
{}

static int pt3_start_streaming(struct pt3_adapter *adap)
{}

static int pt3_stop_streaming(struct pt3_adapter *adap)
{}

static int pt3_start_feed(struct dvb_demux_feed *feed)
{}

static int pt3_stop_feed(struct dvb_demux_feed *feed)
{}


static int pt3_alloc_adapter(struct pt3_board *pt3, int index)
{}

static void pt3_cleanup_adapter(struct pt3_board *pt3, int index)
{}

#ifdef CONFIG_PM_SLEEP

static int pt3_suspend(struct device *dev)
{}

static int pt3_resume(struct device *dev)
{}

#endif /* CONFIG_PM_SLEEP */


static void pt3_remove(struct pci_dev *pdev)
{}

static int pt3_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
{}

static const struct pci_device_id pt3_id_table[] =;
MODULE_DEVICE_TABLE(pci, pt3_id_table);

static SIMPLE_DEV_PM_OPS(pt3_pm_ops, pt3_suspend, pt3_resume);

static struct pci_driver pt3_driver =;

module_pci_driver();

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