mirror of
https://github.com/DigitalDevices/dddvb.git
synced 2023-10-10 13:37:43 +02:00
Move device info into ddbridge-hw.c and use get_ddb_info
in ddbridge.c, ddbridge-core.c and octonet.c to get ddb_info for specific devices. This unifies the method for getting the device info for all hardware. It also no longer relies on driver_data in struct pci_dev_id which is deprecated to be used as a pointer.
This commit is contained in:
parent
862c7bfc60
commit
3556d6464b
@ -96,316 +96,7 @@ DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr);
|
|||||||
#include "ddbridge-mod.c"
|
#include "ddbridge-mod.c"
|
||||||
#include "ddbridge-i2c.c"
|
#include "ddbridge-i2c.c"
|
||||||
#include "ddbridge-ns.c"
|
#include "ddbridge-ns.c"
|
||||||
|
#include "ddbridge-hw.c"
|
||||||
|
|
||||||
/****************************************************************************/
|
|
||||||
/****************************************************************************/
|
|
||||||
/****************************************************************************/
|
|
||||||
|
|
||||||
static struct ddb_regset octopus_mod_odma = {
|
|
||||||
.base = 0x300,
|
|
||||||
.num = 0x0a,
|
|
||||||
.size = 0x10,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct ddb_regset octopus_mod_odma_buf = {
|
|
||||||
.base = 0x2000,
|
|
||||||
.num = 0x0a,
|
|
||||||
.size = 0x100,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct ddb_regset octopus_mod_channel = {
|
|
||||||
.base = 0x400,
|
|
||||||
.num = 0x0a,
|
|
||||||
.size = 0x40,
|
|
||||||
};
|
|
||||||
|
|
||||||
/****************************************************************************/
|
|
||||||
|
|
||||||
static struct ddb_regset octopus_mod_2_odma = {
|
|
||||||
.base = 0x400,
|
|
||||||
.num = 0x18,
|
|
||||||
.size = 0x10,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct ddb_regset octopus_mod_2_odma_buf = {
|
|
||||||
.base = 0x8000,
|
|
||||||
.num = 0x18,
|
|
||||||
.size = 0x100,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct ddb_regset octopus_mod_2_channel = {
|
|
||||||
.base = 0x800,
|
|
||||||
.num = 0x18,
|
|
||||||
.size = 0x40,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct ddb_regset octopus_sdr_output = {
|
|
||||||
.base = 0x240,
|
|
||||||
.num = 0x14,
|
|
||||||
.size = 0x10,
|
|
||||||
};
|
|
||||||
|
|
||||||
/****************************************************************************/
|
|
||||||
|
|
||||||
static struct ddb_regset octopus_input = {
|
|
||||||
.base = 0x200,
|
|
||||||
.num = 0x08,
|
|
||||||
.size = 0x10,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct ddb_regset octopus_output = {
|
|
||||||
.base = 0x280,
|
|
||||||
.num = 0x08,
|
|
||||||
.size = 0x10,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct ddb_regset octopus_idma = {
|
|
||||||
.base = 0x300,
|
|
||||||
.num = 0x08,
|
|
||||||
.size = 0x10,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct ddb_regset octopus_idma_buf = {
|
|
||||||
.base = 0x2000,
|
|
||||||
.num = 0x08,
|
|
||||||
.size = 0x100,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct ddb_regset octopus_odma = {
|
|
||||||
.base = 0x380,
|
|
||||||
.num = 0x04,
|
|
||||||
.size = 0x10,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct ddb_regset octopus_odma_buf = {
|
|
||||||
.base = 0x2800,
|
|
||||||
.num = 0x04,
|
|
||||||
.size = 0x100,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct ddb_regset octopus_i2c = {
|
|
||||||
.base = 0x80,
|
|
||||||
.num = 0x04,
|
|
||||||
.size = 0x20,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct ddb_regset octopus_i2c_buf = {
|
|
||||||
.base = 0x1000,
|
|
||||||
.num = 0x04,
|
|
||||||
.size = 0x200,
|
|
||||||
};
|
|
||||||
|
|
||||||
/****************************************************************************/
|
|
||||||
|
|
||||||
static struct ddb_regset octopro_input = {
|
|
||||||
.base = 0x400,
|
|
||||||
.num = 0x14,
|
|
||||||
.size = 0x10,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct ddb_regset octopro_output = {
|
|
||||||
.base = 0x600,
|
|
||||||
.num = 0x0a,
|
|
||||||
.size = 0x10,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct ddb_regset octopro_idma = {
|
|
||||||
.base = 0x800,
|
|
||||||
.num = 0x40,
|
|
||||||
.size = 0x10,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct ddb_regset octopro_idma_buf = {
|
|
||||||
.base = 0x4000,
|
|
||||||
.num = 0x40,
|
|
||||||
.size = 0x100,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct ddb_regset octopro_odma = {
|
|
||||||
.base = 0xc00,
|
|
||||||
.num = 0x20,
|
|
||||||
.size = 0x10,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct ddb_regset octopro_odma_buf = {
|
|
||||||
.base = 0x8000,
|
|
||||||
.num = 0x20,
|
|
||||||
.size = 0x100,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct ddb_regset octopro_i2c = {
|
|
||||||
.base = 0x200,
|
|
||||||
.num = 0x0a,
|
|
||||||
.size = 0x20,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct ddb_regset octopro_i2c_buf = {
|
|
||||||
.base = 0x2000,
|
|
||||||
.num = 0x0a,
|
|
||||||
.size = 0x200,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct ddb_regset octopro_gtl = {
|
|
||||||
.base = 0xe00,
|
|
||||||
.num = 0x03,
|
|
||||||
.size = 0x40,
|
|
||||||
};
|
|
||||||
|
|
||||||
/****************************************************************************/
|
|
||||||
/****************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
static struct ddb_regmap octopus_map = {
|
|
||||||
.irq_version = 1,
|
|
||||||
.irq_base_i2c = 0,
|
|
||||||
.irq_base_idma = 8,
|
|
||||||
.irq_base_odma = 16,
|
|
||||||
.i2c = &octopus_i2c,
|
|
||||||
.i2c_buf = &octopus_i2c_buf,
|
|
||||||
.idma = &octopus_idma,
|
|
||||||
.idma_buf = &octopus_idma_buf,
|
|
||||||
.odma = &octopus_odma,
|
|
||||||
.odma_buf = &octopus_odma_buf,
|
|
||||||
.input = &octopus_input,
|
|
||||||
.output = &octopus_output,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct ddb_regmap octopro_map = {
|
|
||||||
.irq_version = 2,
|
|
||||||
.irq_base_i2c = 32,
|
|
||||||
.irq_base_idma = 64,
|
|
||||||
.irq_base_odma = 128,
|
|
||||||
.irq_base_gtl = 8,
|
|
||||||
.i2c = &octopro_i2c,
|
|
||||||
.i2c_buf = &octopro_i2c_buf,
|
|
||||||
.idma = &octopro_idma,
|
|
||||||
.idma_buf = &octopro_idma_buf,
|
|
||||||
.odma = &octopro_odma,
|
|
||||||
.odma_buf = &octopro_odma_buf,
|
|
||||||
.input = &octopro_input,
|
|
||||||
.output = &octopro_output,
|
|
||||||
.gtl = &octopro_gtl,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct ddb_regmap octopro_hdin_map = {
|
|
||||||
.irq_version = 2,
|
|
||||||
.irq_base_i2c = 32,
|
|
||||||
.irq_base_idma = 64,
|
|
||||||
.irq_base_odma = 128,
|
|
||||||
.i2c = &octopro_i2c,
|
|
||||||
.i2c_buf = &octopro_i2c_buf,
|
|
||||||
.idma = &octopro_idma,
|
|
||||||
.idma_buf = &octopro_idma_buf,
|
|
||||||
.odma = &octopro_odma,
|
|
||||||
.odma_buf = &octopro_odma_buf,
|
|
||||||
.input = &octopro_input,
|
|
||||||
.output = &octopro_output,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct ddb_regmap octopus_mod_map = {
|
|
||||||
.irq_version = 1,
|
|
||||||
.irq_base_odma = 8,
|
|
||||||
.irq_base_rate = 18,
|
|
||||||
.output = &octopus_output,
|
|
||||||
.odma = &octopus_mod_odma,
|
|
||||||
.odma_buf = &octopus_mod_odma_buf,
|
|
||||||
.channel = &octopus_mod_channel,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct ddb_regmap octopus_mod_2_map = {
|
|
||||||
.irq_version = 2,
|
|
||||||
.irq_base_odma = 64,
|
|
||||||
.irq_base_rate = 32,
|
|
||||||
.output = &octopus_output,
|
|
||||||
.odma = &octopus_mod_2_odma,
|
|
||||||
.odma_buf = &octopus_mod_2_odma_buf,
|
|
||||||
.channel = &octopus_mod_2_channel,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct ddb_regmap octopus_sdr_map = {
|
|
||||||
.irq_version = 2,
|
|
||||||
.irq_base_odma = 64,
|
|
||||||
.irq_base_rate = 32,
|
|
||||||
.output = &octopus_sdr_output,
|
|
||||||
.odma = &octopus_mod_2_odma,
|
|
||||||
.odma_buf = &octopus_mod_2_odma_buf,
|
|
||||||
.channel = &octopus_mod_2_channel,
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************/
|
|
||||||
|
|
||||||
static struct ddb_info ddb_s2_48 = {
|
|
||||||
.type = DDB_OCTOPUS_MAX,
|
|
||||||
.name = "Digital Devices MAX S8 4/8",
|
|
||||||
.regmap = &octopus_map,
|
|
||||||
.port_num = 4,
|
|
||||||
.i2c_mask = 0x01,
|
|
||||||
.board_control = 1,
|
|
||||||
.tempmon_irq = 24,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct ddb_info ddb_ct2_8 = {
|
|
||||||
.type = DDB_OCTOPUS_MAX_CT,
|
|
||||||
.name = "Digital Devices MAX A8 CT2",
|
|
||||||
.regmap = &octopus_map,
|
|
||||||
.port_num = 4,
|
|
||||||
.i2c_mask = 0x0f,
|
|
||||||
.board_control = 0x0ff,
|
|
||||||
.board_control_2 = 0xf00,
|
|
||||||
.ts_quirks = TS_QUIRK_SERIAL,
|
|
||||||
.tempmon_irq = 24,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct ddb_info ddb_c2t2_8 = {
|
|
||||||
.type = DDB_OCTOPUS_MAX_CT,
|
|
||||||
.name = "Digital Devices MAX A8 C2T2",
|
|
||||||
.regmap = &octopus_map,
|
|
||||||
.port_num = 4,
|
|
||||||
.i2c_mask = 0x0f,
|
|
||||||
.board_control = 0x0ff,
|
|
||||||
.board_control_2 = 0xf00,
|
|
||||||
.ts_quirks = TS_QUIRK_SERIAL,
|
|
||||||
.tempmon_irq = 24,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct ddb_info ddb_isdbt_8 = {
|
|
||||||
.type = DDB_OCTOPUS_MAX_CT,
|
|
||||||
.name = "Digital Devices MAX A8 ISDBT",
|
|
||||||
.regmap = &octopus_map,
|
|
||||||
.port_num = 4,
|
|
||||||
.i2c_mask = 0x0f,
|
|
||||||
.board_control = 0x0ff,
|
|
||||||
.board_control_2 = 0xf00,
|
|
||||||
.ts_quirks = TS_QUIRK_SERIAL,
|
|
||||||
.tempmon_irq = 24,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct ddb_info ddb_c2t2i_v0_8 = {
|
|
||||||
.type = DDB_OCTOPUS_MAX_CT,
|
|
||||||
.name = "Digital Devices MAX A8 C2T2I V0",
|
|
||||||
.regmap = &octopus_map,
|
|
||||||
.port_num = 4,
|
|
||||||
.i2c_mask = 0x0f,
|
|
||||||
.board_control = 0x0ff,
|
|
||||||
.board_control_2 = 0xf00,
|
|
||||||
.ts_quirks = TS_QUIRK_SERIAL | TS_QUIRK_ALT_OSC,
|
|
||||||
.tempmon_irq = 24,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct ddb_info ddb_c2t2i_8 = {
|
|
||||||
.type = DDB_OCTOPUS_MAX_CT,
|
|
||||||
.name = "Digital Devices MAX A8 C2T2I",
|
|
||||||
.regmap = &octopus_map,
|
|
||||||
.port_num = 4,
|
|
||||||
.i2c_mask = 0x0f,
|
|
||||||
.board_control = 0x0ff,
|
|
||||||
.board_control_2 = 0xf00,
|
|
||||||
.ts_quirks = TS_QUIRK_SERIAL,
|
|
||||||
.tempmon_irq = 24,
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
@ -5224,28 +4915,10 @@ static int ddb_gtl_init_link(struct ddb *dev, u32 l)
|
|||||||
}
|
}
|
||||||
id = ddbreadl(dev, DDB_LINK_TAG(l) | 8);
|
id = ddbreadl(dev, DDB_LINK_TAG(l) | 8);
|
||||||
subid = ddbreadl(dev, DDB_LINK_TAG(l) | 12);
|
subid = ddbreadl(dev, DDB_LINK_TAG(l) | 12);
|
||||||
switch (id) {
|
link->info = get_ddb_info(id & 0xffff, id >> 16,
|
||||||
case 0x0007dd01:
|
subid & 0xffff, subid >> 16);
|
||||||
link->info = &ddb_s2_48;
|
if (link->info->type != DDB_OCTOPUS_MAX_CT &&
|
||||||
break;
|
link->info->type != DDB_OCTOPUS_MAX) {
|
||||||
case 0x0008dd01:
|
|
||||||
switch (subid) {
|
|
||||||
case 0x0035dd01:
|
|
||||||
default:
|
|
||||||
link->info = &ddb_c2t2_8;
|
|
||||||
break;
|
|
||||||
case 0x0036dd01:
|
|
||||||
link->info = &ddb_isdbt_8;
|
|
||||||
break;
|
|
||||||
case 0x0037dd01:
|
|
||||||
link->info = &ddb_c2t2i_v0_8;
|
|
||||||
break;
|
|
||||||
case 0x0038dd01:
|
|
||||||
link->info = &ddb_c2t2i_8;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
pr_info("DDBridge: Detected GT link but found invalid ID %08x. You might have to update (flash) the add-on card first.",
|
pr_info("DDBridge: Detected GT link but found invalid ID %08x. You might have to update (flash) the add-on card first.",
|
||||||
id);
|
id);
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -245,14 +245,11 @@ static int __devinit ddb_probe(struct pci_dev *pdev,
|
|||||||
dev->link[0].ids.vendor = id->vendor;
|
dev->link[0].ids.vendor = id->vendor;
|
||||||
dev->link[0].ids.device = id->device;
|
dev->link[0].ids.device = id->device;
|
||||||
dev->link[0].ids.subvendor = id->subvendor;
|
dev->link[0].ids.subvendor = id->subvendor;
|
||||||
dev->link[0].ids.subdevice = id->subdevice;
|
dev->link[0].ids.subdevice = pdev->subsystem_device;
|
||||||
|
|
||||||
dev->link[0].dev = dev;
|
dev->link[0].dev = dev;
|
||||||
#ifdef NUM_IDS
|
dev->link[0].info = get_ddb_info(id->vendor, id->device,
|
||||||
dev->link[0].info = ddb_infos[id->driver_data];
|
id->subvendor, pdev->subsystem_device);
|
||||||
#else
|
|
||||||
dev->link[0].info = (struct ddb_info *) id->driver_data;
|
|
||||||
#endif
|
|
||||||
pr_info("DDBridge: device name: %s\n", dev->link[0].info->name);
|
pr_info("DDBridge: device name: %s\n", dev->link[0].info->name);
|
||||||
|
|
||||||
dev->regs_len = pci_resource_len(dev->pdev, 0);
|
dev->regs_len = pci_resource_len(dev->pdev, 0);
|
||||||
@ -315,280 +312,10 @@ fail:
|
|||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
static struct ddb_info ddb_none = {
|
#define DDB_DEVICE_ANY(_device) { PCI_DEVICE_SUB(0xdd01, _device, 0xdd01, PCI_ANY_ID) }
|
||||||
.type = DDB_NONE,
|
|
||||||
.name = "unknown Digital Devices PCIe card, install newer driver",
|
|
||||||
.regmap = &octopus_map,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct ddb_info ddb_octopus = {
|
|
||||||
.type = DDB_OCTOPUS,
|
|
||||||
.name = "Digital Devices Octopus DVB adapter",
|
|
||||||
.regmap = &octopus_map,
|
|
||||||
.port_num = 4,
|
|
||||||
.i2c_mask = 0x0f,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct ddb_info ddb_octopusv3 = {
|
|
||||||
.type = DDB_OCTOPUS,
|
|
||||||
.name = "Digital Devices Octopus V3 DVB adapter",
|
|
||||||
.regmap = &octopus_map,
|
|
||||||
.port_num = 4,
|
|
||||||
.i2c_mask = 0x0f,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct ddb_info ddb_octopus_le = {
|
|
||||||
.type = DDB_OCTOPUS,
|
|
||||||
.name = "Digital Devices Octopus LE DVB adapter",
|
|
||||||
.regmap = &octopus_map,
|
|
||||||
.port_num = 2,
|
|
||||||
.i2c_mask = 0x03,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct ddb_info ddb_octopus_oem = {
|
|
||||||
.type = DDB_OCTOPUS,
|
|
||||||
.name = "Digital Devices Octopus OEM",
|
|
||||||
.regmap = &octopus_map,
|
|
||||||
.port_num = 4,
|
|
||||||
.i2c_mask = 0x0f,
|
|
||||||
.led_num = 1,
|
|
||||||
.fan_num = 1,
|
|
||||||
.temp_num = 1,
|
|
||||||
.temp_bus = 0,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct ddb_info ddb_octopus_mini = {
|
|
||||||
.type = DDB_OCTOPUS,
|
|
||||||
.name = "Digital Devices Octopus Mini",
|
|
||||||
.regmap = &octopus_map,
|
|
||||||
.port_num = 4,
|
|
||||||
.i2c_mask = 0x0f,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct ddb_info ddb_v6 = {
|
|
||||||
.type = DDB_OCTOPUS,
|
|
||||||
.name = "Digital Devices Cine S2 V6 DVB adapter",
|
|
||||||
.regmap = &octopus_map,
|
|
||||||
.port_num = 3,
|
|
||||||
.i2c_mask = 0x07,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct ddb_info ddb_v6_5 = {
|
|
||||||
.type = DDB_OCTOPUS,
|
|
||||||
.name = "Digital Devices Cine S2 V6.5 DVB adapter",
|
|
||||||
.regmap = &octopus_map,
|
|
||||||
.port_num = 4,
|
|
||||||
.i2c_mask = 0x0f,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct ddb_info ddb_v7a = {
|
|
||||||
.type = DDB_OCTOPUS,
|
|
||||||
.name = "Digital Devices Cine S2 V7 Advanced DVB adapter",
|
|
||||||
.regmap = &octopus_map,
|
|
||||||
.port_num = 4,
|
|
||||||
.i2c_mask = 0x0f,
|
|
||||||
.board_control = 2,
|
|
||||||
.board_control_2 = 4,
|
|
||||||
.ts_quirks = TS_QUIRK_REVERSED,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct ddb_info ddb_v7 = {
|
|
||||||
.type = DDB_OCTOPUS,
|
|
||||||
.name = "Digital Devices Cine S2 V7 DVB adapter",
|
|
||||||
.regmap = &octopus_map,
|
|
||||||
.port_num = 4,
|
|
||||||
.i2c_mask = 0x0f,
|
|
||||||
.board_control = 2,
|
|
||||||
.board_control_2 = 4,
|
|
||||||
.ts_quirks = TS_QUIRK_REVERSED,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct ddb_info ddb_ctv7 = {
|
|
||||||
.type = DDB_OCTOPUS,
|
|
||||||
.name = "Digital Devices Cine CT V7 DVB adapter",
|
|
||||||
.regmap = &octopus_map,
|
|
||||||
.port_num = 4,
|
|
||||||
.i2c_mask = 0x0f,
|
|
||||||
.board_control = 3,
|
|
||||||
.board_control_2 = 4,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct ddb_info ddb_satixS2v3 = {
|
|
||||||
.type = DDB_OCTOPUS,
|
|
||||||
.name = "Mystique SaTiX-S2 V3 DVB adapter",
|
|
||||||
.regmap = &octopus_map,
|
|
||||||
.port_num = 3,
|
|
||||||
.i2c_mask = 0x07,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct ddb_info ddb_ci = {
|
|
||||||
.type = DDB_OCTOPUS_CI,
|
|
||||||
.name = "Digital Devices Octopus CI",
|
|
||||||
.regmap = &octopus_map,
|
|
||||||
.port_num = 4,
|
|
||||||
.i2c_mask = 0x03,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct ddb_info ddb_cis = {
|
|
||||||
.type = DDB_OCTOPUS_CI,
|
|
||||||
.name = "Digital Devices Octopus CI single",
|
|
||||||
.regmap = &octopus_map,
|
|
||||||
.port_num = 3,
|
|
||||||
.i2c_mask = 0x03,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct ddb_info ddb_ci_s2_pro = {
|
|
||||||
.type = DDB_OCTOPUS_CI,
|
|
||||||
.name = "Digital Devices Octopus CI S2 Pro",
|
|
||||||
.regmap = &octopus_map,
|
|
||||||
.port_num = 4,
|
|
||||||
.i2c_mask = 0x01,
|
|
||||||
.board_control = 2,
|
|
||||||
.board_control_2 = 4,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct ddb_info ddb_ci_s2_pro_a = {
|
|
||||||
.type = DDB_OCTOPUS_CI,
|
|
||||||
.name = "Digital Devices Octopus CI S2 Pro Advanced",
|
|
||||||
.regmap = &octopus_map,
|
|
||||||
.port_num = 4,
|
|
||||||
.i2c_mask = 0x01,
|
|
||||||
.board_control = 2,
|
|
||||||
.board_control_2 = 4,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct ddb_info ddb_dvbct = {
|
|
||||||
.type = DDB_OCTOPUS,
|
|
||||||
.name = "Digital Devices DVBCT V6.1 DVB adapter",
|
|
||||||
.regmap = &octopus_map,
|
|
||||||
.port_num = 3,
|
|
||||||
.i2c_mask = 0x07,
|
|
||||||
};
|
|
||||||
|
|
||||||
/****************************************************************************/
|
|
||||||
|
|
||||||
static struct ddb_info ddb_mod = {
|
|
||||||
.type = DDB_MOD,
|
|
||||||
.name = "Digital Devices DVB-C modulator",
|
|
||||||
.regmap = &octopus_mod_map,
|
|
||||||
.port_num = 10,
|
|
||||||
.temp_num = 1,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct ddb_info ddb_mod_fsm_24 = {
|
|
||||||
.type = DDB_MOD,
|
|
||||||
.version = 2,
|
|
||||||
.name = "Digital Devices DVB-C modulator FSM-24",
|
|
||||||
.regmap = &octopus_mod_2_map,
|
|
||||||
.port_num = 24,
|
|
||||||
.temp_num = 1,
|
|
||||||
.tempmon_irq = 8,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct ddb_info ddb_mod_fsm_16 = {
|
|
||||||
.type = DDB_MOD,
|
|
||||||
.version = 2,
|
|
||||||
.name = "Digital Devices DVB-C modulator FSM-16",
|
|
||||||
.regmap = &octopus_mod_2_map,
|
|
||||||
.port_num = 16,
|
|
||||||
.temp_num = 1,
|
|
||||||
.tempmon_irq = 8,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct ddb_info ddb_mod_fsm_8 = {
|
|
||||||
.type = DDB_MOD,
|
|
||||||
.name = "Digital Devices DVB-C modulator FSM-8",
|
|
||||||
.version = 2,
|
|
||||||
.regmap = &octopus_mod_2_map,
|
|
||||||
.port_num = 8,
|
|
||||||
.temp_num = 1,
|
|
||||||
.tempmon_irq = 8,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct ddb_info ddb_sdr = {
|
|
||||||
.type = DDB_MOD,
|
|
||||||
.name = "Digital Devices SDR",
|
|
||||||
.version = 3,
|
|
||||||
.regmap = &octopus_sdr_map,
|
|
||||||
.port_num = 16,
|
|
||||||
.temp_num = 1,
|
|
||||||
.tempmon_irq = 8,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct ddb_info ddb_octopro_hdin = {
|
|
||||||
.type = DDB_OCTOPRO_HDIN,
|
|
||||||
.name = "Digital Devices OctopusNet Pro HDIN",
|
|
||||||
.regmap = &octopro_hdin_map,
|
|
||||||
.port_num = 10,
|
|
||||||
.i2c_mask = 0x3ff,
|
|
||||||
.mdio_num = 1,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct ddb_info ddb_octopro = {
|
|
||||||
.type = DDB_OCTOPRO,
|
|
||||||
.name = "Digital Devices OctopusNet Pro",
|
|
||||||
.regmap = &octopro_map,
|
|
||||||
.port_num = 10,
|
|
||||||
.i2c_mask = 0x3ff,
|
|
||||||
.mdio_num = 1,
|
|
||||||
};
|
|
||||||
|
|
||||||
/****************************************************************************/
|
|
||||||
/****************************************************************************/
|
|
||||||
/****************************************************************************/
|
|
||||||
|
|
||||||
#define DDB_DEVICE(_device, _subdevice, _driver_data) { \
|
|
||||||
PCI_DEVICE_SUB(0xdd01, _device, 0xdd01, _subdevice), \
|
|
||||||
.driver_data = (kernel_ulong_t) &_driver_data }
|
|
||||||
|
|
||||||
#define DDB_DEVICE_ANY(_device) { \
|
|
||||||
PCI_DEVICE_SUB(0xdd01, _device, 0xdd01, PCI_ANY_ID), \
|
|
||||||
.driver_data = (kernel_ulong_t) &ddb_none }
|
|
||||||
|
|
||||||
static const struct pci_device_id ddb_id_table[] __devinitconst = {
|
static const struct pci_device_id ddb_id_table[] __devinitconst = {
|
||||||
DDB_DEVICE(0x0002, 0x0001, ddb_octopus),
|
DDB_DEVICE_ANY(0x0002),
|
||||||
DDB_DEVICE(0x0003, 0x0001, ddb_octopus),
|
|
||||||
DDB_DEVICE(0x0005, 0x0004, ddb_octopusv3),
|
|
||||||
DDB_DEVICE(0x0003, 0x0002, ddb_octopus_le),
|
|
||||||
DDB_DEVICE(0x0003, 0x0003, ddb_octopus_oem),
|
|
||||||
DDB_DEVICE(0x0003, 0x0010, ddb_octopus_mini),
|
|
||||||
DDB_DEVICE(0x0005, 0x0011, ddb_octopus_mini),
|
|
||||||
DDB_DEVICE(0x0003, 0x0020, ddb_v6),
|
|
||||||
DDB_DEVICE(0x0003, 0x0021, ddb_v6_5),
|
|
||||||
DDB_DEVICE(0x0006, 0x0022, ddb_v7),
|
|
||||||
DDB_DEVICE(0x0006, 0x0024, ddb_v7a),
|
|
||||||
DDB_DEVICE(0x0003, 0x0030, ddb_dvbct),
|
|
||||||
DDB_DEVICE(0x0003, 0xdb03, ddb_satixS2v3),
|
|
||||||
DDB_DEVICE(0x0006, 0x0031, ddb_ctv7),
|
|
||||||
DDB_DEVICE(0x0006, 0x0032, ddb_ctv7),
|
|
||||||
DDB_DEVICE(0x0006, 0x0033, ddb_ctv7),
|
|
||||||
DDB_DEVICE(0x0007, 0x0023, ddb_s2_48),
|
|
||||||
DDB_DEVICE(0x0008, 0x0034, ddb_ct2_8),
|
|
||||||
DDB_DEVICE(0x0008, 0x0035, ddb_c2t2_8),
|
|
||||||
DDB_DEVICE(0x0008, 0x0036, ddb_isdbt_8),
|
|
||||||
DDB_DEVICE(0x0008, 0x0037, ddb_c2t2i_v0_8),
|
|
||||||
DDB_DEVICE(0x0008, 0x0038, ddb_c2t2i_8),
|
|
||||||
DDB_DEVICE(0x0006, 0x0039, ddb_ctv7),
|
|
||||||
DDB_DEVICE(0x0011, 0x0040, ddb_ci),
|
|
||||||
DDB_DEVICE(0x0011, 0x0041, ddb_cis),
|
|
||||||
DDB_DEVICE(0x0012, 0x0042, ddb_ci),
|
|
||||||
DDB_DEVICE(0x0013, 0x0043, ddb_ci_s2_pro),
|
|
||||||
DDB_DEVICE(0x0013, 0x0044, ddb_ci_s2_pro_a),
|
|
||||||
DDB_DEVICE(0x0201, 0x0001, ddb_mod),
|
|
||||||
DDB_DEVICE(0x0201, 0x0002, ddb_mod),
|
|
||||||
DDB_DEVICE(0x0203, 0x0001, ddb_mod),
|
|
||||||
DDB_DEVICE(0x0210, 0x0001, ddb_mod_fsm_24),
|
|
||||||
DDB_DEVICE(0x0210, 0x0002, ddb_mod_fsm_16),
|
|
||||||
DDB_DEVICE(0x0210, 0x0003, ddb_mod_fsm_8),
|
|
||||||
DDB_DEVICE(0x0220, 0x0001, ddb_sdr),
|
|
||||||
/* testing on OctopusNet Pro */
|
|
||||||
DDB_DEVICE(0x0320, PCI_ANY_ID, ddb_octopro_hdin),
|
|
||||||
DDB_DEVICE(0x0321, PCI_ANY_ID, ddb_none),
|
|
||||||
DDB_DEVICE(0x0322, PCI_ANY_ID, ddb_octopro),
|
|
||||||
DDB_DEVICE(0x0323, PCI_ANY_ID, ddb_none),
|
|
||||||
DDB_DEVICE(0x0328, PCI_ANY_ID, ddb_none),
|
|
||||||
DDB_DEVICE(0x0329, PCI_ANY_ID, ddb_octopro_hdin),
|
|
||||||
/* in case sub-ids got deleted in flash */
|
|
||||||
DDB_DEVICE_ANY(0x0003),
|
DDB_DEVICE_ANY(0x0003),
|
||||||
DDB_DEVICE_ANY(0x0005),
|
DDB_DEVICE_ANY(0x0005),
|
||||||
DDB_DEVICE_ANY(0x0006),
|
DDB_DEVICE_ANY(0x0006),
|
||||||
|
@ -750,4 +750,8 @@ int ddbridge_flashread(struct ddb *dev, u32 link, u8 *buf, u32 addr, u32 len);
|
|||||||
|
|
||||||
#define DDBRIDGE_VERSION "0.9.29"
|
#define DDBRIDGE_VERSION "0.9.29"
|
||||||
|
|
||||||
|
/* linked functions */
|
||||||
|
|
||||||
|
struct ddb_info *get_ddb_info(u16 vendor, u16 device, u16 subvendor, u16 subdevice);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -31,83 +31,8 @@
|
|||||||
#include <linux/pci-dma-compat.h>
|
#include <linux/pci-dma-compat.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static 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"
|
#include "ddbridge-core.c"
|
||||||
|
|
||||||
static struct ddb_regmap octopus_net_map = {
|
|
||||||
.irq_version = 1,
|
|
||||||
.irq_base_i2c = 0,
|
|
||||||
.i2c = &octopus_i2c,
|
|
||||||
.i2c_buf = &octopus_i2c_buf,
|
|
||||||
.input = &octopus_input,
|
|
||||||
.output = &octopus_output,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct ddb_regset octopus_gtl = {
|
|
||||||
.base = 0x180,
|
|
||||||
.num = 0x01,
|
|
||||||
.size = 0x20,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct ddb_regmap octopus_net_gtl = {
|
|
||||||
.irq_version = 1,
|
|
||||||
.irq_base_i2c = 0,
|
|
||||||
.irq_base_gtl = 10,
|
|
||||||
.i2c = &octopus_i2c,
|
|
||||||
.i2c_buf = &octopus_i2c_buf,
|
|
||||||
.input = &octopus_input,
|
|
||||||
.output = &octopus_output,
|
|
||||||
.gtl = &octopus_gtl,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct ddb_info ddb_octonet = {
|
|
||||||
.type = DDB_OCTONET,
|
|
||||||
.name = "Digital Devices OctopusNet network DVB adapter",
|
|
||||||
.regmap = &octopus_net_map,
|
|
||||||
.port_num = 4,
|
|
||||||
.i2c_mask = 0x0f,
|
|
||||||
.ns_num = 12,
|
|
||||||
.mdio_num = 1,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct ddb_info ddb_octonet_jse = {
|
|
||||||
.type = DDB_OCTONET,
|
|
||||||
.name = "Digital Devices OctopusNet network DVB adapter JSE",
|
|
||||||
.regmap = &octopus_net_map,
|
|
||||||
.port_num = 4,
|
|
||||||
.i2c_mask = 0x0f,
|
|
||||||
.ns_num = 15,
|
|
||||||
.mdio_num = 1,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct ddb_info ddb_octonet_gtl = {
|
|
||||||
.type = DDB_OCTONET,
|
|
||||||
.name = "Digital Devices OctopusNet GTL",
|
|
||||||
.regmap = &octopus_net_gtl,
|
|
||||||
.port_num = 4,
|
|
||||||
.i2c_mask = 0x05,
|
|
||||||
.ns_num = 12,
|
|
||||||
.mdio_num = 1,
|
|
||||||
.con_clock = 1,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct ddb_info ddb_octonet_tbd = {
|
|
||||||
.type = DDB_OCTONET,
|
|
||||||
.name = "Digital Devices OctopusNet",
|
|
||||||
.regmap = &octopus_net_map,
|
|
||||||
};
|
|
||||||
|
|
||||||
static void octonet_unmap(struct ddb *dev)
|
|
||||||
{
|
|
||||||
if (dev->regs)
|
|
||||||
iounmap(dev->regs);
|
|
||||||
vfree(dev);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int __exit octonet_remove(struct platform_device *pdev)
|
static int __exit octonet_remove(struct platform_device *pdev)
|
||||||
{
|
{
|
||||||
struct ddb *dev;
|
struct ddb *dev;
|
||||||
@ -168,6 +93,7 @@ static int __init octonet_probe(struct platform_device *pdev)
|
|||||||
dev->link[0].ids.subdevice = dev->link[0].ids.devid >> 16;
|
dev->link[0].ids.subdevice = dev->link[0].ids.devid >> 16;
|
||||||
|
|
||||||
dev->link[0].dev = dev;
|
dev->link[0].dev = dev;
|
||||||
|
#if 0
|
||||||
if (dev->link[0].ids.devid == 0x0300dd01)
|
if (dev->link[0].ids.devid == 0x0300dd01)
|
||||||
dev->link[0].info = &ddb_octonet;
|
dev->link[0].info = &ddb_octonet;
|
||||||
else if (dev->link[0].ids.devid == 0x0301dd01)
|
else if (dev->link[0].ids.devid == 0x0301dd01)
|
||||||
@ -176,7 +102,11 @@ static int __init octonet_probe(struct platform_device *pdev)
|
|||||||
dev->link[0].info = &ddb_octonet_gtl;
|
dev->link[0].info = &ddb_octonet_gtl;
|
||||||
else
|
else
|
||||||
dev->link[0].info = &ddb_octonet_tbd;
|
dev->link[0].info = &ddb_octonet_tbd;
|
||||||
|
#else
|
||||||
|
dev->link[0].info = get_ddb_info(dev->link[0].ids.vendor,
|
||||||
|
dev->link[0].ids.device,
|
||||||
|
0xdd01, 0xffff);
|
||||||
|
#endif
|
||||||
pr_info("DDBridge: HW %08x REGMAP %08x\n",
|
pr_info("DDBridge: HW %08x REGMAP %08x\n",
|
||||||
dev->link[0].ids.hwid, dev->link[0].ids.regmapid);
|
dev->link[0].ids.hwid, dev->link[0].ids.regmapid);
|
||||||
pr_info("DDBridge: MAC %08x DEVID %08x\n",
|
pr_info("DDBridge: MAC %08x DEVID %08x\n",
|
||||||
|
Loading…
Reference in New Issue
Block a user