linux/drivers/media/pci/dm1105/dm1105.c

// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * dm1105.c - driver for DVB cards based on SDMC DM1105 PCI chip
 *
 * Copyright (C) 2008 Igor M. Liplianin <[email protected]>
 */

#include <linux/i2c.h>
#include <linux/i2c-algo-bit.h>
#include <linux/init.h>
#include <linux/interrupt.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/pci.h>
#include <linux/dma-mapping.h>
#include <linux/slab.h>
#include <media/rc-core.h>

#include <media/demux.h>
#include <media/dmxdev.h>
#include <media/dvb_demux.h>
#include <media/dvb_frontend.h>
#include <media/dvb_net.h>
#include <media/dvbdev.h>
#include "dvb-pll.h"

#include "stv0299.h"
#include "stv0288.h"
#include "stb6000.h"
#include "si21xx.h"
#include "cx24116.h"
#include "z0194a.h"
#include "ts2020.h"
#include "ds3000.h"

#define MODULE_NAME

#define UNSET

#define DM1105_BOARD_NOAUTO
#define DM1105_BOARD_UNKNOWN
#define DM1105_BOARD_DVBWORLD_2002
#define DM1105_BOARD_DVBWORLD_2004
#define DM1105_BOARD_AXESS_DM05
#define DM1105_BOARD_UNBRANDED_I2C_ON_GPIO

/* ----------------------------------------------- */
/*
 * PCI ID's
 */
#ifndef PCI_VENDOR_ID_TRIGEM
#define PCI_VENDOR_ID_TRIGEM
#endif
#ifndef PCI_VENDOR_ID_AXESS
#define PCI_VENDOR_ID_AXESS
#endif
#ifndef PCI_DEVICE_ID_DM1105
#define PCI_DEVICE_ID_DM1105
#endif
#ifndef PCI_DEVICE_ID_DW2002
#define PCI_DEVICE_ID_DW2002
#endif
#ifndef PCI_DEVICE_ID_DW2004
#define PCI_DEVICE_ID_DW2004
#endif
#ifndef PCI_DEVICE_ID_DM05
#define PCI_DEVICE_ID_DM05
#endif
/* ----------------------------------------------- */
/* sdmc dm1105 registers */

/* TS Control */
#define DM1105_TSCTR
#define DM1105_DTALENTH

/* GPIO Interface */
#define DM1105_GPIOVAL
#define DM1105_GPIOCTR

/* PID serial number */
#define DM1105_PIDN

/* Odd-even secret key select */
#define DM1105_CWSEL

/* Host Command Interface */
#define DM1105_HOST_CTR
#define DM1105_HOST_AD

/* PCI Interface */
#define DM1105_CR
#define DM1105_RST
#define DM1105_STADR
#define DM1105_RLEN
#define DM1105_WRP
#define DM1105_INTCNT
#define DM1105_INTMAK
#define DM1105_INTSTS

/* CW Value */
#define DM1105_ODD
#define DM1105_EVEN

/* PID Value */
#define DM1105_PID

/* IR Control */
#define DM1105_IRCTR
#define DM1105_IRMODE
#define DM1105_SYSTEMCODE
#define DM1105_IRCODE

/* Unknown Values */
#define DM1105_ENCRYPT
#define DM1105_VER

/* I2C Interface */
#define DM1105_I2CCTR
#define DM1105_I2CSTS
#define DM1105_I2CDAT
#define DM1105_I2C_RA
/* ----------------------------------------------- */
/* Interrupt Mask Bits */

#define INTMAK_TSIRQM
#define INTMAK_HIRQM
#define INTMAK_IRM
#define INTMAK_ALLMASK
#define INTMAK_NONEMASK

/* Interrupt Status Bits */
#define INTSTS_TSIRQ
#define INTSTS_HIRQ
#define INTSTS_IR

/* IR Control Bits */
#define DM1105_IR_EN
#define DM1105_SYS_CHK
#define DM1105_REP_FLG

/* EEPROM addr */
#define IIC_24C01_addr
/* Max board count */
#define DM1105_MAX

#define DRIVER_NAME
#define DM1105_I2C_GPIO_NAME

#define DM1105_DMA_PACKETS
#define DM1105_DMA_PACKET_LENGTH
#define DM1105_DMA_BYTES

/*  */
#define GPIO08
#define GPIO13
#define GPIO14
#define GPIO15
#define GPIO16
#define GPIO17
#define GPIO_ALL

/* GPIO's for LNB power control */
#define DM1105_LNB_MASK
#define DM1105_LNB_OFF
#define DM1105_LNB_13V
#define DM1105_LNB_18V

