aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMalcolm Priestley <tvboxspy@gmail.com>2012-08-06 15:21:40 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2012-08-12 06:48:09 -0400
commite41543a2a9f91fcebd7f450a712c08ddbb1d563e (patch)
tree47daf49de6f3c69619f22fdcaa8a45917a44e174
parent9468542bf29ba6cdc9d052a7b9aa384279b0f845 (diff)
[media] lmedm04 2.06 conversion to dvb-usb-v2 version 2
Conversion of lmedm04 to dvb-usb-v2 Functional changes m88rs2000 tuner now uses all callbacks. TODO migrate other tuners to the callbacks. This patch is applied on top of [BUG] Re: dvb_usb_lmedm04 crash Kernel (rs2000) http://patchwork.linuxtv.org/patch/13584/ Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Acked-by: Antti Palosaari <crope@iki.fi> Tested-by: Antti Palosaari <crope@iki.fi> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
-rw-r--r--drivers/media/dvb/dvb-usb-v2/Kconfig13
-rw-r--r--drivers/media/dvb/dvb-usb-v2/Makefile3
-rw-r--r--drivers/media/dvb/dvb-usb/Kconfig13
-rw-r--r--drivers/media/dvb/dvb-usb/Makefile3
-rw-r--r--drivers/media/dvb/dvb-usb/lmedm04.c588
5 files changed, 291 insertions, 329 deletions
diff --git a/drivers/media/dvb/dvb-usb-v2/Kconfig b/drivers/media/dvb/dvb-usb-v2/Kconfig
index e7ff148e4a29..14a635b97b0b 100644
--- a/drivers/media/dvb/dvb-usb-v2/Kconfig
+++ b/drivers/media/dvb/dvb-usb-v2/Kconfig
@@ -102,6 +102,19 @@ config DVB_USB_GL861
102 Say Y here to support the MSI Megasky 580 (55801) DVB-T USB2.0 102 Say Y here to support the MSI Megasky 580 (55801) DVB-T USB2.0
103 receiver with USB ID 0db0:5581. 103 receiver with USB ID 0db0:5581.
104 104
105config DVB_USB_LME2510
106 tristate "LME DM04/QQBOX DVB-S USB2.0 support"
107 depends on DVB_USB_V2
108 select DVB_TDA10086 if !DVB_FE_CUSTOMISE
109 select DVB_TDA826X if !DVB_FE_CUSTOMISE
110 select DVB_STV0288 if !DVB_FE_CUSTOMISE
111 select DVB_IX2505V if !DVB_FE_CUSTOMISE
112 select DVB_STV0299 if !DVB_FE_CUSTOMISE
113 select DVB_PLL if !DVB_FE_CUSTOMISE
114 select DVB_M88RS2000 if !DVB_FE_CUSTOMISE
115 help
116 Say Y here to support the LME DM04/QQBOX DVB-S USB2.0
117
105config DVB_USB_MXL111SF 118config DVB_USB_MXL111SF
106 tristate "MxL111SF DTV USB2.0 support" 119 tristate "MxL111SF DTV USB2.0 support"
107 depends on DVB_USB_V2 120 depends on DVB_USB_V2
diff --git a/drivers/media/dvb/dvb-usb-v2/Makefile b/drivers/media/dvb/dvb-usb-v2/Makefile
index a784bf4af4e4..26659bc7fa60 100644
--- a/drivers/media/dvb/dvb-usb-v2/Makefile
+++ b/drivers/media/dvb/dvb-usb-v2/Makefile
@@ -25,6 +25,9 @@ obj-$(CONFIG_DVB_USB_CE6230) += dvb-usb-ce6230.o
25dvb-usb-ec168-objs = ec168.o 25dvb-usb-ec168-objs = ec168.o
26obj-$(CONFIG_DVB_USB_EC168) += dvb-usb-ec168.o 26obj-$(CONFIG_DVB_USB_EC168) += dvb-usb-ec168.o
27 27
28dvb-usb-lmedm04-objs = lmedm04.o
29obj-$(CONFIG_DVB_USB_LME2510) += dvb-usb-lmedm04.o
30
28dvb-usb-gl861-objs = gl861.o 31dvb-usb-gl861-objs = gl861.o
29obj-$(CONFIG_DVB_USB_GL861) += dvb-usb-gl861.o 32obj-$(CONFIG_DVB_USB_GL861) += dvb-usb-gl861.o
30 33
diff --git a/drivers/media/dvb/dvb-usb/Kconfig b/drivers/media/dvb/dvb-usb/Kconfig
index 29bba9a24875..8e13877a5c2c 100644
--- a/drivers/media/dvb/dvb-usb/Kconfig
+++ b/drivers/media/dvb/dvb-usb/Kconfig
@@ -304,19 +304,6 @@ config DVB_USB_AZ6027
304 help 304 help
305 Say Y here to support the AZ6027 device 305 Say Y here to support the AZ6027 device
306 306
307config DVB_USB_LME2510
308 tristate "LME DM04/QQBOX DVB-S USB2.0 support"
309 depends on DVB_USB
310 select DVB_TDA10086 if !DVB_FE_CUSTOMISE
311 select DVB_TDA826X if !DVB_FE_CUSTOMISE
312 select DVB_STV0288 if !DVB_FE_CUSTOMISE
313 select DVB_IX2505V if !DVB_FE_CUSTOMISE
314 select DVB_STV0299 if !DVB_FE_CUSTOMISE
315 select DVB_PLL if !DVB_FE_CUSTOMISE
316 select DVB_M88RS2000 if !DVB_FE_CUSTOMISE
317 help
318 Say Y here to support the LME DM04/QQBOX DVB-S USB2.0 .
319
320config DVB_USB_TECHNISAT_USB2 307config DVB_USB_TECHNISAT_USB2
321 tristate "Technisat DVB-S/S2 USB2.0 support" 308 tristate "Technisat DVB-S/S2 USB2.0 support"
322 depends on DVB_USB 309 depends on DVB_USB
diff --git a/drivers/media/dvb/dvb-usb/Makefile b/drivers/media/dvb/dvb-usb/Makefile
index 5261c7dae982..859baf9c8e0c 100644
--- a/drivers/media/dvb/dvb-usb/Makefile
+++ b/drivers/media/dvb/dvb-usb/Makefile
@@ -72,9 +72,6 @@ obj-$(CONFIG_DVB_USB_FRIIO) += dvb-usb-friio.o
72dvb-usb-az6027-objs = az6027.o 72dvb-usb-az6027-objs = az6027.o
73obj-$(CONFIG_DVB_USB_AZ6027) += dvb-usb-az6027.o 73obj-$(CONFIG_DVB_USB_AZ6027) += dvb-usb-az6027.o
74 74
75dvb-usb-lmedm04-objs = lmedm04.o
76obj-$(CONFIG_DVB_USB_LME2510) += dvb-usb-lmedm04.o
77
78dvb-usb-technisat-usb2-objs = technisat-usb2.o 75dvb-usb-technisat-usb2-objs = technisat-usb2.o
79obj-$(CONFIG_DVB_USB_TECHNISAT_USB2) += dvb-usb-technisat-usb2.o 76obj-$(CONFIG_DVB_USB_TECHNISAT_USB2) += dvb-usb-technisat-usb2.o
80 77
diff --git a/drivers/media/dvb/dvb-usb/lmedm04.c b/drivers/media/dvb/dvb-usb/lmedm04.c
index 26ba5bc92c61..c6bc1b8b58b8 100644
--- a/drivers/media/dvb/dvb-usb/lmedm04.c
+++ b/drivers/media/dvb/dvb-usb/lmedm04.c
@@ -19,6 +19,8 @@
19 * 19 *
20 * MVB0194 (LME2510C+SHARP0194) 20 * MVB0194 (LME2510C+SHARP0194)
21 * 21 *
22 * LME2510C + M88RS2000
23 *
22 * For firmware see Documentation/dvb/lmedm04.txt 24 * For firmware see Documentation/dvb/lmedm04.txt
23 * 25 *
24 * I2C addresses: 26 * I2C addresses:
@@ -62,13 +64,14 @@
62 * LME2510: SHARP:BS2F7HZ0194(MV0194) cannot cold reset and share system 64 * LME2510: SHARP:BS2F7HZ0194(MV0194) cannot cold reset and share system
63 * with other tuners. After a cold reset streaming will not start. 65 * with other tuners. After a cold reset streaming will not start.
64 * 66 *
67 * M88RS2000 suffers from loss of lock.
65 */ 68 */
66#define DVB_USB_LOG_PREFIX "LME2510(C)" 69#define DVB_USB_LOG_PREFIX "LME2510(C)"
67#include <linux/usb.h> 70#include <linux/usb.h>
68#include <linux/usb/input.h> 71#include <linux/usb/input.h>
69#include <media/rc-core.h> 72#include <media/rc-core.h>
70 73
71#include "dvb-usb.h" 74#include "dvb_usb.h"
72#include "lmedm04.h" 75#include "lmedm04.h"
73#include "tda826x.h" 76#include "tda826x.h"
74#include "tda10086.h" 77#include "tda10086.h"
@@ -80,24 +83,28 @@
80#include "m88rs2000.h" 83#include "m88rs2000.h"
81 84
82 85
86#define LME2510_C_S7395 "dvb-usb-lme2510c-s7395.fw";
87#define LME2510_C_LG "dvb-usb-lme2510c-lg.fw";
88#define LME2510_C_S0194 "dvb-usb-lme2510c-s0194.fw";
89#define LME2510_C_RS2000 "dvb-usb-lme2510c-rs2000.fw";
90#define LME2510_LG "dvb-usb-lme2510-lg.fw";
91#define LME2510_S0194 "dvb-usb-lme2510-s0194.fw";
83 92
84/* debug */ 93/* debug */
85static int dvb_usb_lme2510_debug; 94static int dvb_usb_lme2510_debug;
86#define l_dprintk(var, level, args...) do { \ 95#define lme_debug(var, level, args...) do { \
87 if ((var >= level)) \ 96 if ((var >= level)) \
88 printk(KERN_DEBUG DVB_USB_LOG_PREFIX ": " args); \ 97 pr_debug(DVB_USB_LOG_PREFIX": " args); \
89} while (0) 98} while (0)
90 99#define deb_info(level, args...) lme_debug(dvb_usb_lme2510_debug, level, args)
91#define deb_info(level, args...) l_dprintk(dvb_usb_lme2510_debug, level, args)
92#define debug_data_snipet(level, name, p) \ 100#define debug_data_snipet(level, name, p) \
93 deb_info(level, name" (%02x%02x%02x%02x%02x%02x%02x%02x)", \ 101 deb_info(level, name" (%02x%02x%02x%02x%02x%02x%02x%02x)", \
94 *p, *(p+1), *(p+2), *(p+3), *(p+4), \ 102 *p, *(p+1), *(p+2), *(p+3), *(p+4), \
95 *(p+5), *(p+6), *(p+7)); 103 *(p+5), *(p+6), *(p+7));
96 104#define info(args...) pr_info(DVB_USB_LOG_PREFIX": "args)
97 105
98module_param_named(debug, dvb_usb_lme2510_debug, int, 0644); 106module_param_named(debug, dvb_usb_lme2510_debug, int, 0644);
99MODULE_PARM_DESC(debug, "set debugging level (1=info (or-able))." 107MODULE_PARM_DESC(debug, "set debugging level (1=info (or-able)).");
100 DVB_USB_DEBUG_STATUS);
101 108
102static int dvb_usb_lme2510_firmware; 109static int dvb_usb_lme2510_firmware;
103module_param_named(firmware, dvb_usb_lme2510_firmware, int, 0644); 110module_param_named(firmware, dvb_usb_lme2510_firmware, int, 0644);
@@ -136,7 +143,8 @@ struct lme2510_state {
136 void *buffer; 143 void *buffer;
137 struct urb *lme_urb; 144 struct urb *lme_urb;
138 void *usb_buffer; 145 void *usb_buffer;
139 146 int (*fe_set_voltage)(struct dvb_frontend *, fe_sec_voltage_t);
147 u8 dvb_usb_lme2510_firmware;
140}; 148};
141 149
142static int lme2510_bulk_write(struct usb_device *dev, 150static int lme2510_bulk_write(struct usb_device *dev,
@@ -246,7 +254,7 @@ static int lme2510_enable_pid(struct dvb_usb_device *d, u8 index, u16 pid_out)
246static void lme2510_int_response(struct urb *lme_urb) 254static void lme2510_int_response(struct urb *lme_urb)
247{ 255{
248 struct dvb_usb_adapter *adap = lme_urb->context; 256 struct dvb_usb_adapter *adap = lme_urb->context;
249 struct lme2510_state *st = adap->dev->priv; 257 struct lme2510_state *st = adap_to_priv(adap);
250 static u8 *ibuf, *rbuf; 258 static u8 *ibuf, *rbuf;
251 int i = 0, offset; 259 int i = 0, offset;
252 u32 key; 260 u32 key;
@@ -283,8 +291,9 @@ static void lme2510_int_response(struct urb *lme_urb)
283 ? (ibuf[3] ^ 0xff) << 8 : 0;