From b9e694c843a9f52b30c41427c2a28be34e252d22 Mon Sep 17 00:00:00 2001 From: "Igor M. Liplianin" Date: Thu, 25 Sep 2008 04:48:53 +0300 Subject: Kconfig correction for USB card modification with SI2109/2110 demodulator. From: Igor M. Liplianin Kconfig correction for USB card modification with SI2109/2110 demodulator. Signed-off-by: Igor M. Liplianin --- linux/drivers/media/dvb/dvb-usb/Kconfig | 1 + 1 file changed, 1 insertion(+) (limited to 'linux') diff --git a/linux/drivers/media/dvb/dvb-usb/Kconfig b/linux/drivers/media/dvb/dvb-usb/Kconfig index aee3b5dd6..0131424e1 100644 --- a/linux/drivers/media/dvb/dvb-usb/Kconfig +++ b/linux/drivers/media/dvb/dvb-usb/Kconfig @@ -252,6 +252,7 @@ config DVB_USB_DW2102 select DVB_PLL if !DVB_FE_CUSTOMISE select DVB_STV0299 if !DVB_FE_CUSTOMISE select DVB_CX24116 if !DVB_FE_CUSTOMISE + select DVB_SI21XX if !DVB_FE_CUSTOMISE help Say Y here to support the DvbWorld DVB-S/S2 USB2.0 receivers and the TeVii S650. -- cgit v1.2.3 From 90c4877707444823952b5c1bf995395b73e0c0c4 Mon Sep 17 00:00:00 2001 From: "Igor M. Liplianin" Date: Thu, 25 Sep 2008 05:18:27 +0300 Subject: Kconfig dependency fix for DW2002 card with ST STV0288 demodulator. From: Igor M. Liplianin Kconfig dependency fix for DW2002 card with ST STV0288 demodulator. Signed-off-by: Igor M. Liplianin --- linux/drivers/media/dvb/dm1105/Kconfig | 2 ++ 1 file changed, 2 insertions(+) (limited to 'linux') diff --git a/linux/drivers/media/dvb/dm1105/Kconfig b/linux/drivers/media/dvb/dm1105/Kconfig index 2af5fffe1..1332301ef 100644 --- a/linux/drivers/media/dvb/dm1105/Kconfig +++ b/linux/drivers/media/dvb/dm1105/Kconfig @@ -3,6 +3,8 @@ config DVB_DM1105 depends on DVB_CORE && PCI && I2C select DVB_PLL if !DVB_FE_CUSTOMISE select DVB_STV0299 if !DVB_FE_CUSTOMISE + select DVB_STV0288 if !DVB_FE_CUSTOMISE + select DVB_STB6000 if !DVB_FE_CUSTOMISE select DVB_CX24116 if !DVB_FE_CUSTOMISE select DVB_SI21XX if !DVB_FE_CUSTOMISE help -- cgit v1.2.3 From 607559123926c97eda4e7f7920ddd392408fd1e3 Mon Sep 17 00:00:00 2001 From: Steven Toth Date: Thu, 25 Sep 2008 15:51:11 -0400 Subject: cx88: Bugfix: all client disconnects put the frontend to sleep. From: Darron Broad From the author: "This fixes the problem where previously all client disconnects put the analogue frontend into standby. In the following example, the first command is succesfully watching TV but the second command which returns EBUSY detunes the receiver by entering it into the standby state. tvtime -d /dev/video0 & cat /dev/video0 " Priority: normal Signed-off-by: Steven Toth Signed-off-by: Darron Broad --- linux/drivers/media/video/cx88/cx88-video.c | 5 ++++- linux/drivers/media/video/cx88/cx88.h | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) (limited to 'linux') diff --git a/linux/drivers/media/video/cx88/cx88-video.c b/linux/drivers/media/video/cx88/cx88-video.c index 3a7a9ed17..c4fdb6da2 100644 --- a/linux/drivers/media/video/cx88/cx88-video.c +++ b/linux/drivers/media/video/cx88/cx88-video.c @@ -1065,6 +1065,8 @@ static int video_open(struct inode *inode, struct file *file) } unlock_kernel(); + atomic_inc(&core->users); + return 0; } @@ -1152,7 +1154,8 @@ static int video_release(struct inode *inode, struct file *file) file->private_data = NULL; kfree(fh); - cx88_call_i2c_clients (dev->core, TUNER_SET_STANDBY, NULL); + if(atomic_dec_and_test(&dev->core->users)) + cx88_call_i2c_clients (dev->core, TUNER_SET_STANDBY, NULL); return 0; } diff --git a/linux/drivers/media/video/cx88/cx88.h b/linux/drivers/media/video/cx88/cx88.h index 238370681..38702eb4f 100644 --- a/linux/drivers/media/video/cx88/cx88.h +++ b/linux/drivers/media/video/cx88/cx88.h @@ -352,6 +352,7 @@ struct cx88_core { struct mutex lock; /* various v4l controls */ u32 freq; + atomic_t users; /* cx88-video needs to access cx8802 for hybrid tuner pll access. */ struct cx8802_dev *dvbdev; -- cgit v1.2.3 From dd77367427f2ae6d28b7038885cb6e4d4a64631a Mon Sep 17 00:00:00 2001 From: Steven Toth Date: Thu, 25 Sep 2008 23:04:52 -0400 Subject: S2API: Removed the typedef for the commands, used defines instead. From: Steven Toth Priority: normal Signed-off-by: Steven Toth --- linux/include/linux/dvb/frontend.h | 114 +++++++++++++++++-------------------- 1 file changed, 51 insertions(+), 63 deletions(-) (limited to 'linux') diff --git a/linux/include/linux/dvb/frontend.h b/linux/include/linux/dvb/frontend.h index 6793deada..9c5d64864 100644 --- a/linux/include/linux/dvb/frontend.h +++ b/linux/include/linux/dvb/frontend.h @@ -246,71 +246,59 @@ struct dvb_frontend_event { struct dvb_frontend_parameters parameters; }; -/* TODO: Turn this into a series of defines, so future maintainers - * don't insert random new commands and break backwards - * binary compatability. - */ -typedef enum dtv_cmd_types { - DTV_UNDEFINED, - DTV_TUNE, - DTV_CLEAR, - - DTV_FREQUENCY, - DTV_MODULATION, - - /* XXX PB: I would like to have field which describes the - * bandwidth of a channel in Hz or kHz - maybe we can remove the - * DTV_BANDWIDTH now and put a compat layer */ - DTV_BANDWIDTH_HZ, - - DTV_INVERSION, - DTV_DISEQC_MASTER, - DTV_SYMBOL_RATE, - DTV_INNER_FEC, - DTV_VOLTAGE, - DTV_TONE, - DTV_PILOT, - DTV_ROLLOFF, - - DTV_DISEQC_SLAVE_REPLY, - - /* Basic enumeration set for querying unlimited capabilities */ - DTV_FE_CAPABILITY_COUNT, - DTV_FE_CAPABILITY, - - /* New commands are always appended */ - DTV_DELIVERY_SYSTEM, +/* S2API Commands */ +#define DTV_UNDEFINED 0 +#define DTV_TUNE 1 +#define DTV_CLEAR 2 +#define DTV_FREQUENCY 3 +#define DTV_MODULATION 4 +#define DTV_BANDWIDTH_HZ 5 +#define DTV_INVERSION 6 +#define DTV_DISEQC_MASTER 7 +#define DTV_SYMBOL_RATE 8 +#define DTV_INNER_FEC 9 +#define DTV_VOLTAGE 10 +#define DTV_TONE 11 +#define DTV_PILOT 12 +#define DTV_ROLLOFF 13 +#define DTV_DISEQC_SLAVE_REPLY 14 + +/* Basic enumeration set for querying unlimited capabilities */ +#define DTV_FE_CAPABILITY_COUNT 15 +#define DTV_FE_CAPABILITY 16 +#define DTV_DELIVERY_SYSTEM 17 + #if 0 - /* ISDB */ - /* maybe a dup of DTV_ISDB_SOUND_BROADCASTING_SUBCHANNEL_ID ??? */ - DTV_ISDB_SEGMENT_IDX, - DTV_ISDB_SEGMENT_WIDTH, /* 1, 3 or 13 ??? */ - - /* the central segment can be received independently or 1/3 seg in SB-mode */ - DTV_ISDB_PARTIAL_RECEPTION, - /* sound broadcasting is used 0 = 13segment, 1 = 1 or 3 see DTV_ISDB_PARTIAL_RECEPTION */ - DTV_ISDB_SOUND_BROADCASTING, - - /* only used in SB */ - /* determines the initial PRBS of the segment (to match with 13seg channel) */ - DTV_ISDB_SOUND_BROADCASTING_SUBCHANNEL_ID, - - DTV_ISDB_LAYERA_FEC, - DTV_ISDB_LAYERA_MODULATION, - DTV_ISDB_LAYERA_SEGMENT_WIDTH, - DTV_ISDB_LAYERA_TIME_INTERLEAVER, - - DTV_ISDB_LAYERB_FEC, - DTV_ISDB_LAYERB_MODULATION, - DTV_ISDB_LAYERB_SEGMENT_WIDTH, - DTV_ISDB_LAYERB_TIME_INTERLEAVING, - - DTV_ISDB_LAYERC_FEC, - DTV_ISDB_LAYERC_MODULATION, - DTV_ISDB_LAYERC_SEGMENT_WIDTH, - DTV_ISDB_LAYERC_TIME_INTERLEAVING, +/* ISDB */ +/* maybe a dup of DTV_ISDB_SOUND_BROADCASTING_SUBCHANNEL_ID ??? */ +#define DTV_ISDB_SEGMENT_IDX 18 +/* 1, 3 or 13 ??? */ +#define DTV_ISDB_SEGMENT_WIDTH 19 + +/* the central segment can be received independently or 1/3 seg in SB-mode */ +#define DTV_ISDB_PARTIAL_RECEPTION 20 +/* sound broadcasting is used 0 = 13segment, 1 = 1 or 3 see DTV_ISDB_PARTIAL_RECEPTION */ +#define DTV_ISDB_SOUND_BROADCASTING 21 + +/* only used in SB */ +/* determines the initial PRBS of the segment (to match with 13seg channel) */ +#define DTV_ISDB_SOUND_BROADCASTING_SUBCHANNEL_ID 22 + +#define DTV_ISDB_LAYERA_FEC 23 +#define DTV_ISDB_LAYERA_MODULATION 24 +#define DTV_ISDB_LAYERA_SEGMENT_WIDTH 25 +#define DTV_ISDB_LAYERA_TIME_INTERLEAVER 26 + +#define DTV_ISDB_LAYERB_FEC 27 +#define DTV_ISDB_LAYERB_MODULATION 28 +#define DTV_ISDB_LAYERB_SEGMENT_WIDTH 29 +#define DTV_ISDB_LAYERB_TIME_INTERLEAVING 30 + +#define DTV_ISDB_LAYERC_FEC 31 +#define DTV_ISDB_LAYERC_MODULATION 32 +#define DTV_ISDB_LAYERC_SEGMENT_WIDTH 33 +#define DTV_ISDB_LAYERC_TIME_INTERLEAVING 34 #endif -} dtv_cmd_types_t; typedef enum fe_pilot { PILOT_ON, -- cgit v1.2.3 From 506cfbf07f4322d8a43fd8bd0055c142db5cf615 Mon Sep 17 00:00:00 2001 From: Steven Toth Date: Thu, 25 Sep 2008 23:16:25 -0400 Subject: S2API: Implement result codes for individual commands From: Steven Toth This allows application developers to determine which particular command in a sequence is invalid, or failing with error. Priority: normal Signed-off-by: Steven Toth --- linux/drivers/media/dvb/dvb-core/dvb_frontend.c | 12 ++++++++---- linux/include/linux/dvb/frontend.h | 1 + 2 files changed, 9 insertions(+), 4 deletions(-) (limited to 'linux') diff --git a/linux/drivers/media/dvb/dvb-core/dvb_frontend.c b/linux/drivers/media/dvb/dvb-core/dvb_frontend.c index 5c1193524..9f3a61827 100644 --- a/linux/drivers/media/dvb/dvb-core/dvb_frontend.c +++ b/linux/drivers/media/dvb/dvb-core/dvb_frontend.c @@ -1377,8 +1377,10 @@ static int dvb_frontend_ioctl_properties(struct inode *inode, struct file *file, goto out; } - for (i = 0; i < tvps->num; i++) - err |= dtv_property_process_set(fe, tvp + i, inode, file); + for (i = 0; i < tvps->num; i++) { + (tvp + i)->result = dtv_property_process_set(fe, tvp + i, inode, file); + err |= (tvp + i)->result; + } if(fe->dtv_property_cache.state == DTV_TUNE) { printk("%s() Property cache is full, tuning\n", __FUNCTION__); @@ -1410,8 +1412,10 @@ static int dvb_frontend_ioctl_properties(struct inode *inode, struct file *file, goto out; } - for (i = 0; i < tvps->num; i++) - err |= dtv_property_process_get(fe, tvp + i, inode, file); + for (i = 0; i < tvps->num; i++) { + (tvp + i)->result = dtv_property_process_get(fe, tvp + i, inode, file); + err |= (tvp + i)->result; + } if (copy_to_user(tvps->props, tvp, tvps->num * sizeof(struct dtv_property))) { err = -EFAULT; diff --git a/linux/include/linux/dvb/frontend.h b/linux/include/linux/dvb/frontend.h index 9c5d64864..ecac80d32 100644 --- a/linux/include/linux/dvb/frontend.h +++ b/linux/include/linux/dvb/frontend.h @@ -354,6 +354,7 @@ struct dtv_property { void *reserved2; } buffer; } u; + int result; } __attribute__ ((packed)); /* No more than 16 properties during any given ioctl */ -- cgit v1.2.3 From 1bded05663a0aea1702e531a19694c6b670dc7d2 Mon Sep 17 00:00:00 2001 From: Steven Toth Date: Thu, 25 Sep 2008 23:29:49 -0400 Subject: S2API: Add DTV_API_VERSION command From: Steven Toth This allows application developers to query the dvb-core API version dynamically, helping developers understand whether certain features will be available. Priority: normal Signed-off-by: Steven Toth --- linux/drivers/media/dvb/dvb-core/dvb_frontend.c | 9 +++++++++ linux/include/linux/dvb/frontend.h | 1 + linux/include/linux/dvb/version.h | 4 ++-- 3 files changed, 12 insertions(+), 2 deletions(-) (limited to 'linux') diff --git a/linux/drivers/media/dvb/dvb-core/dvb_frontend.c b/linux/drivers/media/dvb/dvb-core/dvb_frontend.c index 9f3a61827..6f0dc252f 100644 --- a/linux/drivers/media/dvb/dvb-core/dvb_frontend.c +++ b/linux/drivers/media/dvb/dvb-core/dvb_frontend.c @@ -45,6 +45,7 @@ #include "dvb_frontend.h" #include "dvbdev.h" #include "compat.h" +#include static int dvb_frontend_debug; static int dvb_shutdown_timeout; @@ -906,6 +907,11 @@ struct dtv_cmds_h dtv_cmds[] = { .set = 0, }, #endif + [DTV_API_VERSION] = { + .name = "DTV_API_VERSION", + .cmd = DTV_API_VERSION, + .set = 0, + }, }; void dtv_property_dump(struct dtv_property *tvp) @@ -1210,6 +1216,9 @@ int dtv_property_process_get(struct dvb_frontend *fe, struct dtv_property *tvp, case DTV_TONE: tvp->u.data = fe->dtv_property_cache.sectone; break; + case DTV_API_VERSION: + tvp->u.data = (DVB_API_VERSION << 8) | DVB_API_VERSION_MINOR; + break; default: r = -1; } diff --git a/linux/include/linux/dvb/frontend.h b/linux/include/linux/dvb/frontend.h index ecac80d32..d28f21796 100644 --- a/linux/include/linux/dvb/frontend.h +++ b/linux/include/linux/dvb/frontend.h @@ -299,6 +299,7 @@ struct dvb_frontend_event { #define DTV_ISDB_LAYERC_SEGMENT_WIDTH 33 #define DTV_ISDB_LAYERC_TIME_INTERLEAVING 34 #endif +#define DTV_API_VERSION 35 typedef enum fe_pilot { PILOT_ON, diff --git a/linux/include/linux/dvb/version.h b/linux/include/linux/dvb/version.h index 126e0c26c..25b823b81 100644 --- a/linux/include/linux/dvb/version.h +++ b/linux/include/linux/dvb/version.h @@ -23,7 +23,7 @@ #ifndef _DVBVERSION_H_ #define _DVBVERSION_H_ -#define DVB_API_VERSION 3 -#define DVB_API_VERSION_MINOR 2 +#define DVB_API_VERSION 5 +#define DVB_API_VERSION_MINOR 0 #endif /*_DVBVERSION_H_*/ -- cgit v1.2.3