1
0
mirror of https://github.com/DigitalDevices/dddvb.git synced 2023-10-10 13:37:43 +02:00

ddbridge/octonet: compile modules from object referenced in Kbuild

This changes building ddbridge.ko and octonet.ko from including multiple
C files right from the source code to building all of them separately
into their own objects, and build the actual kernel module from these
objects.

Accomplished by:
- rename of ddbridge.c to ddbridge-main.c and octonet. to octonet-main.c
- rename of ddbridge-mod.c to ddbridge-modulator.c
- add all C files to Kbuild and prepare Kbuild for this way of building
  the modules
- add all neccessary annotations and includes
This commit is contained in:
Daniel Scheller 2017-07-10 18:02:59 +02:00
parent 933779aa24
commit 220354bc78
8 changed files with 218 additions and 85 deletions

View File

@ -1,8 +1,11 @@
EXTRA_CFLAGS += -DCONFIG_DVB_CXD2843 -DCONFIG_DVB_LNBP21 -DCONFIG_DVB_STV090x -DCONFIG_DVB_STV6110x -DCONFIG_DVB_DRXK -DCONFIG_DVB_STV0910 -DCONFIG_DVB_STV6111 -DCONFIG_DVB_LNBH25 -DCONFIG_DVB_MXL5XX
ddbridge-objs := ddbridge-main.o ddbridge-core.o ddbridge-i2c.o ddbridge-modulator.o ddbridge-ns.o
octonet-objs := octonet-main.o ddbridge-core.o ddbridge-i2c.o ddbridge-modulator.o ddbridge-ns.o
obj-$(CONFIG_DVB_DDBRIDGE) += ddbridge.o
obj-$(CONFIG_DVB_OCTONET) += octonet.o
EXTRA_CFLAGS += -Idrivers/media/dvb/frontends -Idrivers/media/dvb-frontends
EXTRA_CFLAGS += -Idrivers/media/common/tuners
NOSTDINC_FLAGS += -I$(SUBDIRS)/frontends -I$(SUBDIRS)/include -I$(SUBDIRS)/dvb-core
NOSTDINC_FLAGS += -I$(SUBDIRS)/frontends -I$(SUBDIRS)/include -I$(SUBDIRS)/dvb-core

View File

