diff options
| author | Malcolm Priestley <tvboxspy@gmail.com> | 2012-08-06 15:21:40 -0400 |
|---|---|---|
| committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2012-08-12 06:48:09 -0400 |
| commit | e41543a2a9f91fcebd7f450a712c08ddbb1d563e (patch) | |
| tree | 47daf49de6f3c69619f22fdcaa8a45917a44e174 | |
| parent | 9468542bf29ba6cdc9d052a7b9aa384279b0f845 (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/Kconfig | 13 | ||||
| -rw-r--r-- | drivers/media/dvb/dvb-usb-v2/Makefile | 3 | ||||
| -rw-r--r-- | drivers/media/dvb/dvb-usb/Kconfig | 13 | ||||
| -rw-r--r-- | drivers/media/dvb/dvb-usb/Makefile | 3 | ||||
| -rw-r--r-- | drivers/media/dvb/dvb-usb/lmedm04.c | 588 |
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 | ||
| 105 | config 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 | |||
| 105 | config DVB_USB_MXL111SF | 118 | config 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 | |||
| 25 | dvb-usb-ec168-objs = ec168.o | 25 | dvb-usb-ec168-objs = ec168.o |
| 26 | obj-$(CONFIG_DVB_USB_EC168) += dvb-usb-ec168.o | 26 | obj-$(CONFIG_DVB_USB_EC168) += dvb-usb-ec168.o |
| 27 | 27 | ||
| 28 | dvb-usb-lmedm04-objs = lmedm04.o | ||
| 29 | obj-$(CONFIG_DVB_USB_LME2510) += dvb-usb-lmedm04.o | ||
| 30 | |||
| 28 | dvb-usb-gl861-objs = gl861.o | 31 | dvb-usb-gl861-objs = gl861.o |
| 29 | obj-$(CONFIG_DVB_USB_GL861) += dvb-usb-gl861.o | 32 | obj-$(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 | ||
| 307 | config 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 | |||
| 320 | config DVB_USB_TECHNISAT_USB2 | 307 | config 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 | |||
| 72 | dvb-usb-az6027-objs = az6027.o | 72 | dvb-usb-az6027-objs = az6027.o |
| 73 | obj-$(CONFIG_DVB_USB_AZ6027) += dvb-usb-az6027.o | 73 | obj-$(CONFIG_DVB_USB_AZ6027) += dvb-usb-az6027.o |
| 74 | 74 | ||
| 75 | dvb-usb-lmedm04-objs = lmedm04.o | ||
| 76 | obj-$(CONFIG_DVB_USB_LME2510) += dvb-usb-lmedm04.o | ||
| 77 | |||
| 78 | dvb-usb-technisat-usb2-objs = technisat-usb2.o | 75 | dvb-usb-technisat-usb2-objs = technisat-usb2.o |
| 79 | obj-$(CONFIG_DVB_USB_TECHNISAT_USB2) += dvb-usb-technisat-usb2.o | 76 | obj-$(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 */ |
| 85 | static int dvb_usb_lme2510_debug; | 94 | static 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 | ||
| 98 | module_param_named(debug, dvb_usb_lme2510_debug, int, 0644); | 106 | module_param_named(debug, dvb_usb_lme2510_debug, int, 0644); |
| 99 | MODULE_PARM_DESC(debug, "set debugging level (1=info (or-able))." | 107 | MODULE_PARM_DESC(debug, "set debugging level (1=info (or-able))."); |
| 100 | DVB_USB_DEBUG_STATUS); | ||
| 101 | 108 | ||
| 102 | static int dvb_usb_lme2510_firmware; | 109 | static int dvb_usb_lme2510_firmware; |
| 103 | module_param_named(firmware, dvb_usb_lme2510_firmware, int, 0644); | 110 | module_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 | ||
| 142 | static int lme2510_bulk_write(struct usb_device *dev, | 150 | static 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) | |||
| 246 | static void lme2510_int_response(struct urb *lme_urb) | 254 | static 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; | ||
