mirror of
https://github.com/DigitalDevices/dddvb.git
synced 2025-03-01 10:35:23 +00:00
adapt to current mainline kernel dvb-core
This commit is contained in:
@@ -3,9 +3,11 @@ EXTRA_CFLAGS += -DCONFIG_DVB_CXD2843 -DCONFIG_DVB_LNBP21 -DCONFIG_DVB_STV090x -D
|
||||
ddbridge-objs = ddbridge-main.o ddbridge-hw.o ddbridge-i2c.o ddbridge-ns.o ddbridge-modulator.o ddbridge-core.o ddbridge-io.o ddbridge-ci.o ddbridge-max.o ddbridge-mci.o ddbridge-sx8.o ddbridge-m4.o dvb_netstream.o
|
||||
octonet-objs = octonet-main.o ddbridge-hw.o ddbridge-i2c.o ddbridge-ns.o ddbridge-modulator.o ddbridge-core.o ddbridge-io.o ddbridge-ci.o ddbridge-max.o ddbridge-mci.o ddbridge-sx8.o ddbridge-m4.o dvb_netstream.o
|
||||
|
||||
obj-$(CONFIG_DVB_DDBRIDGE) += ddbridge.o
|
||||
#mci-objs = ddbridge-mci.o ddbridge-sx8.o ddbridge-m4.o ddbridge-io.o
|
||||
|
||||
obj-$(CONFIG_DVB_DDBRIDGE) += ddbridge.o #mci.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$(KBUILD_EXTMOD)/frontends -I$(KBUILD_EXTMOD)/include -I$(KBUILD_EXTMOD)/dvb-core
|
||||
#EXTRA_CFLAGS += -Idrivers/media/dvb/frontends -Idrivers/media/dvb-frontends
|
||||
#EXTRA_CFLAGS += -Idrivers/media/common/tuners
|
||||
#NOSTDINC_FLAGS += -I$(KBUILD_EXTMOD)/frontends -I$(KBUILD_EXTMOD)/include -I$(KBUILD_EXTMOD)/dvb-core
|
@@ -1,14 +1,15 @@
|
||||
#
|
||||
# Makefile for the ddbridge device driver
|
||||
#
|
||||
#NOSTDINC_FLAGS += -I$(KBUILD_EXTMOD)/include -I$(KBUILD_EXTMOD)/include/linux -I$(KBUILD_EXTMOD)/dvb-frontends -I$(KBUILD_EXTMOD)/tuners
|
||||
|
||||
ddbridge-objs = ddbridge-main.o ddbridge-hw.o ddbridge-i2c.o ddbridge-ns.o ddbridge-modulator.o ddbridge-core.o ddbridge-ci.o ddbridge-max.o ddbridge-mci.o ddbridge-sx8.o ddbridge-m4.o dvb_netstream.o
|
||||
octonet-objs = octonet-main.o ddbridge-hw.o ddbridge-i2c.o ddbridge-ns.o ddbridge-modulator.o ddbridge-core.o ddbridge-ci.o ddbridge-max.o ddbridge-mci.o ddbridge-sx8.o ddbridge-m4.o dvb_netstream.o
|
||||
|
||||
obj-$(CONFIG_DVB_DDBRIDGE) += ddbridge.o
|
||||
|
||||
obj-$(CONFIG_DVB_OCTONET) += octonet.o
|
||||
|
||||
ccflags-y += -Idrivers/media/dvb-core/
|
||||
ccflags-y += -Idrivers/media/dvb-frontends/
|
||||
ccflags-y += -Idrivers/media/tuners/
|
||||
|
||||
#ccflags-y += -Idrivers/media/include/linux/
|
||||
#ccflags-y += -Idrivers/media/dvb-frontends/
|
||||
#ccflags-y += -Idrivers/media/tuners/
|
||||
|
@@ -329,7 +329,7 @@ int ddb_ci_attach(struct ddb_port *port, u32 bitrate)
|
||||
case DDB_CI_EXTERNAL_XO2_B:
|
||||
ci_xo2_attach(port);
|
||||
break;
|
||||
|
||||
|
||||
case DDB_CI_INTERNAL:
|
||||
ci_attach(port);
|
||||
break;
|
||||
|
@@ -24,7 +24,7 @@
|
||||
#include "ddbridge.h"
|
||||
#include "ddbridge-i2c.h"
|
||||
#include "ddbridge-io.h"
|
||||
#include "dvb_net.h"
|
||||
#include <media/dvb_net.h>
|
||||
|
||||
struct workqueue_struct *ddb_wq;
|
||||
|
||||
@@ -103,6 +103,7 @@ struct ddb_irq *ddb_irq_set(struct ddb *dev, u32 link, u32 nr,
|
||||
irq->data = data;
|
||||
return irq;
|
||||
}
|
||||
EXPORT_SYMBOL(ddb_irq_set);
|
||||
|
||||
static void ddb_set_dma_table(struct ddb_io *io)
|
||||
{
|
||||
@@ -486,9 +487,8 @@ static void ddb_output_start_unlocked(struct ddb_output *output)
|
||||
}
|
||||
if (output->port->class != DDB_PORT_MOD)
|
||||
ddbwritel(dev, con | 1, TS_CONTROL(output));
|
||||
if (output->dma) {
|
||||
if (output->dma)
|
||||
output->dma->running = 1;
|
||||
}
|
||||
}
|
||||
|
||||
static void ddb_output_start(struct ddb_output *output)
|
||||
@@ -669,7 +669,7 @@ static u32 ddb_output_free(struct ddb_output *output)
|
||||
|
||||
if (output->dma->cbuf != idx) {
|
||||
if ((((output->dma->cbuf + 1) % output->dma->num) == idx) &&
|
||||
(output->dma->size - output->dma->coff <= 2*188))
|
||||
(output->dma->size - output->dma->coff <= 2 * 188))
|
||||
return 0;
|
||||
return 188;
|
||||
}
|
||||
@@ -679,25 +679,6 @@ static u32 ddb_output_free(struct ddb_output *output)
|
||||
return 0;
|
||||
}
|
||||
|
||||
#if 0
|
||||
static u32 ddb_dma_free(struct ddb_dma *dma)
|
||||
{
|
||||
u32 idx, off, stat = dma->stat;
|
||||
s32 p1, p2, diff;
|
||||
|
||||
idx = (stat >> 11) & 0x1f;
|
||||
off = (stat & 0x7ff) << 7;
|
||||
|
||||
p1 = idx * dma->size + off;
|
||||
p2 = dma->cbuf * dma->size + dma->coff;
|
||||
|
||||
diff = p1 - p2;
|
||||
if (diff <= 0)
|
||||
diff += dma->num * dma->size;
|
||||
return diff;
|
||||
}
|
||||
#endif
|
||||
|
||||
static ssize_t ddb_output_write(struct ddb_output *output,
|
||||
const __user u8 *buf, size_t count)
|
||||
{
|
||||
@@ -753,79 +734,6 @@ static ssize_t ddb_output_write(struct ddb_output *output,
|
||||
return count - left;
|
||||
}
|
||||
|
||||
#if 0
|
||||
static u32 ddb_input_free_bytes(struct ddb_input *input)
|
||||
{
|
||||
struct ddb *dev = input->port->dev;
|
||||
u32 idx, off, stat = input->dma->stat;
|
||||
u32 ctrl = ddbreadl(dev, DMA_BUFFER_CONTROL(input->dma));
|
||||
|
||||
idx = (stat >> 11) & 0x1f;
|
||||
off = (stat & 0x7ff) << 7;
|
||||
|
||||
if (ctrl & 4)
|
||||
return 0;
|
||||
if (input->dma->cbuf != idx)
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static s32 ddb_output_used_bufs(struct ddb_output *output)
|
||||
{
|
||||
u32 idx, off, stat, ctrl;
|
||||
s32 diff;
|
||||
|
||||
spin_lock_irq(&output->dma->lock);
|
||||
stat = output->dma->stat;
|
||||
ctrl = output->dma->ctrl;
|
||||
spin_unlock_irq(&output->dma->lock);
|
||||
|
||||
idx = (stat >> 11) & 0x1f;
|
||||
off = (stat & 0x7ff) << 7;
|
||||
|
||||
if (ctrl & 4)
|
||||
return 0;
|
||||
diff = output->dma->cbuf - idx;
|
||||
if (diff == 0 && off < output->dma->coff)
|
||||
return 0;
|
||||
if (diff <= 0)
|
||||
diff += output->dma->num;
|
||||
return diff;
|
||||
}
|
||||
|
||||
static s32 ddb_input_free_bufs(struct ddb_input *input)
|
||||
{
|
||||
u32 idx, off, stat, ctrl;
|
||||
s32 free;
|
||||
|
||||
spin_lock_irq(&input->dma->lock);
|
||||
ctrl = input->dma->ctrl;
|
||||
stat = input->dma->stat;
|
||||
spin_unlock_irq(&input->dma->lock);
|
||||
if (ctrl & 4)
|
||||
return 0;
|
||||
idx = (stat >> 11) & 0x1f;
|
||||
off = (stat & 0x7ff) << 7;
|
||||
free = input->dma->cbuf - idx;
|
||||
if (free == 0 && off < input->dma->coff)
|
||||
return 0;
|
||||
if (free <= 0)
|
||||
free += input->dma->num;
|
||||
return free - 1;
|
||||
}
|
||||
|
||||
static u32 ddb_output_ok(struct ddb_output *output)
|
||||
{
|
||||
struct ddb_input *input = output->port->input[0];
|
||||
s32 diff;
|
||||
|
||||
diff = ddb_input_free_bufs(input) - ddb_output_used_bufs(output);
|
||||
if (diff > 0)
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
static u32 ddb_input_avail(struct ddb_input *input)
|
||||
{
|
||||
struct ddb *dev = input->port->dev;
|
||||
@@ -1125,20 +1033,20 @@ static struct dvb_frontend_ops dummy_ops = {
|
||||
.delsys = { SYS_DVBC_ANNEX_A, SYS_DVBS, SYS_DVBS2 },
|
||||
.info = {
|
||||
.name = "DUMMY DVB-C/C2 DVB-T/T2",
|
||||
.frequency_stepsize = 166667, /* DVB-T only */
|
||||
.frequency_min = 47000000, /* DVB-T: 47125000 */
|
||||
.frequency_max = 865000000, /* DVB-C: 862000000 */
|
||||
.frequency_stepsize_hz = 166667, /* DVB-T only */
|
||||
.frequency_min_hz = 47000000, /* DVB-T: 47125000 */
|
||||
.frequency_max_hz = 865000000, /* DVB-C: 862000000 */
|
||||
.symbol_rate_min = 870000,
|
||||
.symbol_rate_max = 11700000,
|
||||
.caps = FE_CAN_QPSK | FE_CAN_QAM_16 | FE_CAN_QAM_32 |
|
||||
FE_CAN_QAM_64 | FE_CAN_QAM_128 | FE_CAN_QAM_256 |
|
||||
FE_CAN_QAM_AUTO |
|
||||
FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
|
||||
FE_CAN_FEC_4_5 |
|
||||
FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
|
||||
FE_CAN_TRANSMISSION_MODE_AUTO |
|
||||
FE_CAN_GUARD_INTERVAL_AUTO | FE_CAN_HIERARCHY_AUTO |
|
||||
FE_CAN_RECOVER | FE_CAN_MUTE_TS | FE_CAN_2G_MODULATION
|
||||
FE_CAN_QAM_64 | FE_CAN_QAM_128 | FE_CAN_QAM_256 |
|
||||
FE_CAN_QAM_AUTO |
|
||||
FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
|
||||
FE_CAN_FEC_4_5 |
|
||||
FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
|
||||
FE_CAN_TRANSMISSION_MODE_AUTO |
|
||||
FE_CAN_GUARD_INTERVAL_AUTO | FE_CAN_HIERARCHY_AUTO |
|
||||
FE_CAN_RECOVER | FE_CAN_MUTE_TS | FE_CAN_2G_MODULATION
|
||||
},
|
||||
.release = dummy_release,
|
||||
.read_status = dummy_read_status,
|
||||
@@ -1484,29 +1392,6 @@ static int tuner_attach_stv6111(struct ddb_input *input, int type)
|
||||
return 0;
|
||||
}
|
||||
|
||||
#if 0
|
||||
static int start_input(struct ddb_input *input)
|
||||
{
|
||||
struct ddb_dvb *dvb = &input->port->dvb[input->nr & 1];
|
||||
|
||||
if (!dvb->users)
|
||||
ddb_input_start_all(input);
|
||||
|
||||
return ++dvb->users;
|
||||
}
|
||||
|
||||
static int stop_input(struct ddb_input *input)
|
||||
{
|
||||
struct ddb_dvb *dvb = &input->port->dvb[input->nr & 1];
|
||||
|
||||
if (--dvb->users)
|
||||
return dvb->users;
|
||||
|
||||
ddb_input_stop_all(input);
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
static int start_feed(struct dvb_demux_feed *dvbdmxfeed)
|
||||
{
|
||||
struct dvb_demux *dvbdmx = dvbdmxfeed->demux;
|
||||
@@ -1603,7 +1488,7 @@ static int dvb_register_adapters(struct ddb *dev)
|
||||
|
||||
if (adapter_alloc >= 3 || dev->link[0].info->type == DDB_MOD ||
|
||||
dev->link[0].info->type == DDB_OCTONET ||
|
||||
dev->link[0].info->type == DDB_OCTOPRO ) {
|
||||
dev->link[0].info->type == DDB_OCTOPRO) {
|
||||
port = &dev->port[0];
|
||||
adap = port->dvb[0].adap;
|
||||
ret = dvb_register_adapter(adap, "DDBridge", THIS_MODULE,
|
||||
@@ -2118,16 +2003,6 @@ static void ddb_port_probe(struct ddb_port *port)
|
||||
port->class = DDB_PORT_MOD;
|
||||
return;
|
||||
}
|
||||
#if 0
|
||||
if (link->info->type == DDB_OCTOPRO_HDIN) {
|
||||
if (port->nr == 0) {
|
||||
dev->link[l].info->type = DDB_OCTOPUS;
|
||||
port->name = "HDIN";
|
||||
port->class = DDB_PORT_LOOP;
|
||||
}
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
if (link->info->type == DDB_OCTOPUS_MAX) {
|
||||
port->name = "DUAL DVB-S2 MAX";
|
||||
port->type_name = "MXL5XX";
|
||||
@@ -2286,7 +2161,7 @@ static int ddb_port_attach(struct ddb_port *port)
|
||||
if (ret < 0)
|
||||
break;
|
||||
/* fallthrough */
|
||||
case DDB_PORT_LOOP:
|
||||
case DDB_PORT_LOOP:
|
||||
ret = dvb_register_device(port->dvb[0].adap,
|
||||
&port->dvb[0].dev,
|
||||
&dvbdev_ci, (void *)port->output,
|
||||
@@ -2447,17 +2322,15 @@ static void input_tasklet(unsigned long data)
|
||||
dma->stat = ddbreadl(dev, DMA_BUFFER_CURRENT(dma));
|
||||
dma->ctrl = ddbreadl(dev, DMA_BUFFER_CONTROL(dma));
|
||||
|
||||
#if 1
|
||||
{
|
||||
u32 packet_loss = dma->packet_loss;
|
||||
u32 cur_counter = TS_STAT(input) & 0xFFFF;
|
||||
|
||||
if ( cur_counter < (packet_loss & 0xFFFF) )
|
||||
u32 cur_counter = ddbreadl(dev, TS_STAT(input)) & 0xffff;
|
||||
|
||||
if (cur_counter < (packet_loss & 0xffff))
|
||||
packet_loss += 0x10000;
|
||||
packet_loss = ((packet_loss & 0xFFFF0000) | cur_counter);
|
||||
packet_loss = ((packet_loss & 0xffff0000) | cur_counter);
|
||||
dma->packet_loss = packet_loss;
|
||||
}
|
||||
#endif
|
||||
if (4 & dma->ctrl)
|
||||
dma->stall_count++;
|
||||
if (input->redi)
|
||||
@@ -2468,7 +2341,7 @@ static void input_tasklet(unsigned long data)
|
||||
spin_unlock_irqrestore(&dma->lock, flags);
|
||||
}
|
||||
|
||||
#if 0
|
||||
#ifdef OPTIMIZE_TASKLETS
|
||||
static void input_handler(unsigned long data)
|
||||
{
|
||||
struct ddb_input *input = (struct ddb_input *)data;
|
||||
@@ -2530,7 +2403,7 @@ unlock_exit:
|
||||
spin_unlock_irqrestore(&dma->lock, flags);
|
||||
}
|
||||
|
||||
#if 0
|
||||
#ifdef OPTIMIZE_TASKLETS
|
||||
static void output_handler(void *data)
|
||||
{
|
||||
struct ddb_output *output = (struct ddb_output *)data;
|
||||
@@ -2620,10 +2493,6 @@ static void ddb_dma_init(struct ddb_io *io, int nr, int out, int irq_nr)
|
||||
dma->div = 1;
|
||||
}
|
||||
ddbwritel(io->port->dev, 0, DMA_BUFFER_ACK(dma));
|
||||
#if 0
|
||||
dev_info(io->port->dev->dev, "init link %u, io %u, dma %u, dmaregs %08x bufregs %08x\n",
|
||||
io->port->lnr, io->nr, nr, dma->regs, dma->bufregs);
|
||||
#endif
|
||||
}
|
||||
|
||||
static void ddb_input_init(struct ddb_port *port, int nr, int pnr, int anr)
|
||||
@@ -2648,10 +2517,6 @@ static void ddb_input_init(struct ddb_port *port, int nr, int pnr, int anr)
|
||||
if (port->lnr)
|
||||
dma_nr += 32 + (port->lnr - 1) * 8;
|
||||
|
||||
#if 0
|
||||
dev_info(dev->dev, "init link %u, input %u, handler %u\n",
|
||||
port->lnr, nr, dma_nr + base);
|
||||
#endif
|
||||
ddb_irq_set(dev, 0, dma_nr + base, &input_handler, input);
|
||||
ddb_dma_init(input, dma_nr, 0, dma_nr + base);
|
||||
}
|
||||
@@ -2669,10 +2534,6 @@ static void ddb_output_init(struct ddb_port *port, int nr)
|
||||
rm = io_regmap(output, 1);
|
||||
output->regs = DDB_LINK_TAG(port->lnr) |
|
||||
(rm->output->base + rm->output->size * nr);
|
||||
#if 0
|
||||
dev_info(dev->dev, "init link %u, output %u, regs %08x\n",
|
||||
port->lnr, nr, output->regs);
|
||||
#endif
|
||||
if (dev->has_dma) {
|
||||
const struct ddb_regmap *rm0 = io_regmap(output, 0);
|
||||
u32 base = rm0->irq_base_odma;
|
||||
@@ -3683,7 +3544,7 @@ static ssize_t temp_show(struct device *device,
|
||||
l = attr->attr.name[5] - 0x30;
|
||||
link = &dev->link[l];
|
||||
|
||||
if (link->info->type == DDB_MOD ) {
|
||||
if (link->info->type == DDB_MOD) {
|
||||
if (link->info->version >= 2) {
|
||||
temp = 0xffff & ddbreadl(dev, TEMPMON2_BOARD);
|
||||
temp = (temp * 1000) >> 8;
|
||||
@@ -3755,25 +3616,6 @@ static ssize_t ctemp_show(struct device *device,
|
||||
return sprintf(buf, "%d\n", temp);
|
||||
}
|
||||
|
||||
#if 0
|
||||
static ssize_t qam_show(struct device *device,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
struct ddb *dev = dev_get_drvdata(device);
|
||||
struct i2c_adapter *adap;
|
||||
u8 tmp[4];
|
||||
s16 i, q;
|
||||
|
||||
adap = &dev->i2c[1].adap;
|
||||
if (i2c_read_regs16(adap, 0x1f, 0xf480, tmp, 4) < 0)
|
||||
return sprintf(buf, "read_error\n");
|
||||
i = (s16)(((u16)tmp[1]) << 14) | (((u16)tmp[0]) << 6);
|
||||
q = (s16)(((u16)tmp[3]) << 14) | (((u16)tmp[2]) << 6);
|
||||
|
||||
return sprintf(buf, "%d %d\n", i, q);
|
||||
}
|
||||
#endif
|
||||
|
||||
static ssize_t mod_show(struct device *device,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
@@ -3954,32 +3796,6 @@ static ssize_t redirect_store(struct device *device,
|
||||
return count;
|
||||
}
|
||||
|
||||
#if 0
|
||||
/* A L P I AAAAAALLPPPPPPII */
|
||||
/* AAAAAAAA LLLLLLLL PPPPPPII */
|
||||
static ssize_t redirect2_show(struct device *device,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static ssize_t redirect2_store(struct device *device,
|
||||
struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
unsigned int i, p;
|
||||
int res;
|
||||
|
||||
if (sscanf(buf, "%x %x\n", &i, &p) != 2)
|
||||
return -EINVAL;
|
||||
res = ddb_redirect(i, p);
|
||||
if (res < 0)
|
||||
return res;
|
||||
dev_info(device, "redirect: %02x, %02x\n", i, p);
|
||||
return count;
|
||||
}
|
||||
#endif
|
||||
|
||||
static ssize_t gap_show(struct device *device,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
@@ -4137,9 +3953,6 @@ static struct device_attribute ddb_attrs[] = {
|
||||
__ATTR_MRO(devid3, devid_show),
|
||||
__ATTR_RO(hwid),
|
||||
__ATTR_RO(regmap),
|
||||
#if 0
|
||||
__ATTR_RO(qam),
|
||||
#endif
|
||||
__ATTR(redirect, 0664, redirect_show, redirect_store),
|
||||
__ATTR_MRO(snr, bsnr_show),
|
||||
__ATTR_RO(bpsnr),
|
||||
@@ -4239,7 +4052,6 @@ static void ddb_device_attrs_del(struct ddb *dev)
|
||||
if (dev->link[i].info &&
|
||||
dev->link[i].info->temp_num)
|
||||
device_remove_file(dev->ddb_dev, &ddb_attrs_temp[i]);
|
||||
for (i = 0; i < dev->link[0].info->temp_num; i++)
|
||||
for (i = 0; i < dev->link[0].info->port_num; i++)
|
||||
device_remove_file(dev->ddb_dev, &ddb_attrs_mod[i]);
|
||||
for (i = 0; i < dev->link[0].info->fan_num; i++)
|
||||
@@ -4377,7 +4189,9 @@ static void link_tasklet(unsigned long data)
|
||||
static void gtl_irq_handler(void *priv)
|
||||
{
|
||||
struct ddb_link *link = (struct ddb_link *)priv;
|
||||
#if 1
|
||||
#ifdef USE_LINK_TASKLET
|
||||
tasklet_schedule(&link->tasklet);
|
||||
#else
|
||||
struct ddb *dev = link->dev;
|
||||
u32 s, l = link->nr, tag = DDB_LINK_TAG(link->nr);
|
||||
|
||||
@@ -4389,8 +4203,6 @@ static void gtl_irq_handler(void *priv)
|
||||
LINK_IRQ_HANDLE(l, 3);
|
||||
LINK_IRQ_HANDLE(l, 24);
|
||||
}
|
||||
#else
|
||||
tasklet_schedule(&link->tasklet);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -4434,7 +4246,7 @@ static int ddb_gtl_init_link(struct ddb *dev, u32 l)
|
||||
subid & 0xffff, subid >> 16);
|
||||
if (link->info->type != DDB_OCTOPUS_MAX_CT &&
|
||||
link->info->type != DDB_OCTOPUS_MAX &&
|
||||
link->info->type != DDB_OCTOPUS_MCI ) {
|
||||
link->info->type != DDB_OCTOPUS_MCI) {
|
||||
dev_info(dev->dev,
|
||||
"Detected GT link but found invalid ID %08x. You might have to update (flash) the add-on card first.",
|
||||
id);
|
||||
|
@@ -801,7 +801,7 @@ static const struct ddb_device_id ddb_device_ids[] = {
|
||||
DDB_DEVID(0x0013, 0x0044, ddb_ci_s2_pro_a),
|
||||
DDB_DEVID(0x0020, 0x0012, ddb_gtl_mini),
|
||||
|
||||
/* Modulators */
|
||||
/* Modulators */
|
||||
DDB_DEVID(0x0201, 0x0001, ddb_mod),
|
||||
DDB_DEVID(0x0201, 0x0002, ddb_mod),
|
||||
DDB_DEVID(0x0201, 0x0004, ddb_mod_4), /* dummy entry ! */
|
||||
@@ -827,10 +827,10 @@ const struct ddb_info *get_ddb_info(u16 vendor, u16 device,
|
||||
u16 subvendor, u16 subdevice)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(ddb_device_ids); i++) {
|
||||
const struct ddb_device_id *id = &ddb_device_ids[i];
|
||||
|
||||
|
||||
if (vendor == id->vendor &&
|
||||
device == id->device &&
|
||||
subvendor == id->subvendor &&
|
||||
|
@@ -35,33 +35,30 @@ static int ddb_i2c_cmd(struct ddb_i2c *i2c, u32 adr, u32 cmd)
|
||||
stat = wait_for_completion_timeout(&i2c->completion, HZ);
|
||||
val = ddbreadl(dev, i2c->regs + I2C_COMMAND);
|
||||
if (stat == 0) {
|
||||
u32 istat = ddbreadl(dev, INTERRUPT_STATUS);
|
||||
|
||||
dev_err(dev->dev, "I2C timeout, card %d, port %d, link %u\n",
|
||||
dev->nr, i2c->nr, i2c->link);
|
||||
#if 1
|
||||
{
|
||||
u32 istat = ddbreadl(dev, INTERRUPT_STATUS);
|
||||
dev_err(dev->dev, "DDBridge IRS %08x\n", istat);
|
||||
|
||||
dev_err(dev->dev, "DDBridge IRS %08x\n", istat);
|
||||
if (i2c->link) {
|
||||
u32 listat =
|
||||
ddbreadl(dev,
|
||||
DDB_LINK_TAG(i2c->link) |
|
||||
INTERRUPT_STATUS);
|
||||
dev_err(dev->dev,
|
||||
"DDBridge link %u IRS %08x\n",
|
||||
i2c->link, listat);
|
||||
}
|
||||
if (istat & 1) {
|
||||
ddbwritel(dev, istat & 1, INTERRUPT_ACK);
|
||||
} else {
|
||||
u32 mon = ddbreadl(dev,
|
||||
i2c->regs + I2C_MONITOR);
|
||||
|
||||
dev_err(dev->dev, "I2C cmd=%08x mon=%08x\n",
|
||||
val, mon);
|
||||
}
|
||||
if (i2c->link) {
|
||||
u32 listat =
|
||||
ddbreadl(dev,
|
||||
DDB_LINK_TAG(i2c->link) |
|
||||
INTERRUPT_STATUS);
|
||||
dev_err(dev->dev,
|
||||
"DDBridge link %u IRS %08x\n",
|
||||
i2c->link, listat);
|
||||
}
|
||||
if (istat & 1) {
|
||||
ddbwritel(dev, istat & 1, INTERRUPT_ACK);
|
||||
} else {
|
||||
u32 mon = ddbreadl(dev,
|
||||
i2c->regs + I2C_MONITOR);
|
||||
|
||||
dev_err(dev->dev, "I2C cmd=%08x mon=%08x\n",
|
||||
val, mon);
|
||||
}
|
||||
#endif
|
||||
return -EIO;
|
||||
}
|
||||
val &= 0x70000;
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
/*
|
||||
* ddbridge-i2c.h: Digital Devices bridge i2c driver
|
||||
*
|
||||
|
@@ -1,3 +1,4 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* ddbridge-io.c: Digital Devices bridge I/O functions
|
||||
*
|
||||
|
@@ -1,3 +1,4 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
/*
|
||||
* ddbridge-io.h: Digital Devices bridge I/O functions
|
||||
*
|
||||
@@ -64,7 +65,7 @@ static inline u32 ddblreadl0(struct ddb_link *link, u32 adr)
|
||||
return readl(link->dev->regs + adr);
|
||||
}
|
||||
|
||||
#if 0
|
||||
#ifdef DEBUG_GTLW
|
||||
static inline void gtlw(struct ddb_link *link)
|
||||
{
|
||||
u32 count = 0;
|
||||
|
@@ -1,3 +1,4 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* ddbridge-m4.c: Digital Devices MAX M4 driver
|
||||
*
|
||||
@@ -335,6 +336,7 @@ static int set_parameters(struct dvb_frontend *fe)
|
||||
{
|
||||
struct m4 *state = fe->demodulator_priv;
|
||||
int res;
|
||||
//struct dtv_frontend_properties *p = &fe->dtv_property_cache;
|
||||
|
||||
stop(fe);
|
||||
|
||||
@@ -343,6 +345,7 @@ static int set_parameters(struct dvb_frontend *fe)
|
||||
state->iq_constellation_point_max = 0;
|
||||
|
||||
state->iq_constellation_tap = 0;
|
||||
//printk("bw = %u\n", p->bandwidth_hz);
|
||||
switch (fe->dtv_property_cache.delivery_system) {
|
||||
case SYS_DVBS:
|
||||
case SYS_DVBS2:
|
||||
@@ -450,7 +453,7 @@ static void release(struct dvb_frontend *fe)
|
||||
kfree(state);
|
||||
}
|
||||
|
||||
static int get_algo(struct dvb_frontend *fe)
|
||||
static enum dvbfe_algo get_algo(struct dvb_frontend *fe)
|
||||
{
|
||||
return DVBFE_ALGO_HW;
|
||||
}
|
||||
@@ -470,21 +473,21 @@ static struct dvb_frontend_ops m4_ops = {
|
||||
SYS_DVBS, SYS_DVBS2, SYS_ISDBS, },
|
||||
.info = {
|
||||
.name = "M4",
|
||||
.frequency_min = 950000, /* DVB-T: 47125000 */
|
||||
.frequency_max = 865000000, /* DVB-C: 862000000 */
|
||||
.frequency_min_hz = 47125000, /* DVB-T: 47125000 */
|
||||
.frequency_max_hz = 2150000000, /* DVB-C: 862000000 */
|
||||
.symbol_rate_min = 100000,
|
||||
.symbol_rate_max = 100000000,
|
||||
.frequency_stepsize = 0,
|
||||
.frequency_tolerance = 0,
|
||||
.frequency_stepsize_hz = 0,
|
||||
.frequency_tolerance_hz = 0,
|
||||
.caps = FE_CAN_QPSK | FE_CAN_QAM_16 | FE_CAN_QAM_32 |
|
||||
FE_CAN_QAM_64 | FE_CAN_QAM_128 | FE_CAN_QAM_256 |
|
||||
FE_CAN_QAM_AUTO |
|
||||
FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
|
||||
FE_CAN_FEC_4_5 |
|
||||
FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
|
||||
FE_CAN_TRANSMISSION_MODE_AUTO |
|
||||
FE_CAN_GUARD_INTERVAL_AUTO | FE_CAN_HIERARCHY_AUTO |
|
||||
FE_CAN_RECOVER | FE_CAN_MUTE_TS | FE_CAN_2G_MODULATION
|
||||
FE_CAN_QAM_64 | FE_CAN_QAM_128 | FE_CAN_QAM_256 |
|
||||
FE_CAN_QAM_AUTO |
|
||||
FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
|
||||
FE_CAN_FEC_4_5 |
|
||||
FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
|
||||
FE_CAN_TRANSMISSION_MODE_AUTO |
|
||||
FE_CAN_GUARD_INTERVAL_AUTO | FE_CAN_HIERARCHY_AUTO |
|
||||
FE_CAN_RECOVER | FE_CAN_MUTE_TS | FE_CAN_2G_MODULATION
|
||||
},
|
||||
.release = release,
|
||||
.get_frontend_algo = get_algo,
|
||||
|
@@ -360,17 +360,17 @@ static int __devinit ddb_probe(struct pci_dev *pdev,
|
||||
if (dev->link[0].info->type == DDB_MOD
|
||||
&& dev->link[0].info->version == 2) {
|
||||
u32 lic = ddbreadl(dev, 0x1c) & 7;
|
||||
|
||||
|
||||
switch (lic) {
|
||||
case 0:
|
||||
case 0:
|
||||
dev->link[0].info =
|
||||
get_ddb_info(0xdd01, 0x0210, 0xdd01, 0x0000);
|
||||
break;
|
||||
case 1:
|
||||
case 1:
|
||||
dev->link[0].info =
|
||||
get_ddb_info(0xdd01, 0x0210, 0xdd01, 0x0003);
|
||||
break;
|
||||
case 3:
|
||||
case 3:
|
||||
dev->link[0].info =
|
||||
get_ddb_info(0xdd01, 0x0210, 0xdd01, 0x0002);
|
||||
break;
|
||||
@@ -458,11 +458,9 @@ static pci_ers_result_t ddb_pci_error_detected(struct pci_dev *pdev,
|
||||
{
|
||||
switch (state) {
|
||||
case pci_channel_io_frozen:
|
||||
|
||||
return PCI_ERS_RESULT_CAN_RECOVER;
|
||||
case pci_channel_io_perm_failure:
|
||||
return PCI_ERS_RESULT_DISCONNECT;
|
||||
break;
|
||||
case pci_channel_io_normal:
|
||||
default:
|
||||
break;
|
||||
|
@@ -1,3 +1,4 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* ddbridge-max.c: Digital Devices MAX card line support functions
|
||||
*
|
||||
@@ -67,7 +68,7 @@ static int max_emulate_switch(struct dvb_frontend *fe,
|
||||
{
|
||||
int input;
|
||||
|
||||
if (len !=4)
|
||||
if (len != 4)
|
||||
return -1;
|
||||
|
||||
if ((cmd[0] != 0xe0) || (cmd[1] != 0x10) || (cmd[2] != 0x39))
|
||||
@@ -490,9 +491,6 @@ int ddb_fe_attach_mxl5xx(struct ddb_input *input)
|
||||
|
||||
/* MAX MCI related functions */
|
||||
|
||||
extern struct mci_cfg ddb_max_sx8_cfg;
|
||||
extern struct mci_cfg ddb_max_m4_cfg;
|
||||
|
||||
int ddb_fe_attach_mci(struct ddb_input *input, u32 type)
|
||||
{
|
||||
struct ddb *dev = input->port->dev;
|
||||
@@ -502,7 +500,7 @@ int ddb_fe_attach_mci(struct ddb_input *input, u32 type)
|
||||
int demod, tuner;
|
||||
struct mci_cfg cfg;
|
||||
int fm = fmode;
|
||||
|
||||
|
||||
demod = input->nr;
|
||||
tuner = demod & 3;
|
||||
switch (type) {
|
||||
|
@@ -1,3 +1,4 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* ddbridge-mci.c: Digital Devices microcode interface
|
||||
*
|
||||
@@ -38,7 +39,7 @@ static int mci_reset(struct mci *state)
|
||||
msleep(300);
|
||||
ddblwritel(link, 0, MCI_CONTROL);
|
||||
|
||||
while(1) {
|
||||
while (1) {
|
||||
status = ddblreadl(link, MCI_CONTROL);
|
||||
if ((status & MCI_CONTROL_READY) == MCI_CONTROL_READY)
|
||||
break;
|
||||
@@ -46,7 +47,7 @@ static int mci_reset(struct mci *state)
|
||||
break;
|
||||
msleep(50);
|
||||
}
|
||||
if ((status & MCI_CONTROL_READY) == 0 )
|
||||
if ((status & MCI_CONTROL_READY) == 0)
|
||||
return -1;
|
||||
if (link->ids.device == 0x0009 || link->ids.device == 0x000b)
|
||||
ddblwritel(link, SX8_TSCONFIG_MODE_NORMAL, SX8_TSCONFIG);
|
||||
@@ -71,7 +72,7 @@ static int ddb_mci_cmd_raw_unlocked(struct mci *state,
|
||||
struct ddb_link *link = state->base->link;
|
||||
u32 i, val;
|
||||
unsigned long stat;
|
||||
|
||||
|
||||
val = ddblreadl(link, MCI_CONTROL);
|
||||
if (val & (MCI_CONTROL_RESET | MCI_CONTROL_START_COMMAND))
|
||||
return -EIO;
|
||||
@@ -80,19 +81,21 @@ static int ddb_mci_cmd_raw_unlocked(struct mci *state,
|
||||
ddblwritel(link, cmd[i], MCI_COMMAND + i * 4);
|
||||
val |= (MCI_CONTROL_START_COMMAND | MCI_CONTROL_ENABLE_DONE_INTERRUPT);
|
||||
ddblwritel(link, val, MCI_CONTROL);
|
||||
|
||||
|
||||
stat = wait_for_completion_timeout(&state->base->completion, HZ);
|
||||
if (stat == 0) {
|
||||
u32 istat = ddblreadl(link, INTERRUPT_STATUS);
|
||||
|
||||
printk("MCI timeout\n");
|
||||
dev_err(state->base->link->dev->dev, "MCI timeout\n");
|
||||
val = ddblreadl(link, MCI_CONTROL);
|
||||
if (val == 0xffffffff) {
|
||||
printk("Lost PCIe link!\n");
|
||||
dev_err(state->base->link->dev->dev,
|
||||
"Lost PCIe link!\n");
|
||||
return -EIO;
|
||||
} else {
|
||||
printk("DDBridge IRS %08x link %u\n", istat, link->nr);
|
||||
if (istat & 1)
|
||||
dev_err(state->base->link->dev->dev,
|
||||
"DDBridge IRS %08x link %u\n", istat, link->nr);
|
||||
if (istat & 1)
|
||||
ddblwritel(link, istat, INTERRUPT_ACK);
|
||||
if (link->nr)
|
||||
ddbwritel(link->dev, 0xffffff, INTERRUPT_ACK);
|
||||
@@ -110,7 +113,7 @@ int ddb_mci_cmd_unlocked(struct mci *state,
|
||||
{
|
||||
u32 *cmd = (u32 *) command;
|
||||
u32 *res = (u32 *) result;
|
||||
|
||||
|
||||
return ddb_mci_cmd_raw_unlocked(state, cmd, sizeof(*command)/sizeof(u32),
|
||||
res, sizeof(*result)/sizeof(u32));
|
||||
}
|
||||
@@ -141,7 +144,7 @@ int ddb_mci_cmd_raw(struct mci *state,
|
||||
struct mci_result *result, u32 result_len)
|
||||
{
|
||||
int stat;
|
||||
|
||||
|
||||
mutex_lock(&state->base->mci_lock);
|
||||
stat = ddb_mci_cmd_raw_unlocked(state,
|
||||
(u32 *)command, command_len,
|
||||
@@ -186,8 +189,7 @@ int ddb_mci_get_snr(struct dvb_frontend *fe)
|
||||
|
||||
p->cnr.len = 1;
|
||||
p->cnr.stat[0].scale = FE_SCALE_DECIBEL;
|
||||
p->cnr.stat[0].svalue = (s64) mci->
|
||||
signal_info.dvbs2_signal_info.signal_to_noise * 10;
|
||||
p->cnr.stat[0].svalue = (s64) mci->signal_info.dvbs2_signal_info.signal_to_noise * 10;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -249,7 +251,7 @@ void ddb_mci_proc_info(struct mci *mci, struct dtv_frontend_properties *p)
|
||||
ROLLOFF_35, ROLLOFF_25, ROLLOFF_20, ROLLOFF_10,
|
||||
ROLLOFF_5, ROLLOFF_15, ROLLOFF_35, ROLLOFF_35
|
||||
};
|
||||
|
||||
|
||||
p->frequency =
|
||||
mci->signal_info.dvbs2_signal_info.frequency;
|
||||
switch (p->delivery_system) {
|
||||
@@ -259,7 +261,6 @@ void ddb_mci_proc_info(struct mci *mci, struct dtv_frontend_properties *p)
|
||||
{
|
||||
u32 pls_code =
|
||||
mci->signal_info.dvbs2_signal_info.pls_code;
|
||||
|
||||
p->frequency =
|
||||
mci->signal_info.dvbs2_signal_info.frequency / 1000;
|
||||
p->delivery_system =
|
||||
@@ -267,11 +268,10 @@ void ddb_mci_proc_info(struct mci *mci, struct dtv_frontend_properties *p)
|
||||
SYS_DVBS2 : SYS_DVBS;
|
||||
if (mci->signal_info.dvbs2_signal_info.standard == 2) {
|
||||
u32 modcod = (0x7c & pls_code) >> 2;
|
||||
|
||||
|
||||
p->delivery_system = SYS_DVBS2;
|
||||
p->rolloff =
|
||||
ro_lut[mci->signal_info.
|
||||
dvbs2_signal_info.roll_off & 7];
|
||||
ro_lut[mci->signal_info.dvbs2_signal_info.roll_off & 7];
|
||||
p->pilot = (pls_code & 1) ? PILOT_ON : PILOT_OFF;
|
||||
p->fec_inner = modcod2fec[modcod];
|
||||
p->modulation = modcod2mod[modcod];
|
||||
@@ -314,8 +314,8 @@ void ddb_mci_proc_info(struct mci *mci, struct dtv_frontend_properties *p)
|
||||
|
||||
p->cnr.len = 1;
|
||||
p->cnr.stat[0].scale = FE_SCALE_DECIBEL;
|
||||
p->cnr.stat[0].svalue = (s64) mci->
|
||||
signal_info.dvbs2_signal_info.signal_to_noise * 10;
|
||||
p->cnr.stat[0].svalue = (s64)
|
||||
mci->signal_info.dvbs2_signal_info.signal_to_noise * 10;
|
||||
|
||||
p->strength.len = 1;
|
||||
p->strength.stat[0].scale = FE_SCALE_DECIBEL;
|
||||
|
@@ -644,14 +644,13 @@ struct mci_result {
|
||||
u8 min_input_stream_id;
|
||||
u8 max_input_stream_id;
|
||||
} BBHeader;
|
||||
|
||||
|
||||
struct {
|
||||
u8 Mode; // FFT Mode 1,2,3
|
||||
u8 GuardInterval; // 1/32, 1/16, 1/8, /14
|
||||
|
||||
u8 TMCCInfo[13]; // TMCC B20 - B121, byte 0 bit 7: B20, byte 12 bit 2: B121
|
||||
u8 GuardInterval; // 1/32, 1/16, 1/8, /14
|
||||
u8 TMCCInfo[13]; // TMCC B20 - B121, byte 0 bit 7: B20, byte 12 bit 2: B121
|
||||
} ISDBT_TMCCInfo;
|
||||
|
||||
|
||||
struct {
|
||||
u8 Change; // 5 bits, increments with every change
|
||||
struct {
|
||||
@@ -710,7 +709,7 @@ struct mci_result {
|
||||
|
||||
/* DVB-T2 L1-Post Signalling Data ( ETSI EN 302 755 V1.4.1 Chapter 7.2.3 ) */
|
||||
|
||||
#define L1POST_SUB_SLICES_PER_FRAME(p) (((u16)(p)[ 0] & 0x7F) | (p)[ 1])
|
||||
#define L1POST_SUB_SLICES_PER_FRAME(p) (((u16)(p)[0] & 0x7F) | (p)[1])
|
||||
#define L1POST_NUM_PLP(p) ((p)[2] & 0xFF)
|
||||
#define L1POST_NUM_AUX(p) ((p)[3] & 0x0F)
|
||||
#define L1POST_AUX_CONFIG_RFU(p) ((p)[4] & 0xFF)
|
||||
@@ -750,8 +749,6 @@ struct mci_base {
|
||||
void *key;
|
||||
struct ddb_link *link;
|
||||
struct completion completion;
|
||||
struct i2c_adapter *i2c;
|
||||
struct mutex i2c_lock;
|
||||
struct mutex tuner_lock;
|
||||
struct mutex mci_lock;
|
||||
int count;
|
||||
@@ -788,4 +785,7 @@ int ddb_mci_get_info(struct mci *mci);
|
||||
int ddb_mci_get_strength(struct dvb_frontend *fe);
|
||||
void ddb_mci_proc_info(struct mci *mci, struct dtv_frontend_properties *p);
|
||||
|
||||
extern struct mci_cfg ddb_max_sx8_cfg;
|
||||
extern struct mci_cfg ddb_max_m4_cfg;
|
||||
|
||||
#endif
|
||||
|
@@ -441,11 +441,11 @@ static int ns_start(struct dvbnss *nss)
|
||||
reg |= 0x40;
|
||||
if (nss->params.flags & DVB_NS_IPV6)
|
||||
reg |= 0x80;
|
||||
ddbwritel(dev, reg | (dns->fe->nr << 8) | (dns->fe->port->lnr << 16),
|
||||
STREAM_CONTROL(dns->nr));
|
||||
if (dns->fe != input)
|
||||
ddb_dvb_ns_input_start(dns->fe);
|
||||
ddb_dvb_ns_input_start(input);
|
||||
ddbwritel(dev, reg | (dns->fe->nr << 8) | (dns->fe->port->lnr << 16),
|
||||
STREAM_CONTROL(dns->nr));
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@@ -501,7 +501,7 @@ static int tune(struct dvb_frontend *fe, bool re_tune,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int get_algo(struct dvb_frontend *fe)
|
||||
static enum dvbfe_algo get_algo(struct dvb_frontend *fe)
|
||||
{
|
||||
return DVBFE_ALGO_HW;
|
||||
}
|
||||
@@ -541,10 +541,10 @@ static struct dvb_frontend_ops sx8_ops = {
|
||||
.xbar = { 4, 0, 8 }, /* tuner_max, demod id, demod_max */
|
||||
.info = {
|
||||
.name = "DVB-S/S2X",
|
||||
.frequency_min = 950000,
|
||||
.frequency_max = 2150000,
|
||||
.frequency_stepsize = 0,
|
||||
.frequency_tolerance = 0,
|
||||
.frequency_min_hz = 950000000,
|
||||
.frequency_max_hz = 2150000000,
|
||||
.frequency_stepsize_hz = 0,
|
||||
.frequency_tolerance_hz = 0,
|
||||
.symbol_rate_min = 100000,
|
||||
.symbol_rate_max = 100000000,
|
||||
.caps = FE_CAN_INVERSION_AUTO |
|
||||
|
@@ -60,22 +60,20 @@
|
||||
#include <linux/mutex.h>
|
||||
#include <asm/dma.h>
|
||||
#include <asm/irq.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/uaccess.h>
|
||||
|
||||
#include <linux/dvb/ca.h>
|
||||
#include <linux/socket.h>
|
||||
#include <linux/device.h>
|
||||
#include <linux/io.h>
|
||||
|
||||
#include "dvb_netstream.h"
|
||||
#include "dmxdev.h"
|
||||
#include "dvbdev.h"
|
||||
#include "dvb_demux.h"
|
||||
#include "dvb_frontend.h"
|
||||
#include "dvb_ringbuffer.h"
|
||||
#include "dvb_ca_en50221.h"
|
||||
#include "dvb_net.h"
|
||||
#include <media/dmxdev.h>
|
||||
#include <media/dvbdev.h>
|
||||
#include <media/dvb_demux.h>
|
||||
#include <media/dvb_frontend.h>
|
||||
#include <media/dvb_ringbuffer.h>
|
||||
#include <media/dvb_ca_en50221.h>
|
||||
#include <media/dvb_net.h>
|
||||
|
||||
#include "tda18271c2dd.h"
|
||||
#include "stv6110x.h"
|
||||
@@ -238,7 +236,7 @@ struct ddb_dvb {
|
||||
enum fe_sec_tone_mode tone;
|
||||
enum fe_sec_voltage voltage;
|
||||
|
||||
int (*i2c_gate_ctrl)(struct dvb_frontend *, int);
|
||||
int (*i2c_gate_ctrl)(struct dvb_frontend *fe, int val);
|
||||
int (*set_voltage)(struct dvb_frontend *fe,
|
||||
enum fe_sec_voltage voltage);
|
||||
int (*set_input)(struct dvb_frontend *fe, int input);
|
||||
@@ -408,7 +406,7 @@ struct ddb_lnb {
|
||||
};
|
||||
|
||||
struct ddb_irq {
|
||||
void (*handler)(void *);
|
||||
void (*handler)(void *data);
|
||||
void *data;
|
||||
};
|
||||
|
||||
@@ -542,7 +540,7 @@ int ddbridge_mod_do_ioctl(struct file *file, unsigned int cmd, void *parg);
|
||||
int ddbridge_mod_init(struct ddb *dev);
|
||||
void ddbridge_mod_output_stop(struct ddb_output *output);
|
||||
int ddbridge_mod_output_start(struct ddb_output *output);
|
||||
void ddbridge_mod_rate_handler(void *);
|
||||
void ddbridge_mod_rate_handler(void *data);
|
||||
|
||||
void ddb_device_destroy(struct ddb *dev);
|
||||
void ddb_nsd_detach(struct ddb *dev);
|
||||
|
@@ -38,7 +38,7 @@
|
||||
#include <asm/uaccess.h>
|
||||
#include <linux/dvb/ns.h>
|
||||
|
||||
#include "dvbdev.h"
|
||||
#include <media/dvbdev.h>
|
||||
|
||||
#define DVBNS_MAXPIDS 32
|
||||
|
||||
|
Reference in New Issue
Block a user