summaryrefslogtreecommitdiff
path: root/v4l_experimental/firesat/firesat.c
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <mchehab@infradead.org>2006-06-25 01:18:06 -0300
committerMauro Carvalho Chehab <mchehab@infradead.org>2006-06-25 01:18:06 -0300
commit18928f84d7e9e4c5ee002d2127f28a3ea8daf8db (patch)
tree19e2cd4e514586be67c37c0d8ec3df78a1948d36 /v4l_experimental/firesat/firesat.c
parent6c9a1ff458d27546b0417368fe92a1442a0a609d (diff)
parent04e2c76f8d845ee90c1e85ee6a170618b22ff933 (diff)
downloadmediapointer-dvb-s2-18928f84d7e9e4c5ee002d2127f28a3ea8daf8db.tar.gz
mediapointer-dvb-s2-18928f84d7e9e4c5ee002d2127f28a3ea8daf8db.tar.bz2
merge: http://linuxtv.org/hg/~manu/v4l-algo
From: Mauro Carvalho Chehab <mchehab@infradead.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Diffstat (limited to 'v4l_experimental/firesat/firesat.c')
-rw-r--r--v4l_experimental/firesat/firesat.c332
1 files changed, 166 insertions, 166 deletions
diff --git a/v4l_experimental/firesat/firesat.c b/v4l_experimental/firesat/firesat.c
index 167c5a709..dcf268702 100644
--- a/v4l_experimental/firesat/firesat.c
+++ b/v4l_experimental/firesat/firesat.c
@@ -44,111 +44,111 @@
static struct ieee1394_device_id firesat_id_table[] = {
{
.match_flags = /*IEEE1394_MATCH_VENDOR_ID |*/ IEEE1394_MATCH_MODEL_ID | IEEE1394_MATCH_SPECIFIER_ID | IEEE1394_MATCH_VERSION,
- .model_id = 0x11,
- .specifier_id = AVC_UNIT_SPEC_ID_ENTRY & 0xffffff,
- .version = AVC_SW_VERSION_ENTRY & 0xffffff
+ .model_id = 0x11,
+ .specifier_id = AVC_UNIT_SPEC_ID_ENTRY & 0xffffff,
+ .version = AVC_SW_VERSION_ENTRY & 0xffffff
},
{
.match_flags = /*IEEE1394_MATCH_VENDOR_ID |*/ IEEE1394_MATCH_MODEL_ID | IEEE1394_MATCH_SPECIFIER_ID | IEEE1394_MATCH_VERSION,
- .model_id = 0x12,
- .specifier_id = AVC_UNIT_SPEC_ID_ENTRY & 0xffffff,
- .version = AVC_SW_VERSION_ENTRY & 0xffffff
+ .model_id = 0x12,
+ .specifier_id = AVC_UNIT_SPEC_ID_ENTRY & 0xffffff,
+ .version = AVC_SW_VERSION_ENTRY & 0xffffff
},
{
.match_flags = /*IEEE1394_MATCH_VENDOR_ID |*/ IEEE1394_MATCH_MODEL_ID | IEEE1394_MATCH_SPECIFIER_ID | IEEE1394_MATCH_VERSION,
// .vendor_id = FIRESAT_Vendor_ID & 0xffffff,
// .vendor_id = 0x000000,
- .model_id = 0x13,
- .specifier_id = AVC_UNIT_SPEC_ID_ENTRY & 0xffffff,
- .version = AVC_SW_VERSION_ENTRY & 0xffffff
+ .model_id = 0x13,
+ .specifier_id = AVC_UNIT_SPEC_ID_ENTRY & 0xffffff,
+ .version = AVC_SW_VERSION_ENTRY & 0xffffff
},
{
.match_flags = /*IEEE1394_MATCH_VENDOR_ID |*/ IEEE1394_MATCH_MODEL_ID | IEEE1394_MATCH_SPECIFIER_ID | IEEE1394_MATCH_VERSION,
// .vendor_id = FIRESAT_Vendor_ID & 0xffffff,
// .vendor_id = 0x000000,
- .model_id = 0x14,
- .specifier_id = AVC_UNIT_SPEC_ID_ENTRY & 0xffffff,
- .version = AVC_SW_VERSION_ENTRY & 0xffffff
+ .model_id = 0x14,
+ .specifier_id = AVC_UNIT_SPEC_ID_ENTRY & 0xffffff,
+ .version = AVC_SW_VERSION_ENTRY & 0xffffff
},
{
.match_flags = /*IEEE1394_MATCH_VENDOR_ID |*/ IEEE1394_MATCH_MODEL_ID | IEEE1394_MATCH_SPECIFIER_ID | IEEE1394_MATCH_VERSION,
// .vendor_id = FIRESAT_Vendor_ID & 0xffffff,
// .vendor_id = 0x000000,
- .model_id = 0x21,
- .specifier_id = AVC_UNIT_SPEC_ID_ENTRY & 0xffffff,
- .version = AVC_SW_VERSION_ENTRY & 0xffffff
+ .model_id = 0x21,
+ .specifier_id = AVC_UNIT_SPEC_ID_ENTRY & 0xffffff,
+ .version = AVC_SW_VERSION_ENTRY & 0xffffff
},
{
.match_flags = /*IEEE1394_MATCH_VENDOR_ID |*/ IEEE1394_MATCH_MODEL_ID | IEEE1394_MATCH_SPECIFIER_ID | IEEE1394_MATCH_VERSION,
// .vendor_id = FIRESAT_Vendor_ID & 0xffffff,
// .vendor_id = 0x000000,
- .model_id = 0x22,
- .specifier_id = AVC_UNIT_SPEC_ID_ENTRY & 0xffffff,
- .version = AVC_SW_VERSION_ENTRY & 0xffffff
+ .model_id = 0x22,
+ .specifier_id = AVC_UNIT_SPEC_ID_ENTRY & 0xffffff,
+ .version = AVC_SW_VERSION_ENTRY & 0xffffff
},
{
.match_flags = /*IEEE1394_MATCH_VENDOR_ID |*/ IEEE1394_MATCH_MODEL_ID | IEEE1394_MATCH_SPECIFIER_ID | IEEE1394_MATCH_VERSION,
// .vendor_id = FIRESAT_Vendor_ID & 0xffffff,
// .vendor_id = 0x000000,
- .model_id = 0x23,
- .specifier_id = AVC_UNIT_SPEC_ID_ENTRY & 0xffffff,
- .version = AVC_SW_VERSION_ENTRY & 0xffffff
+ .model_id = 0x23,
+ .specifier_id = AVC_UNIT_SPEC_ID_ENTRY & 0xffffff,
+ .version = AVC_SW_VERSION_ENTRY & 0xffffff
},
{
.match_flags = /*IEEE1394_MATCH_VENDOR_ID |*/ IEEE1394_MATCH_MODEL_ID | IEEE1394_MATCH_SPECIFIER_ID | IEEE1394_MATCH_VERSION,
// .vendor_id = FIRESAT_Vendor_ID & 0xffffff,
// .vendor_id = 0x000000,
- .model_id = 0x24,
- .specifier_id = AVC_UNIT_SPEC_ID_ENTRY & 0xffffff,
- .version = AVC_SW_VERSION_ENTRY & 0xffffff
+ .model_id = 0x24,
+ .specifier_id = AVC_UNIT_SPEC_ID_ENTRY & 0xffffff,
+ .version = AVC_SW_VERSION_ENTRY & 0xffffff
},
{
.match_flags = /*IEEE1394_MATCH_VENDOR_ID |*/ IEEE1394_MATCH_MODEL_ID | IEEE1394_MATCH_SPECIFIER_ID | IEEE1394_MATCH_VERSION,
// .vendor_id = FIRESAT_Vendor_ID & 0xffffff,
// .vendor_id = 0x000000,
- .model_id = 0x25,
- .specifier_id = AVC_UNIT_SPEC_ID_ENTRY & 0xffffff,
- .version = AVC_SW_VERSION_ENTRY & 0xffffff
+ .model_id = 0x25,
+ .specifier_id = AVC_UNIT_SPEC_ID_ENTRY & 0xffffff,
+ .version = AVC_SW_VERSION_ENTRY & 0xffffff
},
{
.match_flags = /*IEEE1394_MATCH_VENDOR_ID |*/ IEEE1394_MATCH_MODEL_ID | IEEE1394_MATCH_SPECIFIER_ID | IEEE1394_MATCH_VERSION,
// .vendor_id = FIRESAT_Vendor_ID & 0xffffff,
// .vendor_id = 0x000000,
- .model_id = 0x26,
- .specifier_id = AVC_UNIT_SPEC_ID_ENTRY & 0xffffff,
- .version = AVC_SW_VERSION_ENTRY & 0xffffff
+ .model_id = 0x26,
+ .specifier_id = AVC_UNIT_SPEC_ID_ENTRY & 0xffffff,
+ .version = AVC_SW_VERSION_ENTRY & 0xffffff
},
{
.match_flags = /*IEEE1394_MATCH_VENDOR_ID |*/ IEEE1394_MATCH_MODEL_ID | IEEE1394_MATCH_SPECIFIER_ID | IEEE1394_MATCH_VERSION,
// .vendor_id = FIRESAT_Vendor_ID & 0xffffff,
// .vendor_id = 0x000000,
- .model_id = 0x27,
- .specifier_id = AVC_UNIT_SPEC_ID_ENTRY & 0xffffff,
- .version = AVC_SW_VERSION_ENTRY & 0xffffff
+ .model_id = 0x27,
+ .specifier_id = AVC_UNIT_SPEC_ID_ENTRY & 0xffffff,
+ .version = AVC_SW_VERSION_ENTRY & 0xffffff
},
{
.match_flags = /*IEEE1394_MATCH_VENDOR_ID |*/ IEEE1394_MATCH_MODEL_ID | IEEE1394_MATCH_SPECIFIER_ID | IEEE1394_MATCH_VERSION,
// .vendor_id = FIRESAT_Vendor_ID & 0xffffff,
// .vendor_id = 0x000000,
- .model_id = 0x34,
- .specifier_id = AVC_UNIT_SPEC_ID_ENTRY & 0xffffff,
- .version = AVC_SW_VERSION_ENTRY & 0xffffff
+ .model_id = 0x34,
+ .specifier_id = AVC_UNIT_SPEC_ID_ENTRY & 0xffffff,
+ .version = AVC_SW_VERSION_ENTRY & 0xffffff
},
{
.match_flags = /*IEEE1394_MATCH_VENDOR_ID |*/ IEEE1394_MATCH_MODEL_ID | IEEE1394_MATCH_SPECIFIER_ID | IEEE1394_MATCH_VERSION,
// .vendor_id = FIRESAT_Vendor_ID & 0xffffff,
// .vendor_id = 0x000000,
- .model_id = 0x35,
- .specifier_id = AVC_UNIT_SPEC_ID_ENTRY & 0xffffff,
- .version = AVC_SW_VERSION_ENTRY & 0xffffff
+ .model_id = 0x35,
+ .specifier_id = AVC_UNIT_SPEC_ID_ENTRY & 0xffffff,
+ .version = AVC_SW_VERSION_ENTRY & 0xffffff
},
{
.match_flags = /*IEEE1394_MATCH_VENDOR_ID |*/ IEEE1394_MATCH_MODEL_ID | IEEE1394_MATCH_SPECIFIER_ID | IEEE1394_MATCH_VERSION,
// .vendor_id = FIRESAT_Vendor_ID & 0xffffff,
// .vendor_id = 0x000000,
- .model_id = 0x36,
- .specifier_id = AVC_UNIT_SPEC_ID_ENTRY & 0xffffff,
- .version = AVC_SW_VERSION_ENTRY & 0xffffff
+ .model_id = 0x36,
+ .specifier_id = AVC_UNIT_SPEC_ID_ENTRY & 0xffffff,
+ .version = AVC_SW_VERSION_ENTRY & 0xffffff
},
{ }
};
@@ -163,7 +163,7 @@ static void firesat_add_host (struct hpsb_host *host);
static void firesat_remove_host (struct hpsb_host *host);
static void firesat_host_reset(struct hpsb_host *host);
static void iso_receive(struct hpsb_host *host, int channel, quadlet_t *data,
- size_t length);
+ size_t length);
static void fcp_request(struct hpsb_host *host, int nodeid, int direction,
int cts, u8 *data, size_t length);
@@ -187,7 +187,7 @@ static struct dvb_frontend_info firesat_S_frontend_info = {
.symbol_rate_max = 40000000,
.caps = FE_CAN_INVERSION_AUTO | FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 |
FE_CAN_FEC_3_4 | FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 |
- FE_CAN_FEC_AUTO | FE_CAN_QPSK,
+ FE_CAN_FEC_AUTO | FE_CAN_QPSK,
};
static struct dvb_frontend_info firesat_C_frontend_info = {
@@ -217,18 +217,18 @@ static struct dvb_frontend_info firesat_T_frontend_info = {
static void firesat_add_host (struct hpsb_host *host) {
struct ti_ohci *ohci;
// printk(KERN_INFO "FireSAT add_host (nodeid = 0x%x)\n",host->node_id);
-
+
/* We only work with the OHCI-1394 driver */
if (strcmp(host->driver->name, OHCI1394_DRIVER_NAME))
return;
-
+
ohci = (struct ti_ohci *)host->hostdata;
-
+
if (!hpsb_create_hostinfo(&firesat_highlevel, host, 0)) {
printk(KERN_ERR "Cannot allocate hostinfo\n");
return;
}
-
+
hpsb_set_hostinfo(&firesat_highlevel, host, ohci);
hpsb_set_hostinfo_key(&firesat_highlevel, host, ohci->host->id);
}
@@ -243,65 +243,65 @@ static void firesat_host_reset(struct hpsb_host *host) {
struct firewireheader {
union {
- struct {
- unsigned char tcode:4;
- unsigned char sy:4;
- unsigned char tag:2;
- unsigned char channel:6;
-
- unsigned char length_l;
- unsigned char length_h;
- } hdr;
- unsigned long val;
+ struct {
+ unsigned char tcode:4;
+ unsigned char sy:4;
+ unsigned char tag:2;
+ unsigned char channel:6;
+
+ unsigned char length_l;
+ unsigned char length_h;
+ } hdr;
+ unsigned long val;
};
};
struct CIPHeader {
union {
- struct {
- unsigned char syncbits:2;
- unsigned char sid:6;
- unsigned char dbs;
- unsigned char fn:2;
- unsigned char qpc:3;
- unsigned char sph:1;
- unsigned char rsv:2;
- unsigned char dbc;
- unsigned char syncbits2:2;
- unsigned char fmt:6;
- unsigned long fdf:24;
- } cip;
- unsigned long long val;
+ struct {
+ unsigned char syncbits:2;
+ unsigned char sid:6;
+ unsigned char dbs;
+ unsigned char fn:2;
+ unsigned char qpc:3;
+ unsigned char sph:1;
+ unsigned char rsv:2;
+ unsigned char dbc;
+ unsigned char syncbits2:2;
+ unsigned char fmt:6;
+ unsigned long fdf:24;
+ } cip;
+ unsigned long long val;
};
};
struct MPEG2Header {
union {
- struct {
- unsigned char sync; // must be 0x47
- unsigned char transport_error_indicator:1;
- unsigned char payload_unit_start_indicator:1;
- unsigned char transport_priority:1;
- unsigned short pid:13;
- unsigned char transport_scrambling_control:2;
- unsigned char adaption_field_control:2;
- unsigned char continuity_counter:4;
- } hdr;
- unsigned long val;
+ struct {
+ unsigned char sync; // must be 0x47
+ unsigned char transport_error_indicator:1;
+ unsigned char payload_unit_start_indicator:1;
+ unsigned char transport_priority:1;
+ unsigned short pid:13;
+ unsigned char transport_scrambling_control:2;
+ unsigned char adaption_field_control:2;
+ unsigned char continuity_counter:4;
+ } hdr;
+ unsigned long val;
};
};
static void iso_receive(struct hpsb_host *host, int channel, quadlet_t *data,
- size_t length) {
+ size_t length) {
// printk(KERN_INFO "FireSAT iso_receive: channel %d, length = %d\n", channel, length);
-
+
if(length <= 12)
return; // ignore empty packets
else {
struct firesat *firesat=NULL;
struct firesat *firesat_entry;
unsigned long flags;
-
+
spin_lock_irqsave(&firesat_list_lock, flags);
list_for_each_entry(firesat_entry,&firesat_list,list) {
if(firesat_entry->host == host && firesat_entry->isochannel == channel) {
@@ -310,15 +310,15 @@ static void iso_receive(struct hpsb_host *host, int channel, quadlet_t *data,
}
}
spin_unlock_irqrestore(&firesat_list_lock, flags);
-
+
if(firesat) {
char *buf=((char*)data) + sizeof(struct firewireheader)+sizeof(struct CIPHeader);
int count = (length-sizeof(struct CIPHeader)) / 192;
-
+
// printk(KERN_INFO "%s: length = %u\n data[0] = %08x\n data[1] = %08x\n data[2] = %08x\n data[3] = %08x\n data[4] = %08x\n",__FUNCTION__, length, data[0],data[1],data[2],data[3],data[4]);
-
+
while (count--) {
-
+
if(buf[sizeof(quadlet_t) /*timestamp*/] == 0x47)
dvb_dmx_swfilter_packet(&firesat->demux, &buf[sizeof(quadlet_t)]);
else
@@ -332,10 +332,10 @@ static void iso_receive(struct hpsb_host *host, int channel, quadlet_t *data,
static void fcp_request(struct hpsb_host *host, int nodeid, int direction,
int cts, u8 *data, size_t length) {
// printk(KERN_INFO "FireSAT fcp_request length=%d\n",length);
- if(length>0 && ((data[0] & 0xF0) >> 4) == 0) {
+ if(length>0 && ((data[0] & 0xF0) >> 4) == 0) {
struct firesat *firesat=NULL;
struct firesat *firesat_entry;
- unsigned long flags;
+ unsigned long flags;
spin_lock_irqsave(&firesat_list_lock, flags);
list_for_each_entry(firesat_entry,&firesat_list,list) {
@@ -356,7 +356,7 @@ static void fcp_request(struct hpsb_host *host, int nodeid, int direction,
static int firesat_frontend_ioctl(struct dvb_frontend *frontend,
unsigned int cmd, void *arg) {
struct firesat *firesat=frontend->data;
-
+
switch(cmd) {
case FE_INIT:
firesat->isochannel = firesat->adapter->num << 1 | (firesat->subunit & 0x1); // ### ask IRM
@@ -401,13 +401,13 @@ static int firesat_frontend_ioctl(struct dvb_frontend *frontend,
if(AVCTunerStatus(firesat,&info)) {
return -EINVAL;
}
-// printk(KERN_INFO "%s: NoRF=%c\n",__FUNCTION__,info.NoRF?'y':'n');
+// printk(KERN_INFO "%s: NoRF=%c\n",__FUNCTION__,info.NoRF?'y':'n');
if(info.NoRF)
*status = 0;
else
*status = *status = FE_HAS_SIGNAL | FE_HAS_VITERBI |
FE_HAS_SYNC | FE_HAS_CARRIER | FE_HAS_LOCK;
-
+
break;
}
case FE_READ_BER: {
@@ -418,10 +418,10 @@ static int firesat_frontend_ioctl(struct dvb_frontend *frontend,
if(AVCTunerStatus(firesat,&info)) {
return -EINVAL;
}
-
+
// *ber = *(u32*)info.BER; /* might need some byte ordering correction */
*ber = ((info.BER[0] << 24) & 0xFF) | ((info.BER[1] << 16) & 0xFF) | ((info.BER[2] << 8) & 0xFF) | (info.BER[3] & 0xFF);
-
+
break;
}
case FE_READ_SIGNAL_STRENGTH: {
@@ -432,9 +432,9 @@ static int firesat_frontend_ioctl(struct dvb_frontend *frontend,
if(AVCTunerStatus(firesat,&info)) {
return -EINVAL;
}
-
+
*signal = info.SignalStrength;
-
+
break;
}
case FE_READ_SNR:
@@ -444,18 +444,18 @@ static int firesat_frontend_ioctl(struct dvb_frontend *frontend,
struct dvb_frontend_parameters *p =
(struct dvb_frontend_parameters *)arg;
// printk(KERN_INFO "FE_GET_INFO\n");
-
+
// printk(KERN_INFO "%s: FE_SET_FRONTEND\n", __FUNCTION__);
-
+
// printk(KERN_INFO " frequency->%d\n", p->frequency);
// printk(KERN_INFO " symbol_rate->%d\n",p->u.qam.symbol_rate);
// printk(KERN_INFO " inversion->%d\n", p->inversion);
-
+
// if(AVCTuner_DSIT(firesat, 0/*###*/, p, NULL))
// return -EINVAL;
if(AVCTuner_DSD(firesat, p, NULL) != ACCEPTED)
return -EINVAL;
-
+
break;
}
case FE_GET_FRONTEND:
@@ -464,7 +464,7 @@ static int firesat_frontend_ioctl(struct dvb_frontend *frontend,
default:
return -EINVAL;
}
-
+
return 0;
}
@@ -472,10 +472,10 @@ static struct firesat_channel *firesat_channel_allocate(struct firesat *firesat)
int k;
printk(KERN_INFO "%s\n",__FUNCTION__);
-
+
if(down_interruptible(&firesat->demux_sem))
return NULL;
-
+
for(k=0;k<16;k++) {
printk(KERN_INFO "%s: channel %d: active = %d, pid = 0x%x\n",__FUNCTION__,k,firesat->channel[k].active,firesat->channel[k].pid);
if(firesat->channel[k].active == 0) {
@@ -484,25 +484,25 @@ static struct firesat_channel *firesat_channel_allocate(struct firesat *firesat)
return &firesat->channel[k];
}
}
-
+
up(&firesat->demux_sem);
return NULL; // no more channels available
}
static int firesat_channel_collect(struct firesat *firesat, int *pidc, u16 pid[]) {
int k, l=0;
-
+
if(down_interruptible(&firesat->demux_sem))
return -EINTR;
-
+
for(k=0;k<16;k++)
if(firesat->channel[k].active == 1)
pid[l++] = firesat->channel[k].pid;
-
+
up(&firesat->demux_sem);
-
+
*pidc = l;
-
+
return 0;
}
@@ -523,7 +523,7 @@ static int firesat_start_feed(struct dvb_demux_feed *dvbdmxfeed) {
u16 pids[16];
printk(KERN_INFO "%s (pid %u)\n",__FUNCTION__,dvbdmxfeed->pid);
-
+
switch (dvbdmxfeed->type) {
case DMX_TYPE_TS:
case DMX_TYPE_SEC:
@@ -549,30 +549,30 @@ static int firesat_start_feed(struct dvb_demux_feed *dvbdmxfeed) {
} else {
channel = firesat_channel_allocate(firesat);
}
-
+
if(!channel) {
printk("%s: busy!\n",__FUNCTION__);
return -EBUSY;
}
-
+
dvbdmxfeed->priv = channel;
channel->dvbdmxfeed = dvbdmxfeed;
channel->pid = dvbdmxfeed->pid;
channel->type = dvbdmxfeed->type;
channel->firesat = firesat;
-
+
if(firesat_channel_collect(firesat, &pidc, pids)) {
firesat_channel_release(firesat, channel);
return -EINTR;
}
-
+
if((k=AVCTuner_SetPIDs(firesat, pidc, pids))) {
firesat_channel_release(firesat, channel);
printk("%s: AVCTuner failed with error %d\n",__FUNCTION__,k);
return k;
}
-
+
return 0;
}
@@ -581,11 +581,11 @@ static int firesat_stop_feed(struct dvb_demux_feed *dvbdmxfeed) {
struct firesat *firesat=(struct firesat*)demux->priv;
int k, l=0;
u16 pids[16];
-
+
printk(KERN_INFO "%s (pid %u)\n",__FUNCTION__,dvbdmxfeed->pid);
- if (dvbdmxfeed->type == DMX_TYPE_TS && !((dvbdmxfeed->ts_type & TS_PACKET) &&
- (demux->dmx.frontend->source != DMX_MEMORY_FE))) {
+ if (dvbdmxfeed->type == DMX_TYPE_TS && !((dvbdmxfeed->ts_type & TS_PACKET) &&
+ (demux->dmx.frontend->source != DMX_MEMORY_FE))) {
if (dvbdmxfeed->ts_type & TS_DECODER) {
if (dvbdmxfeed->pes_type >= DMX_TS_PES_OTHER ||
!demux->pesfilter[dvbdmxfeed->pes_type])
@@ -596,7 +596,7 @@ static int firesat_stop_feed(struct dvb_demux_feed *dvbdmxfeed) {
if (!(dvbdmxfeed->ts_type & TS_DECODER &&
dvbdmxfeed->pes_type < DMX_TS_PES_OTHER)) {
return 0;
- }
+ }
}
if(down_interruptible(&firesat->demux_sem))
@@ -611,11 +611,11 @@ static int firesat_stop_feed(struct dvb_demux_feed *dvbdmxfeed) {
up(&firesat->demux_sem);
return k;
}
-
+
((struct firesat_channel*)dvbdmxfeed->priv)->active = 0;
up(&firesat->demux_sem);
-
+
return 0;
}
@@ -631,16 +631,16 @@ static int firesat_probe(struct device *dev) {
printk("%s: couldn't allocate memory.\n", __FUNCTION__);
return -ENOMEM;
}
-
+
// printk(KERN_INFO "FireSAT: Detected device with GUID %08lx%04lx%04lx\n",(unsigned long)((ud->ne->guid)>>32),(unsigned long)(ud->ne->guid & 0xFFFF),(unsigned long)ud->ne->guid_vendor_id);
printk(KERN_INFO "%s: loading device\n", __FUNCTION__);
-
+
firesats[0]=NULL;
firesats[1]=NULL;
-
+
ud->device.driver_data = firesats;
-
- for(subunit=0;subunit<subunitcount;subunit++) {
+
+ for(subunit=0;subunit<subunitcount;subunit++) {
if (!(firesat = kmalloc(sizeof(struct firesat), GFP_KERNEL))) {
printk("%s: couldn't allocate memory.\n", __FUNCTION__);
kfree(firesats);
@@ -660,12 +660,12 @@ static int firesat_probe(struct device *dev) {
kfree(firesat);
return -ENOMEM;
}
-
+
sema_init(&firesat->avc_sem, 1);
atomic_set(&firesat->avc_reply_received, 1);
sema_init(&firesat->demux_sem, 1);
atomic_set(&firesat->reschedule_remotecontrol, 0);
-
+
spin_lock_irqsave(&firesat_list_lock, flags);
INIT_LIST_HEAD(&firesat->list);
list_add_tail(&firesat->list, &firesat_list);
@@ -727,18 +727,18 @@ static int firesat_probe(struct device *dev) {
firesat->model_name, THIS_MODULE)) < 0) {
printk("%s: dvb_register_adapter failed: error %d\n",
__FUNCTION__, result);
-
+
/* ### cleanup */
spin_lock_irqsave(&firesat_list_lock, flags);
list_del(&firesat->list);
spin_unlock_irqrestore(&firesat_list_lock, flags);
kfree(firesat);
-
+
return result;
}
-
+
firesat->demux.dmx.capabilities = 0/*DMX_TS_FILTERING | DMX_SECTION_FILTERING*/;
-
+
firesat->demux.priv = (void *)firesat;
firesat->demux.filternum = 16;
firesat->demux.feednum = 16;
@@ -746,82 +746,82 @@ static int firesat_probe(struct device *dev) {
firesat->demux.stop_feed = firesat_stop_feed;
firesat->demux.write_to_decoder = NULL;
-
+
if ((result = dvb_dmx_init(&firesat->demux)) < 0) {
printk("%s: dvb_dmx_init failed: error %d\n", __FUNCTION__,
result);
-
+
dvb_unregister_adapter(firesat->adapter);
-
+
return result;
}
-
+
firesat->dmxdev.filternum = 16;
firesat->dmxdev.demux = &firesat->demux.dmx;
firesat->dmxdev.capabilities = 0;
-
+
if ((result = dvb_dmxdev_init(&firesat->dmxdev, firesat->adapter)) < 0) {
printk("%s: dvb_dmxdev_init failed: error %d\n",
__FUNCTION__, result);
-
+
dvb_dmx_release(&firesat->demux);
dvb_unregister_adapter(firesat->adapter);
-
+
return result;
}
-
+
firesat->frontend.source = DMX_FRONTEND_0;
-
+
if ((result = firesat->demux.dmx.add_frontend(&firesat->demux.dmx,
&firesat->frontend)) < 0) {
printk("%s: dvb_dmx_init failed: error %d\n", __FUNCTION__,
result);
-
+
dvb_dmxdev_release(&firesat->dmxdev);
dvb_dmx_release(&firesat->demux);
dvb_unregister_adapter(firesat->adapter);
-
+
return result;
}
-
+
if ((result = firesat->demux.dmx.connect_frontend(&firesat->demux.dmx,
&firesat->frontend)) < 0) {
printk("%s: dvb_dmx_init failed: error %d\n", __FUNCTION__,
result);
-
+
firesat->demux.dmx.remove_frontend(&firesat->demux.dmx, &firesat->frontend);
dvb_dmxdev_release(&firesat->dmxdev);
dvb_dmx_release(&firesat->demux);
dvb_unregister_adapter(firesat->adapter);
-
+
return result;
}
-
+
dvb_net_init(firesat->adapter, &firesat->dvbnet, &firesat->demux.dmx);
-
+
if((result= dvb_register_frontend(firesat_frontend_ioctl,firesat->adapter,firesat,firesat->frontend_info,THIS_MODULE)) < 0) {
printk("%s: dvb_register_frontend_new failed: error %d\n", __FUNCTION__, result);
/* ### cleanup */
-
+
return result;
}
if(firesat->has_ci)
firesat_ca_init(firesat);
-
+
firesats[subunit] = firesat;
} // loop fuer alle tuner am board
if(firesats[0])
AVCRegisterRemoteControl(firesats[0]);
-
+
return 0;
}
static int firesat_remove(struct device *dev) {
struct unit_directory *ud=container_of(dev, struct unit_directory, device);
struct firesat **firesats=ud->device.driver_data;
-
+
if(firesats) {
int k;
for(k=0;k<2;k++)
@@ -830,7 +830,7 @@ static int firesat_remove(struct device *dev) {
if(firesats[k]->has_ci)
firesat_ca_release(firesats[k]);
dvb_unregister_frontend(firesat_frontend_ioctl,firesats[k]->adapter);
-
+
dvb_net_release(&firesats[k]->dvbnet);
firesats[k]->demux.dmx.close(&firesats[k]->demux.dmx);
firesats[k]->demux.dmx.remove_frontend(&firesats[k]->demux.dmx, &firesats[k]->frontend);
@@ -841,14 +841,14 @@ static int firesat_remove(struct device *dev) {
spin_lock_irqsave(&firesat_list_lock, flags);
list_del(&firesats[k]->list);
spin_unlock_irqrestore(&firesat_list_lock, flags);
-
+
kfree(firesats[k]->respfrm);
kfree(firesats[k]);
}
kfree(firesats);
} else
printk("%s: can't get firesat handle\n",__FUNCTION__);
-
+
printk(KERN_INFO "FireSAT: Removing device with vendor id 0x%x, model id 0x%x.\n",ud->vendor_id,ud->model_id);
return 0;
}
@@ -858,7 +858,7 @@ static int firesat_update(struct unit_directory *ud) {
struct firesat **firesats=ud->device.driver_data;
int k;
// loop over subunits
-
+
for(k=0;k<2;k++)
if(firesats[k]) {
firesats[k]->nodeentry=ud->ne;
@@ -877,8 +877,8 @@ static struct hpsb_protocol_driver firesat_driver = {
.driver = {
.name = "firesat",
.bus = &ieee1394_bus_type,
- .probe = firesat_probe,
- .remove = firesat_remove,
+ .probe = firesat_probe,
+ .remove = firesat_remove,
},
};
@@ -889,20 +889,20 @@ static int __init firesat_init(void)
hpsb_register_highlevel(&firesat_highlevel);
ret = hpsb_register_protocol(&firesat_driver);
if(ret) {
- printk(KERN_ERR "FireSAT: failed to register protocol\n");
- hpsb_unregister_highlevel(&firesat_highlevel);
- return ret;
+ printk(KERN_ERR "FireSAT: failed to register protocol\n");
+ hpsb_unregister_highlevel(&firesat_highlevel);
+ return ret;
}
if((ret=firesat_register_rc()))
printk("%s: firesat_register_rc return error code %d (ignored)\n",__FUNCTION__,ret);
-
+
return 0;
}
static void __exit firesat_exit(void){
firesat_unregister_rc();
-
+
hpsb_unregister_protocol(&firesat_driver);
hpsb_unregister_highlevel(&firesat_highlevel);
printk("FireSAT quit\n");