aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAntti Palosaari <crope@iki.fi>2012-08-12 21:27:07 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2012-08-13 14:58:12 -0400
commitc01a35955fc6cbf4b36fd87c4af5691a81fcda5a (patch)
treeb6c2ba06d98f226d48d7b1bcab89859c55fec7f9
parentd584b8386e1dacfb153cd9962ae2a01142234750 (diff)
[media] rtl28xxu: convert to new DVB USB
Tested-by: Hin-Tak Leung <htl10@users.sourceforge.net> Signed-off-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-v2/rtl28xxu.c (renamed from drivers/media/dvb/dvb-usb/rtl28xxu.c)607
-rw-r--r--drivers/media/dvb/dvb-usb-v2/rtl28xxu.h (renamed from drivers/media/dvb/dvb-usb/rtl28xxu.h)26
-rw-r--r--drivers/media/dvb/dvb-usb/Kconfig13
-rw-r--r--drivers/media/dvb/dvb-usb/Makefile3
6 files changed, 260 insertions, 405 deletions
diff --git a/drivers/media/dvb/dvb-usb-v2/Kconfig b/drivers/media/dvb/dvb-usb-v2/Kconfig
index 14a635b97b0b..ed87935dc8d4 100644
--- a/drivers/media/dvb/dvb-usb-v2/Kconfig
+++ b/drivers/media/dvb/dvb-usb-v2/Kconfig
@@ -124,3 +124,16 @@ config DVB_USB_MXL111SF
124 help 124 help
125 Say Y here to support the MxL111SF USB2.0 DTV receiver. 125 Say Y here to support the MxL111SF USB2.0 DTV receiver.
126 126
127config DVB_USB_RTL28XXU
128 tristate "Realtek RTL28xxU DVB USB support"
129 depends on DVB_USB_V2 && EXPERIMENTAL
130 select DVB_RTL2830
131 select DVB_RTL2832
132 select MEDIA_TUNER_QT1010 if !MEDIA_TUNER_CUSTOMISE
133 select MEDIA_TUNER_MT2060 if !MEDIA_TUNER_CUSTOMISE
134 select MEDIA_TUNER_MXL5005S if !MEDIA_TUNER_CUSTOMISE
135 select MEDIA_TUNER_FC0012 if !MEDIA_TUNER_CUSTOMISE
136 select MEDIA_TUNER_FC0013 if !MEDIA_TUNER_CUSTOMISE
137 help
138 Say Y here to support the Realtek RTL28xxU DVB USB receiver.
139
diff --git a/drivers/media/dvb/dvb-usb-v2/Makefile b/drivers/media/dvb/dvb-usb-v2/Makefile
index 26659bc7fa60..002e88883827 100644
--- a/drivers/media/dvb/dvb-usb-v2/Makefile
+++ b/drivers/media/dvb/dvb-usb-v2/Makefile
@@ -36,6 +36,9 @@ obj-$(CONFIG_DVB_USB_MXL111SF) += dvb-usb-mxl111sf.o
36obj-$(CONFIG_DVB_USB_MXL111SF) += mxl111sf-demod.o 36obj-$(CONFIG_DVB_USB_MXL111SF) += mxl111sf-demod.o
37obj-$(CONFIG_DVB_USB_MXL111SF) += mxl111sf-tuner.o 37obj-$(CONFIG_DVB_USB_MXL111SF) += mxl111sf-tuner.o
38 38
39dvb-usb-rtl28xxu-objs = rtl28xxu.o
40obj-$(CONFIG_DVB_USB_RTL28XXU) += dvb-usb-rtl28xxu.o
41
39ccflags-y += -I$(srctree)/drivers/media/dvb/dvb-core 42ccflags-y += -I$(srctree)/drivers/media/dvb/dvb-core
40ccflags-y += -I$(srctree)/drivers/media/dvb/frontends/ 43ccflags-y += -I$(srctree)/drivers/media/dvb/frontends/
41ccflags-y += -I$(srctree)/drivers/media/common/tuners 44ccflags-y += -I$(srctree)/drivers/media/common/tuners
diff --git a/drivers/media/dvb/dvb-usb/rtl28xxu.c b/drivers/media/dvb/dvb-usb-v2/rtl28xxu.c
index 6bd0bd792437..493d531109af 100644
--- a/drivers/media/dvb/dvb-usb/rtl28xxu.c
+++ b/drivers/media/dvb/dvb-usb-v2/rtl28xxu.c
@@ -31,10 +31,6 @@
31#include "fc0012.h" 31#include "fc0012.h"
32#include "fc0013.h" 32#include "fc0013.h"
33 33
34/* debug */
35static int dvb_usb_rtl28xxu_debug;
36module_param_named(debug, dvb_usb_rtl28xxu_debug, int, 0644);
37MODULE_PARM_DESC(debug, "set debugging level" DVB_USB_DEBUG_STATUS);
38DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr); 34DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr);
39 35
40static int rtl28xxu_ctrl_msg(struct dvb_usb_device *d, struct rtl28xxu_req *req) 36static int rtl28xxu_ctrl_msg(struct dvb_usb_device *d, struct rtl28xxu_req *req)
@@ -66,8 +62,7 @@ static int rtl28xxu_ctrl_msg(struct dvb_usb_device *d, struct rtl28xxu_req *req)
66 if (ret > 0) 62 if (ret > 0)
67 ret = 0; 63 ret = 0;
68 64
69 deb_dump(0, requesttype, req->value, req->index, buf, req->size, 65 deb_dump(0, requesttype, req->value, req->index, buf, req->size);
70 deb_xfer);
71 66
72 /* read request, copy returned data to return buf */ 67 /* read request, copy returned data to return buf */
73 if (!ret && requesttype == (USB_TYPE_VENDOR | USB_DIR_IN)) 68 if (!ret && requesttype == (USB_TYPE_VENDOR | USB_DIR_IN))
@@ -80,7 +75,7 @@ static int rtl28xxu_ctrl_msg(struct dvb_usb_device *d, struct rtl28xxu_req *req)
80 75
81 return ret; 76 return ret;
82err: 77err:
83 deb_info("%s: failed=%d\n", __func__, ret); 78 dev_dbg(&d->udev->dev, "%s: failed=%d\n", __func__, ret);
84 return ret; 79 return ret;
85} 80}
86 81
@@ -291,7 +286,8 @@ static struct rtl2830_config rtl28xxu_rtl2830_mxl5005s_config = {
291static int rtl2831u_frontend_attach(struct dvb_usb_adapter *adap) 286static int rtl2831u_frontend_attach(struct dvb_usb_adapter *adap)
292{ 287{
293 int ret; 288 int ret;
294 struct rtl28xxu_priv *priv = adap->dev->priv; 289 struct dvb_usb_device *d = adap_to_d(adap);
290 struct rtl28xxu_priv *priv = d_to_priv(d);
295 u8 buf[1]; 291 u8 buf[1];
296 struct rtl2830_config *rtl2830_config; 292 struct rtl2830_config *rtl2830_config;
297 /* open RTL2831U/RTL2830 I2C gate */ 293 /* open RTL2831U/RTL2830 I2C gate */
@@ -301,7 +297,7 @@ static int rtl2831u_frontend_attach(struct dvb_usb_adapter *adap)
301 /* for QT1010 tuner probe */ 297 /* for QT1010 tuner probe */
302 struct rtl28xxu_req req_qt1010 = { 0x0fc4, CMD_I2C_RD, 1, buf }; 298 struct rtl28xxu_req req_qt1010 = { 0x0fc4, CMD_I2C_RD, 1, buf };
303 299
304 deb_info("%s:\n", __func__); 300 dev_dbg(&d->udev->dev, "%s:\n", __func__);
305 301
306 /* 302 /*
307 * RTL2831U GPIOs 303 * RTL2831U GPIOs
@@ -312,12 +308,12 @@ static int rtl2831u_frontend_attach(struct dvb_usb_adapter *adap)
312 */ 308 */
313 309
314 /* GPIO direction */ 310 /* GPIO direction */
315 ret = rtl28xx_wr_reg(adap->dev, SYS_GPIO_DIR, 0x0a); 311 ret = rtl28xx_wr_reg(d, SYS_GPIO_DIR, 0x0a);
316 if (ret) 312 if (ret)
317 goto err; 313 goto err;
318 314
319 /* enable as output GPIO0, GPIO2, GPIO4 */ 315 /* enable as output GPIO0, GPIO2, GPIO4 */
320 ret = rtl28xx_wr_reg(adap->dev, SYS_GPIO_OUT_EN, 0x15); 316 ret = rtl28xx_wr_reg(d, SYS_GPIO_OUT_EN, 0x15);
321 if (ret) 317 if (ret)
322 goto err; 318 goto err;
323 319
@@ -330,58 +326,58 @@ static int rtl2831u_frontend_attach(struct dvb_usb_adapter *adap)
330 msleep(20); 326 msleep(20);
331 327
332 /* open demod I2C gate */ 328 /* open demod I2C gate */
333 ret = rtl28xxu_ctrl_msg(adap->dev, &req_gate); 329 ret = rtl28xxu_ctrl_msg(d, &req_gate);
334 if (ret) 330 if (ret)
335 goto err; 331 goto err;
336 332
337 /* check QT1010 ID(?) register; reg=0f val=2c */ 333 /* check QT1010 ID(?) register; reg=0f val=2c */
338 ret = rtl28xxu_ctrl_msg(adap->dev, &req_qt1010); 334 ret = rtl28xxu_ctrl_msg(d, &req_qt1010);
339 if (ret == 0 && buf[0] == 0x2c) { 335 if (ret == 0 && buf[0] == 0x2c) {
340 priv->tuner = TUNER_RTL2830_QT1010; 336 priv->tuner = TUNER_RTL2830_QT1010;
341 rtl2830_config = &rtl28xxu_rtl2830_qt1010_config; 337 rtl2830_config = &rtl28xxu_rtl2830_qt1010_config;
342 deb_info("%s: QT1010\n", __func__); 338 dev_dbg(&d->udev->dev, "%s: QT1010\n", __func__);
343 goto found; 339 goto found;
344 } else { 340 } else {
345 deb_info("%s: QT1010 probe failed=%d - %02x\n", 341 dev_dbg(&d->udev->dev, "%s: QT1010 probe failed=%d - %02x\n",
346 __func__, ret, buf[0]); 342 __func__, ret, buf[0]);
347 } 343 }
348 344
349 /* open demod I2C gate */ 345 /* open demod I2C gate */
350 ret = rtl28xxu_ctrl_msg(adap->dev, &req_gate); 346 ret = rtl28xxu_ctrl_msg(d, &req_gate);
351 if (ret) 347 if (ret)
352 goto err; 348 goto err;
353 349
354 /* check MT2060 ID register; reg=00 val=63 */ 350 /* check MT2060 ID register; reg=00 val=63 */
355 ret = rtl28xxu_ctrl_msg(adap->dev, &req_mt2060); 351 ret = rtl28xxu_ctrl_msg(d, &req_mt2060);
356 if (ret == 0 && buf[0] == 0x63) { 352 if (ret == 0 && buf[0] == 0x63) {
357 priv->tuner = TUNER_RTL2830_MT2060; 353 priv->tuner = TUNER_RTL2830_MT2060;
358 rtl2830_config = &rtl28xxu_rtl2830_mt2060_config; 354 rtl2830_config = &rtl28xxu_rtl2830_mt2060_config;
359 deb_info("%s: MT2060\n", __func__); 355 dev_dbg(&d->udev->dev, "%s: MT2060\n", __func__);
360 goto found; 356 goto found;
361 } else { 357 } else {
362 deb_info("%s: MT2060 probe failed=%d - %02x\n", 358 dev_dbg(&d->udev->dev, "%s: MT2060 probe failed=%d - %02x\n",
363 __func__, ret, buf[0]); 359 __func__, ret, buf[0]);
364 } 360 }
365 361
366 /* assume MXL5005S */