/* GPIO's for LNB power control for Axess DM05 */
#define DM05_LNB_MASK
#define DM05_LNB_OFF
#define DM05_LNB_13V
#define DM05_LNB_18V

/* GPIO's for LNB power control for unbranded with I2C on GPIO */
#define UNBR_LNB_MASK
#define UNBR_LNB_OFF
#define UNBR_LNB_13V
#define UNBR_LNB_18V

static unsigned int card[]  =;
module_param_array();
MODULE_PARM_DESC();

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

static unsigned int dm1105_devcount;

DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr);

struct dm1105_board {};

struct dm1105_subid {};

static const struct dm1105_board dm1105_boards[] =;

static const struct dm1105_subid dm1105_subids[] =;

static void dm1105_card_list(struct pci_dev *pci)
{}

/* infrared remote control */
struct infrared {};

struct dm1105_dev {};

#define dm_io_mem(reg)

#define dm_readb(reg)
#define dm_writeb(reg, value)

#define dm_readw(reg)
#define dm_writew(reg, value)

#define dm_readl(reg)
#define dm_writel(reg, value)

#define dm_andorl(reg, mask, value)

#define dm_setl(reg, bit)
#define dm_clearl(reg, bit)

/* The chip has 18 GPIOs. In HOST mode GPIO's used as 15 bit address lines,
 so we can use only 3 GPIO's from GPIO15 to GPIO17.
 Here I don't check whether HOST is enebled as it is not implemented yet.
 */
static void dm1105_gpio_set(struct dm1105_dev *dev, u32 mask)
{}

static void dm1105_gpio_clear(struct dm1105_dev *dev, u32 mask)
{}

static void dm1105_gpio_andor(struct dm1105_dev *dev, u32 mask, u32 val)
{}

static u32 dm1105_gpio_get(struct dm1105_dev *dev, u32 mask)
{}

static void dm1105_gpio_enable(struct dm1105_dev *dev, u32 mask, int asoutput)
{}

static void dm1105_setline(struct dm1105_dev *dev, u32 line, int state)
{}

static void dm1105_setsda(void *data, int state)
{}

static void dm1105_setscl(void *data, int state)
{}

static int dm1105_getsda(void *data)
{}

static int dm1105_getscl(void *data)
{}

static int dm1105_i2c_xfer(struct i2c_adapter *i2c_adap,
			    struct i2c_msg *msgs, int num)
{}

static u32 functionality(struct i2c_adapter *adap)
{}

static const struct i2c_algorithm dm1105_algo =;

static inline struct dm1105_dev *feed_to_dm1105_dev(struct dvb_demux_feed *feed)
{}

static inline struct dm1105_dev *frontend_to_dm1105_dev(struct dvb_frontend *fe)
{}

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

static void dm1105_set_dma_addr(struct dm1105_dev *dev)
{}

static int dm1105_dma_map(struct dm1105_dev *dev)
{}

static void dm1105_dma_unmap(struct dm1105_dev *dev)
{}

static void dm1105_enable_irqs(struct dm1105_dev *dev)
{}

static void dm1105_disable_irqs(struct dm1105_dev *dev)
{}

static int dm1105_start_feed(struct dvb_demux_feed *f)
{}

static int dm1105_stop_feed(struct dvb_demux_feed *f)
{}

/* ir work handler */
static void dm1105_emit_key(struct work_struct *work)
{}

/* work handler */
static void dm1105_dmx_buffer(struct work_struct *work)
{}

static irqreturn_t dm1105_irq(int irq, void *dev_id)
{}

static int dm1105_ir_init(struct dm1105_dev *dm1105)
{}

static void dm1105_ir_exit(struct dm1105_dev *dm1105)
{}

static int dm1105_hw_init(struct dm1105_dev *dev)
{}

static void dm1105_hw_exit(struct dm1105_dev *dev)
{}

static const struct stv0299_config sharp_z0194a_config =;

static struct stv0288_config earda_config =;

static struct si21xx_config serit_config =;

static struct cx24116_config serit_sp2633_config =;

static struct ds3000_config dvbworld_ds3000_config =;

static struct ts2020_config dvbworld_ts2020_config  =;

static int frontend_init(struct dm1105_dev *dev)
{}

static void dm1105_read_mac(struct dm1105_dev *dev, u8 *mac)
{}

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

static void dm1105_remove(struct pci_dev *pdev)
{}

static const struct pci_device_id dm1105_id_table[] =;

MODULE_DEVICE_TABLE(pci, dm1105_id_table);

static struct pci_driver dm1105_driver =;

module_pci_driver();

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