@ -24,6 +24,37 @@
* Or, point your browser to http://www.gnu.org/copyleft/gpl.html
*/
#include <linux/module.h>
#include <linux/init.h>
#include <linux/interrupt.h>
#include <linux/delay.h>
#include <linux/slab.h>
#include <linux/poll.h>
#include <linux/io.h>
#include <linux/pci.h>
#include <linux/pci_ids.h>
#include <linux/timer.h>
#include <linux/i2c.h>
#include <linux/swab.h>
#include <linux/vmalloc.h>
#include "ddbridge.h"
#include "ddbridge-regs.h"
#include "tda18271c2dd.h"
#include "stv6110x.h"
#include "stv090x.h"
#include "lnbh24.h"
#include "drxk.h"
#include "stv0367dd.h"
#include "tda18212dd.h"
#include "cxd2843.h"
#include "cxd2099.h"
#include "stv0910.h"
#include "stv6111.h"
#include "lnbh25.h"
#include "mxl5xx.h"
DEFINE_MUTEX(redirect_lock);
static int ci_bitrate = 70000;
@ -79,11 +110,6 @@ static struct ddb *ddbs[DDB_MAX_ADAPTER];
DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr);
#include "ddbridge-mod.c"
#include "ddbridge-i2c.c"
#include "ddbridge-ns.c"
/****************************************************************************/
/****************************************************************************/
/****************************************************************************/
@ -134,13 +160,13 @@ static struct ddb_regset octopus_sdr_output = {
/****************************************************************************/
static struct ddb_regset octopus_input = {
struct ddb_regset octopus_input = {
.base = 0x200,
.num = 0x08,
.size = 0x10,
};
static struct ddb_regset octopus_output = {
struct ddb_regset octopus_output = {
.base = 0x280,
.num = 0x08,
.size = 0x10,
@ -170,13 +196,13 @@ static struct ddb_regset octopus_odma_buf = {
.size = 0x100,
};
static struct ddb_regset octopus_i2c = {
struct ddb_regset octopus_i2c = {
.base = 0x80,
.num = 0x04,
.size = 0x20,
};
static struct ddb_regset octopus_i2c_buf = {
struct ddb_regset octopus_i2c_buf = {
.base = 0x1000,
.num = 0x04,
.size = 0x200,
@ -242,7 +268,7 @@ static struct ddb_regset octopro_gtl = {
/****************************************************************************/
static struct ddb_regmap octopus_map = {
struct ddb_regmap octopus_map = {
.irq_version = 1,
.irq_base_i2c = 0,
.irq_base_idma = 8,
@ -257,7 +283,7 @@ static struct ddb_regmap octopus_map = {
.output = &octopus_output,
};
static struct ddb_regmap octopro_map = {
struct ddb_regmap octopro_map = {
.irq_version = 2,
.irq_base_i2c = 32,
.irq_base_idma = 64,
@ -274,7 +300,7 @@ static struct ddb_regmap octopro_map = {
.gtl = &octopro_gtl,
};
static struct ddb_regmap octopro_hdin_map = {
struct ddb_regmap octopro_hdin_map = {
.irq_version = 2,
.irq_base_i2c = 32,
.irq_base_idma = 64,
@ -289,7 +315,7 @@ static struct ddb_regmap octopro_hdin_map = {
.output = &octopro_output,
};
static struct ddb_regmap octopus_mod_map = {
struct ddb_regmap octopus_mod_map = {
.irq_version = 1,
.irq_base_odma = 8,
.irq_base_rate = 18,
@ -299,7 +325,7 @@ static struct ddb_regmap octopus_mod_map = {
.channel = &octopus_mod_channel,
};
static struct ddb_regmap octopus_mod_2_map = {
struct ddb_regmap octopus_mod_2_map = {
.irq_version = 2,
.irq_base_odma = 64,
.irq_base_rate = 32,
@ -309,7 +335,7 @@ static struct ddb_regmap octopus_mod_2_map = {
.channel = &octopus_mod_2_channel,
};
static struct ddb_regmap octopus_sdr_map = {
struct ddb_regmap octopus_sdr_map = {
.irq_version = 2,
.irq_base_odma = 64,
.irq_base_rate = 32,
@ -322,7 +348,7 @@ static struct ddb_regmap octopus_sdr_map = {
/****************************************************************************/
static struct ddb_info ddb_s2_48 = {
struct ddb_info ddb_s2_48 = {
.type = DDB_OCTOPUS_MAX,
.name = "Digital Devices MAX S8 4/8",
.regmap = &octopus_map,
@ -332,7 +358,7 @@ static struct ddb_info ddb_s2_48 = {
.tempmon_irq = 24,
};
static struct ddb_info ddb_ct2_8 = {
struct ddb_info ddb_ct2_8 = {
.type = DDB_OCTOPUS_MAX_CT,
.name = "Digital Devices MAX A8 CT2",
.regmap = &octopus_map,
@ -344,7 +370,7 @@ static struct ddb_info ddb_ct2_8 = {
.tempmon_irq = 24,
};
static struct ddb_info ddb_c2t2_8 = {
struct ddb_info ddb_c2t2_8 = {
.type = DDB_OCTOPUS_MAX_CT,
.name = "Digital Devices MAX A8 C2T2",
.regmap = &octopus_map,
@ -356,7 +382,7 @@ static struct ddb_info ddb_c2t2_8 = {
.tempmon_irq = 24,
};
static struct ddb_info ddb_isdbt_8 = {
struct ddb_info ddb_isdbt_8 = {
.type = DDB_OCTOPUS_MAX_CT,
.name = "Digital Devices MAX A8 ISDBT",
.regmap = &octopus_map,
@ -368,7 +394,7 @@ static struct ddb_info ddb_isdbt_8 = {
.tempmon_irq = 24,
};
static struct ddb_info ddb_c2t2i_v0_8 = {
struct ddb_info ddb_c2t2i_v0_8 = {
.type = DDB_OCTOPUS_MAX_CT,
.name = "Digital Devices MAX A8 C2T2I V0",
.regmap = &octopus_map,
@ -380,7 +406,7 @@ static struct ddb_info ddb_c2t2i_v0_8 = {
.tempmon_irq = 24,
};
static struct ddb_info ddb_c2t2i_8 = {
struct ddb_info ddb_c2t2i_8 = {
.type = DDB_OCTOPUS_MAX_CT,
.name = "Digital Devices MAX A8 C2T2I",
.regmap = &octopus_map,
@ -597,7 +623,7 @@ static int dma_alloc(struct pci_dev *pdev, struct ddb_dma *dma, int dir)
return 0;
}
static int ddb_buffers_alloc(struct ddb *dev)
int ddb_buffers_alloc(struct ddb *dev)
{
int i;
struct ddb_port *port;
@ -635,7 +661,7 @@ static int ddb_buffers_alloc(struct ddb *dev)
return 0;
}
static void ddb_buffers_free(struct ddb *dev)
void ddb_buffers_free(struct ddb *dev)
{
int i;
struct ddb_port *port;
@ -848,7 +874,7 @@ static void ddb_input_start(struct ddb_input *input)
}
static int ddb_dvb_ns_input_start(struct ddb_input *input)
int ddb_dvb_ns_input_start(struct ddb_input *input)
{
struct ddb_dvb *dvb = &input->port->dvb[input->nr & 1];
@ -858,7 +884,7 @@ static int ddb_dvb_ns_input_start(struct ddb_input *input)
return ++dvb->users;
}
static int ddb_dvb_ns_input_stop(struct ddb_input *input)
int ddb_dvb_ns_input_stop(struct ddb_input *input)
{
struct ddb_dvb *dvb = &input->port->dvb[input->nr & 1];
@ -3133,7 +3159,7 @@ static int ddb_port_attach(struct ddb_port *port)
return ret;
}
static int ddb_ports_attach(struct ddb *dev)
int ddb_ports_attach(struct ddb *dev)
{
int i, ret = 0;
struct ddb_port *port;
@ -3161,7 +3187,7 @@ static int ddb_ports_attach(struct ddb *dev)
return ret;
}
static void ddb_ports_detach(struct ddb *dev)
void ddb_ports_detach(struct ddb *dev)
{
int i;
struct ddb_port *port;
@ -3471,7 +3497,7 @@ static int ddb_port_match_link_i2c(struct ddb_port *port)
return 0;
}
static void ddb_ports_init(struct ddb *dev)
void ddb_ports_init(struct ddb *dev)
{
u32 i, l, p;
struct ddb_port *port;
@ -3564,7 +3590,7 @@ static void ddb_ports_init(struct ddb *dev)
dev->port_num = p;
}
static void ddb_ports_release(struct ddb *dev)
void ddb_ports_release(struct ddb *dev)
{
int i;
struct ddb_port *port;
@ -3661,7 +3687,7 @@ static void irq_handle_io(struct ddb *dev, u32 s)
}
}
static irqreturn_t irq_handler0(int irq, void *dev_id)
irqreturn_t irq_handler0(int irq, void *dev_id)
{
struct ddb *dev = (struct ddb *) dev_id;
u32 s = ddbreadl(dev, INTERRUPT_STATUS);
@ -3678,7 +3704,7 @@ static irqreturn_t irq_handler0(int irq, void *dev_id)
return IRQ_HANDLED;
}
static irqreturn_t irq_handler1(int irq, void *dev_id)
irqreturn_t irq_handler1(int irq, void *dev_id)
{
struct ddb *dev = (struct ddb *) dev_id;
u32 s = ddbreadl(dev, INTERRUPT_STATUS);
@ -3695,7 +3721,7 @@ static irqreturn_t irq_handler1(int irq, void *dev_id)
return IRQ_HANDLED;
}
static irqreturn_t irq_handler(int irq, void *dev_id)
irqreturn_t irq_handler(int irq, void *dev_id)
{
struct ddb *dev = (struct ddb *) dev_id;
u32 s = ddbreadl(dev, INTERRUPT_STATUS);
@ -3721,7 +3747,7 @@ static irqreturn_t irq_handler(int irq, void *dev_id)
return ret;
}
static irqreturn_t irq_handle_v2_n(struct ddb *dev, u32 n)
irqreturn_t irq_handle_v2_n(struct ddb *dev, u32 n)
{
u32 reg = INTERRUPT_V2_STATUS + 4 * n;
u32 s = ddbreadl(dev, reg);
@ -3774,7 +3800,7 @@ static irqreturn_t irq_handle_v2_n(struct ddb *dev, u32 n)
return IRQ_HANDLED;
}
static irqreturn_t irq_handler_v2(int irq, void *dev_id)
irqreturn_t irq_handler_v2(int irq, void *dev_id)
{
struct ddb *dev = (struct ddb *) dev_id;
u32 s = 0xffff & ddbreadl(dev, INTERRUPT_V2_STATUS);
@ -3802,7 +3828,7 @@ static irqreturn_t irq_handler_v2(int irq, void *dev_id)
}
#ifdef DDB_TEST_THREADED
static irqreturn_t irq_thread(int irq, void *dev_id)
irqreturn_t irq_thread(int irq, void *dev_id)
{
/* struct ddb *dev = (struct ddb *) dev_id; */
@ -3988,7 +4014,7 @@ static int ddb_nsd_attach(struct ddb *dev)
return ret;
}
static void ddb_nsd_detach(struct ddb *dev)
void ddb_nsd_detach(struct ddb *dev)
{
if (!dev->link[0].info->ns_num)
return;
@ -5004,7 +5030,7 @@ static struct class ddb_class = {
.devnode = ddb_devnode,
};
static int ddb_class_create(void)
int ddb_class_create(void)
{
ddb_major = register_chrdev(0, DDB_NAME, &ddb_fops);
if (ddb_major < 0)
@ -5014,7 +5040,7 @@ static int ddb_class_create(void)
return 0;
}
static void ddb_class_destroy(void)
void ddb_class_destroy(void)
{
class_unregister(&ddb_class);
unregister_chrdev(ddb_major, DDB_NAME);
@ -5082,7 +5108,7 @@ fail:
return -1;
}
static int ddb_device_create(struct ddb *dev)
int ddb_device_create(struct ddb *dev)
{
int res = 0;
@ -5112,7 +5138,7 @@ fail:
return res;
}
static void ddb_device_destroy(struct ddb *dev)
void ddb_device_destroy(struct ddb *dev)
{
if (IS_ERR(dev->ddb_dev))
return;
@ -5404,7 +5430,7 @@ static int ddb_init_boards(struct ddb *dev)
return 0;
}
static int ddb_init(struct ddb *dev)
int ddb_init(struct ddb *dev)
{
mutex_init(&dev->link[0].flash_mutex);
if (no_init) {
@ -5464,7 +5490,7 @@ static void ddb_reset_io(struct ddb *dev, u32 reg)
ddbwritel(dev, 0x00, reg);
}
static void ddb_reset_ios(struct ddb *dev)
void ddb_reset_ios(struct ddb *dev)
{
u32 i;
struct ddb_regmap *rm = dev->link[0].info->regmap;

View File

@ -23,8 +23,27 @@
* Or, point your browser to http://www.gnu.org/copyleft/gpl.html
*/
static int i2c_io(struct i2c_adapter *adapter, u8 adr,
u8 *wbuf, u32 wlen, u8 *rbuf, u32 rlen)
#include <linux/module.h>
#include <linux/init.h>
#include <linux/interrupt.h>
#include <linux/delay.h>
#include <linux/slab.h>
#include <linux/poll.h>
#include <linux/io.h>
#include <linux/pci.h>
#include <linux/pci_ids.h>
#include <linux/timer.h>
#include <linux/i2c.h>
#include <linux/swab.h>
#include <linux/vmalloc.h>
#include "ddbridge.h"
#include "ddbridge-regs.h"
/******************************************************************************/
int i2c_io(struct i2c_adapter *adapter, u8 adr,
u8 *wbuf, u32 wlen, u8 *rbuf, u32 rlen)
{
struct i2c_msg msgs[2] = {{.addr = adr, .flags = 0,
.buf = wbuf, .len = wlen },
@ -33,7 +52,7 @@ static int i2c_io(struct i2c_adapter *adapter, u8 adr,
return (i2c_transfer(adapter, msgs, 2) == 2) ? 0 : -1;
}
static int i2c_write(struct i2c_adapter *adap, u8 adr, u8 *data, int len)
int i2c_write(struct i2c_adapter *adap, u8 adr, u8 *data, int len)
{
struct i2c_msg msg = {.addr = adr, .flags = 0,
.buf = data, .len = len};
@ -41,15 +60,15 @@ static int i2c_write(struct i2c_adapter *adap, u8 adr, u8 *data, int len)
return (i2c_transfer(adap, &msg, 1) == 1) ? 0 : -1;
}
static int i2c_read(struct i2c_adapter *adapter, u8 adr, u8 *val)
int i2c_read(struct i2c_adapter *adapter, u8 adr, u8 *val)
{
struct i2c_msg msgs[1] = {{.addr = adr, .flags = I2C_M_RD,
.buf = val, .len = 1 } };
return (i2c_transfer(adapter, msgs, 1) == 1) ? 0 : -1;
}
static int i2c_read_regs(struct i2c_adapter *adapter,
u8 adr, u8 reg, u8 *val, u8 len)
int i2c_read_regs(struct i2c_adapter *adapter,
u8 adr, u8 reg, u8 *val, u8 len)
{
struct i2c_msg msgs[2] = {{.addr = adr, .flags = 0,
.buf = &reg, .len = 1 },
@ -58,8 +77,8 @@ static int i2c_read_regs(struct i2c_adapter *adapter,
return (i2c_transfer(adapter, msgs, 2) == 2) ? 0 : -1;
}
static int i2c_read_regs16(struct i2c_adapter *adapter,
u8 adr, u16 reg, u8 *val, u8 len)
int i2c_read_regs16(struct i2c_adapter *adapter,
u8 adr, u16 reg, u8 *val, u8 len)
{
u8 reg16[2] = { reg >> 8, reg };
struct i2c_msg msgs[2] = {{.addr = adr, .flags = 0,
@ -69,7 +88,7 @@ static int i2c_read_regs16(struct i2c_adapter *adapter,
return (i2c_transfer(adapter, msgs, 2) == 2) ? 0 : -1;
}
static int i2c_read_reg(struct i2c_adapter *adapter, u8 adr, u8 reg, u8 *val)
int i2c_read_reg(struct i2c_adapter *adapter, u8 adr, u8 reg, u8 *val)
{
struct i2c_msg msgs[2] = {{.addr = adr, .flags = 0,
.buf = &reg, .len = 1},
@ -78,8 +97,8 @@ static int i2c_read_reg(struct i2c_adapter *adapter, u8 adr, u8 reg, u8 *val)
return (i2c_transfer(adapter, msgs, 2) == 2) ? 0 : -1;
}
static int i2c_read_reg16(struct i2c_adapter *adapter, u8 adr,
u16 reg, u8 *val)
int i2c_read_reg16(struct i2c_adapter *adapter, u8 adr,
u16 reg, u8 *val)
{
u8 msg[2] = {reg >> 8, reg & 0xff};
struct i2c_msg msgs[2] = {{.addr = adr, .flags = 0,
@ -89,16 +108,16 @@ static int i2c_read_reg16(struct i2c_adapter *adapter, u8 adr,
return (i2c_transfer(adapter, msgs, 2) == 2) ? 0 : -1;
}
static int i2c_write_reg16(struct i2c_adapter *adap, u8 adr,
u16 reg, u8 val)
int i2c_write_reg16(struct i2c_adapter *adap, u8 adr,
u16 reg, u8 val)
{
u8 msg[3] = {reg >> 8, reg & 0xff, val};
return i2c_write(adap, adr, msg, 3);
}
static int i2c_write_reg(struct i2c_adapter *adap, u8 adr,
u8 reg, u8 val)
int i2c_write_reg(struct i2c_adapter *adap, u8 adr,
u8 reg, u8 val)
{
u8 msg[2] = {reg, val};
@ -202,12 +221,12 @@ static u32 ddb_i2c_functionality(struct i2c_adapter *adap)
return I2C_FUNC_I2C | I2C_FUNC_SMBUS_EMUL;
}
struct i2c_algorithm ddb_i2c_algo = {
static const struct i2c_algorithm ddb_i2c_algo = {
.master_xfer = ddb_i2c_master_xfer,
.functionality = ddb_i2c_functionality,
};
static void ddb_i2c_release(struct ddb *dev)
void ddb_i2c_release(struct ddb *dev)
{
int i;
struct ddb_i2c *i2c;
@ -260,7 +279,7 @@ static int ddb_i2c_add(struct ddb *dev, struct ddb_i2c *i2c,
return i2c_add_adapter(adap);
}
static int ddb_i2c_init(struct ddb *dev)
int ddb_i2c_init(struct ddb *dev)
{
int stat = 0;
u32 i, j, num = 0, l, base;

View File

@ -32,7 +32,7 @@
static struct workqueue_struct *ddb_wq;
static int adapter_alloc;
int adapter_alloc;
module_param(adapter_alloc, int, 0444);
MODULE_PARM_DESC(adapter_alloc,
"0-one adapter per io, 1-one per tab with io, 2-one per tab, 3-one for all");
@ -44,8 +44,6 @@ MODULE_PARM_DESC(msi,
" Control MSI interrupts: 0-disable, 1-enable (default)");
#endif
#include "ddbridge-core.c"
/****************************************************************************/
/****************************************************************************/
/****************************************************************************/

View File

@ -23,8 +23,22 @@
* Or, point your browser to http://www.gnu.org/copyleft/gpl.html
*/
static int ddb_dvb_ns_input_start(struct ddb_input *input);
static int ddb_dvb_ns_input_stop(struct ddb_input *input);
#include <linux/module.h>
#include <linux/init.h>
#include <linux/interrupt.h>
#include <linux/delay.h>
#include <linux/slab.h>
#include <linux/poll.h>
#include <linux/io.h>
#include <linux/pci.h>
#include <linux/pci_ids.h>
#include <linux/timer.h>
#include <linux/i2c.h>
#include <linux/swab.h>
#include <linux/vmalloc.h>
#include "ddbridge.h"
#include "ddbridge-regs.h"
static u16 calc_pcs(struct dvb_ns_params *p)
{
@ -464,7 +478,7 @@ static int ns_stop(struct dvbnss *nss)
return 0;
}
static int netstream_init(struct ddb_input *input)
int netstream_init(struct ddb_input *input)
{
struct ddb_dvb *dvb = &input->port->dvb[input->nr & 1];
struct dvb_adapter *adap = dvb->adap;

View File

@ -76,20 +76,6 @@
#include "dvb_ca_en50221.h"
#include "dvb_net.h"
#include "tda18271c2dd.h"
#include "stv6110x.h"
#include "stv090x.h"
#include "lnbh24.h"
#include "drxk.h"
#include "stv0367dd.h"
#include "tda18212dd.h"
#include "cxd2843.h"
#include "cxd2099.h"
#include "stv0910.h"
#include "stv6111.h"
#include "lnbh25.h"
#include "mxl5xx.h"
#define DDB_MAX_I2C 32
#define DDB_MAX_PORT 32
#define DDB_MAX_INPUT 64
@ -745,9 +731,84 @@ void ddbridge_mod_output_stop(struct ddb_output *output);
int ddbridge_mod_output_start(struct ddb_output *output);
void ddbridge_mod_rate_handler(unsigned long data);
int ddbridge_flashread(struct ddb *dev, u32 link, u8 *buf, u32 addr, u32 len);
/****************************************************************************/
/* ddbridge-main.c (modparams) */
extern int adapter_alloc;
/* ddbridge-core.c */
/* hwmaps */
extern struct ddb_regset octopus_input;
extern struct ddb_regset octopus_output;
extern struct ddb_regset octopus_i2c;
extern struct ddb_regset octopus_i2c_buf;
extern struct ddb_regmap octopus_map;
extern struct ddb_regmap octopro_map;
extern struct ddb_regmap octopro_hdin_map;
extern struct ddb_regmap octopus_mod_map;
extern struct ddb_regmap octopus_mod_2_map;
extern struct ddb_regmap octopus_sdr_map;
extern struct ddb_info ddb_s2_48;
extern struct ddb_info ddb_ct2_8;
extern struct ddb_info ddb_c2t2_8;
extern struct ddb_info ddb_isdbt_8;
extern struct ddb_info ddb_c2t2i_v0_8;
extern struct ddb_info ddb_c2t2i_8;
/* function prototypes */
void ddb_ports_detach(struct ddb *dev);
void ddb_ports_release(struct ddb *dev);
void ddb_buffers_free(struct ddb *dev);
void ddb_device_destroy(struct ddb *dev);
void ddb_ports_init(struct ddb *dev);
int ddb_buffers_alloc(struct ddb *dev);
int ddb_ports_attach(struct ddb *dev);
int ddb_device_create(struct ddb *dev);
int ddb_class_create(void);
void ddb_class_destroy(void);
int ddb_init(struct ddb *dev);
void ddb_reset_ios(struct ddb *dev);
void ddb_nsd_detach(struct ddb *dev);
int ddb_dvb_ns_input_start(struct ddb_input *input);
int ddb_dvb_ns_input_stop(struct ddb_input *input);
irqreturn_t irq_handler0(int irq, void *dev_id);
irqreturn_t irq_handler1(int irq, void *dev_id);
irqreturn_t irq_handler(int irq, void *dev_id);
irqreturn_t irq_handle_v2_n(struct ddb *dev, u32 n);
irqreturn_t irq_handler_v2(int irq, void *dev_id);
#ifdef DDB_TEST_THREADED
irqreturn_t irq_thread(int irq, void *dev_id);
#endif
/* ddbridge-i2c.c */
int i2c_io(struct i2c_adapter *adapter, u8 adr,
u8 *wbuf, u32 wlen, u8 *rbuf, u32 rlen);
int i2c_write(struct i2c_adapter *adap, u8 adr, u8 *data, int len);
int i2c_read(struct i2c_adapter *adapter, u8 adr, u8 *val);
int i2c_read_regs(struct i2c_adapter *adapter,
u8 adr, u8 reg, u8 *val, u8 len);
int i2c_read_regs16(struct i2c_adapter *adapter,
u8 adr, u16 reg, u8 *val, u8 len);
int i2c_read_reg(struct i2c_adapter *adapter, u8 adr, u8 reg, u8 *val);
int i2c_read_reg16(struct i2c_adapter *adapter, u8 adr,
u16 reg, u8 *val);
int i2c_write_reg16(struct i2c_adapter *adap, u8 adr,
u16 reg, u8 val);
int i2c_write_reg(struct i2c_adapter *adap, u8 adr,
u8 reg, u8 val);
void ddb_i2c_release(struct ddb *dev);
int ddb_i2c_init(struct ddb *dev);
/* ddbridge-ns.c */
int netstream_init(struct ddb_input *input);
/****************************************************************************/
#define DDBRIDGE_VERSION "0.9.29"
#endif

View File

@ -23,6 +23,20 @@
* Or, point your browser to http://www.gnu.org/copyleft/gpl.html
*/
#include <linux/module.h>
#include <linux/init.h>
#include <linux/interrupt.h>
#include <linux/delay.h>
#include <linux/slab.h>
#include <linux/poll.h>
#include <linux/io.h>
#include <linux/pci.h>
#include <linux/pci_ids.h>
#include <linux/timer.h>
#include <linux/i2c.h>
#include <linux/swab.h>
#include <linux/vmalloc.h>
#include "ddbridge.h"
#include "ddbridge-regs.h"
#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 6, 0))
@ -31,13 +45,11 @@
#include <linux/pci-dma-compat.h>
#endif
static int adapter_alloc = 3;
int adapter_alloc = 3;
module_param(adapter_alloc, int, 0444);
MODULE_PARM_DESC(adapter_alloc,
"0-one adapter per io, 1-one per tab with io, 2-one per tab, 3-one for all");
#include "ddbridge-core.c"
static struct ddb_regmap octopus_net_map = {
.irq_version = 1,
.irq_base_i2c = 0,