diff options
Diffstat (limited to 'drivers/media/video/pvrusb2')
-rw-r--r-- | drivers/media/video/pvrusb2/Kconfig | 55 | ||||
-rw-r--r-- | drivers/media/video/pvrusb2/Makefile | 1 | ||||
-rw-r--r-- | drivers/media/video/pvrusb2/pvrusb2-debug.h | 1 | ||||
-rw-r--r-- | drivers/media/video/pvrusb2/pvrusb2-devattr.c | 8 | ||||
-rw-r--r-- | drivers/media/video/pvrusb2/pvrusb2-dvb.c | 42 |
5 files changed, 39 insertions, 68 deletions
diff --git a/drivers/media/video/pvrusb2/Kconfig b/drivers/media/video/pvrusb2/Kconfig index 158b3d0c6532..9620c67fae77 100644 --- a/drivers/media/video/pvrusb2/Kconfig +++ b/drivers/media/video/pvrusb2/Kconfig | |||
@@ -1,14 +1,15 @@ | |||
1 | config VIDEO_PVRUSB2 | 1 | config VIDEO_PVRUSB2 |
2 | tristate "Hauppauge WinTV-PVR USB2 support" | 2 | tristate "Hauppauge WinTV-PVR USB2 support" |
3 | depends on VIDEO_V4L2 && I2C && EXPERIMENTAL | 3 | depends on VIDEO_V4L2 && I2C |
4 | select FW_LOADER | 4 | select FW_LOADER |
5 | select VIDEO_TUNER | 5 | select MEDIA_TUNER |
6 | select VIDEO_TVEEPROM | 6 | select VIDEO_TVEEPROM |
7 | select VIDEO_CX2341X | 7 | select VIDEO_CX2341X |
8 | select VIDEO_SAA711X | 8 | select VIDEO_SAA711X |
9 | select VIDEO_CX25840 | 9 | select VIDEO_CX25840 |
10 | select VIDEO_MSP3400 | 10 | select VIDEO_MSP3400 |
11 | select VIDEO_WM8775 | 11 | select VIDEO_WM8775 |
12 | select VIDEO_CS53L32A | ||
12 | ---help--- | 13 | ---help--- |
13 | This is a video4linux driver for Conexant 23416 based | 14 | This is a video4linux driver for Conexant 23416 based |
14 | usb2 personal video recorder devices. | 15 | usb2 personal video recorder devices. |
@@ -16,32 +17,6 @@ config VIDEO_PVRUSB2 | |||
16 | To compile this driver as a module, choose M here: the | 17 | To compile this driver as a module, choose M here: the |
17 | module will be called pvrusb2 | 18 | module will be called pvrusb2 |
18 | 19 | ||
19 | config VIDEO_PVRUSB2_ONAIR_CREATOR | ||
20 | bool "pvrusb2 driver support for OnAir Creator model" | ||
21 | depends on VIDEO_PVRUSB2 && EXPERIMENTAL | ||
22 | select VIDEO_SAA711X | ||
23 | select VIDEO_CS53L32A | ||
24 | ---help--- | ||
25 | |||
26 | This option enables support for the OnAir Creator USB tuner | ||
27 | device. This is a hybrid device, however currently only | ||
28 | analog mode is supported. | ||
29 | |||
30 | If you are in doubt, say Y. | ||
31 | |||
32 | config VIDEO_PVRUSB2_ONAIR_USB2 | ||
33 | bool "pvrusb2 driver support for OnAir USB2 model" | ||
34 | depends on VIDEO_PVRUSB2 && EXPERIMENTAL | ||
35 | select VIDEO_SAA711X | ||
36 | select VIDEO_CS53L32A | ||
37 | ---help--- | ||
38 | |||
39 | This option enables support for the OnAir USB2 tuner device | ||
40 | (also known as the Sasem tuner). This is a hybrid device, | ||
41 | however currently only analog mode is supported. | ||
42 | |||
43 | If you are in doubt, say Y. | ||
44 | |||
45 | config VIDEO_PVRUSB2_SYSFS | 20 | config VIDEO_PVRUSB2_SYSFS |
46 | bool "pvrusb2 sysfs support (EXPERIMENTAL)" | 21 | bool "pvrusb2 sysfs support (EXPERIMENTAL)" |
47 | default y | 22 | default y |
@@ -59,29 +34,23 @@ config VIDEO_PVRUSB2_SYSFS | |||
59 | Note: This feature is experimental and subject to change. | 34 | Note: This feature is experimental and subject to change. |
60 | 35 | ||
61 | config VIDEO_PVRUSB2_DVB | 36 | config VIDEO_PVRUSB2_DVB |
62 | bool "pvrusb2 DVB support (EXPERIMENTAL)" | 37 | bool "pvrusb2 ATSC/DVB support (EXPERIMENTAL)" |
63 | default n | 38 | default y |
64 | depends on VIDEO_PVRUSB2 && DVB_CORE && EXPERIMENTAL | 39 | depends on VIDEO_PVRUSB2 && DVB_CORE && EXPERIMENTAL |
65 | select DVB_LGDT330X if !DVB_FE_CUSTOMISE | 40 | select DVB_LGDT330X if !DVB_FE_CUSTOMISE |
66 | select DVB_S5H1409 if !DVB_FE_CUSTOMISE | 41 | select DVB_S5H1409 if !DVB_FE_CUSTOMISE |
67 | select DVB_S5H1411 if !DVB_FE_CUSTOMISE | 42 | select DVB_S5H1411 if !DVB_FE_CUSTOMISE |
68 | select DVB_TDA10048 if !DVB_FE_CUSTOMIZE | 43 | select DVB_TDA10048 if !DVB_FE_CUSTOMIZE |
69 | select DVB_TDA18271 if !DVB_FE_CUSTOMIZE | 44 | select MEDIA_TUNER_TDA18271 if !DVB_FE_CUSTOMIZE |
70 | select TUNER_SIMPLE if !DVB_FE_CUSTOMISE | 45 | select MEDIA_TUNER_SIMPLE if !DVB_FE_CUSTOMISE |
71 | select TUNER_TDA8290 if !DVB_FE_CUSTOMIZE | 46 | select MEDIA_TUNER_TDA8290 if !DVB_FE_CUSTOMIZE |
72 | ---help--- | 47 | ---help--- |
73 | 48 | ||
74 | This option enables compilation of a DVB interface for the | 49 | This option enables a DVB interface for the pvrusb2 driver. |
75 | pvrusb2 driver. Currently this is very very experimental. | 50 | If your device does not support digital television, this |
76 | It is also limiting - the DVB interface can only access the | 51 | feature will have no affect on the driver's operation. |
77 | digital side of hybrid devices, and there are going to be | ||
78 | issues if you attempt to mess with the V4L side at the same | ||
79 | time. Don't turn this on unless you know what you are | ||
80 | doing. | ||
81 | |||
82 | If you are in doubt, say N. | ||
83 | 52 | ||
84 | Note: This feature is very experimental and might break | 53 | If you are in doubt, say Y. |
85 | 54 | ||
86 | config VIDEO_PVRUSB2_DEBUGIFC | 55 | config VIDEO_PVRUSB2_DEBUGIFC |
87 | bool "pvrusb2 debug interface" | 56 | bool "pvrusb2 debug interface" |
diff --git a/drivers/media/video/pvrusb2/Makefile b/drivers/media/video/pvrusb2/Makefile index 5b3083c89aa9..4fda2de69ab7 100644 --- a/drivers/media/video/pvrusb2/Makefile +++ b/drivers/media/video/pvrusb2/Makefile | |||
@@ -16,5 +16,6 @@ pvrusb2-objs := pvrusb2-i2c-core.o pvrusb2-i2c-cmd-v4l2.o \ | |||
16 | obj-$(CONFIG_VIDEO_PVRUSB2) += pvrusb2.o | 16 | obj-$(CONFIG_VIDEO_PVRUSB2) += pvrusb2.o |
17 | 17 | ||
18 | EXTRA_CFLAGS += -Idrivers/media/video | 18 | EXTRA_CFLAGS += -Idrivers/media/video |
19 | EXTRA_CFLAGS += -Idrivers/media/common/tuners | ||
19 | EXTRA_CFLAGS += -Idrivers/media/dvb/dvb-core | 20 | EXTRA_CFLAGS += -Idrivers/media/dvb/dvb-core |
20 | EXTRA_CFLAGS += -Idrivers/media/dvb/frontends | 21 | EXTRA_CFLAGS += -Idrivers/media/dvb/frontends |
diff --git a/drivers/media/video/pvrusb2/pvrusb2-debug.h b/drivers/media/video/pvrusb2/pvrusb2-debug.h index 11537ddf8aa3..707d2d9635d7 100644 --- a/drivers/media/video/pvrusb2/pvrusb2-debug.h +++ b/drivers/media/video/pvrusb2/pvrusb2-debug.h | |||
@@ -54,6 +54,7 @@ extern int pvrusb2_debug; | |||
54 | #define PVR2_TRACE_DATA_FLOW (1 << 25) /* Track data flow */ | 54 | #define PVR2_TRACE_DATA_FLOW (1 << 25) /* Track data flow */ |
55 | #define PVR2_TRACE_DEBUGIFC (1 << 26) /* Debug interface actions */ | 55 | #define PVR2_TRACE_DEBUGIFC (1 << 26) /* Debug interface actions */ |
56 | #define PVR2_TRACE_GPIO (1 << 27) /* GPIO state bit changes */ | 56 | #define PVR2_TRACE_GPIO (1 << 27) /* GPIO state bit changes */ |
57 | #define PVR2_TRACE_DVB_FEED (1 << 28) /* DVB transport feed debug */ | ||
57 | 58 | ||
58 | 59 | ||
59 | #endif /* __PVRUSB2_HDW_INTERNAL_H */ | 60 | #endif /* __PVRUSB2_HDW_INTERNAL_H */ |
diff --git a/drivers/media/video/pvrusb2/pvrusb2-devattr.c b/drivers/media/video/pvrusb2/pvrusb2-devattr.c index 3a141d93e1a9..5bf6d8fda1f9 100644 --- a/drivers/media/video/pvrusb2/pvrusb2-devattr.c +++ b/drivers/media/video/pvrusb2/pvrusb2-devattr.c | |||
@@ -153,7 +153,6 @@ static const struct pvr2_device_desc pvr2_device_gotview_2d = { | |||
153 | 153 | ||
154 | 154 | ||
155 | 155 | ||
156 | #ifdef CONFIG_VIDEO_PVRUSB2_ONAIR_CREATOR | ||
157 | /*------------------------------------------------------------------------*/ | 156 | /*------------------------------------------------------------------------*/ |
158 | /* OnAir Creator */ | 157 | /* OnAir Creator */ |
159 | 158 | ||
@@ -212,11 +211,9 @@ static const struct pvr2_device_desc pvr2_device_onair_creator = { | |||
212 | .dvb_props = &pvr2_onair_creator_fe_props, | 211 | .dvb_props = &pvr2_onair_creator_fe_props, |
213 | #endif | 212 | #endif |
214 | }; | 213 | }; |
215 | #endif | ||
216 | 214 | ||
217 | 215 | ||
218 | 216 | ||
219 | #ifdef CONFIG_VIDEO_PVRUSB2_ONAIR_USB2 | ||
220 | /*------------------------------------------------------------------------*/ | 217 | /*------------------------------------------------------------------------*/ |
221 | /* OnAir USB 2.0 */ | 218 | /* OnAir USB 2.0 */ |
222 | 219 | ||
@@ -274,7 +271,6 @@ static const struct pvr2_device_desc pvr2_device_onair_usb2 = { | |||
274 | .dvb_props = &pvr2_onair_usb2_fe_props, | 271 | .dvb_props = &pvr2_onair_usb2_fe_props, |
275 | #endif | 272 | #endif |
276 | }; | 273 | }; |
277 | #endif | ||
278 | 274 | ||
279 | 275 | ||
280 | 276 | ||
@@ -497,14 +493,10 @@ struct usb_device_id pvr2_device_table[] = { | |||
497 | .driver_info = (kernel_ulong_t)&pvr2_device_gotview_2}, | 493 | .driver_info = (kernel_ulong_t)&pvr2_device_gotview_2}, |
498 | { USB_DEVICE(0x1164, 0x0602), | 494 | { USB_DEVICE(0x1164, 0x0602), |
499 | .driver_info = (kernel_ulong_t)&pvr2_device_gotview_2d}, | 495 | .driver_info = (kernel_ulong_t)&pvr2_device_gotview_2d}, |
500 | #ifdef CONFIG_VIDEO_PVRUSB2_ONAIR_CREATOR | ||
501 | { USB_DEVICE(0x11ba, 0x1003), | 496 | { USB_DEVICE(0x11ba, 0x1003), |
502 | .driver_info = (kernel_ulong_t)&pvr2_device_onair_creator}, | 497 | .driver_info = (kernel_ulong_t)&pvr2_device_onair_creator}, |
503 | #endif | ||
504 | #ifdef CONFIG_VIDEO_PVRUSB2_ONAIR_USB2 | ||
505 | { USB_DEVICE(0x11ba, 0x1001), | 498 | { USB_DEVICE(0x11ba, 0x1001), |
506 | .driver_info = (kernel_ulong_t)&pvr2_device_onair_usb2}, | 499 | .driver_info = (kernel_ulong_t)&pvr2_device_onair_usb2}, |
507 | #endif | ||
508 | { USB_DEVICE(0x2040, 0x7300), | 500 | { USB_DEVICE(0x2040, 0x7300), |
509 | .driver_info = (kernel_ulong_t)&pvr2_device_73xxx}, | 501 | .driver_info = (kernel_ulong_t)&pvr2_device_73xxx}, |
510 | { USB_DEVICE(0x2040, 0x7500), | 502 | { USB_DEVICE(0x2040, 0x7500), |
diff --git a/drivers/media/video/pvrusb2/pvrusb2-dvb.c b/drivers/media/video/pvrusb2/pvrusb2-dvb.c index 6504c97e0bbc..6ec4bf81fc7f 100644 --- a/drivers/media/video/pvrusb2/pvrusb2-dvb.c +++ b/drivers/media/video/pvrusb2/pvrusb2-dvb.c | |||
@@ -21,6 +21,7 @@ | |||
21 | #include <linux/kthread.h> | 21 | #include <linux/kthread.h> |
22 | #include <linux/freezer.h> | 22 | #include <linux/freezer.h> |
23 | #include "dvbdev.h" | 23 | #include "dvbdev.h" |
24 | #include "pvrusb2-debug.h" | ||
24 | #include "pvrusb2-hdw-internal.h" | 25 | #include "pvrusb2-hdw-internal.h" |
25 | #include "pvrusb2-hdw.h" | 26 | #include "pvrusb2-hdw.h" |
26 | #include "pvrusb2-io.h" | 27 | #include "pvrusb2-io.h" |
@@ -35,7 +36,7 @@ static int pvr2_dvb_feed_func(struct pvr2_dvb_adapter *adap) | |||
35 | struct pvr2_buffer *bp; | 36 | struct pvr2_buffer *bp; |
36 | struct pvr2_stream *stream; | 37 | struct pvr2_stream *stream; |
37 | 38 | ||
38 | printk(KERN_DEBUG "dvb thread started\n"); | 39 | pvr2_trace(PVR2_TRACE_DVB_FEED, "dvb feed thread started"); |
39 | set_freezable(); | 40 | set_freezable(); |
40 | 41 | ||
41 | stream = adap->channel.stream->stream; | 42 | stream = adap->channel.stream->stream; |
@@ -82,7 +83,7 @@ static int pvr2_dvb_feed_func(struct pvr2_dvb_adapter *adap) | |||
82 | /* If we get here and ret is < 0, then an error has occurred. | 83 | /* If we get here and ret is < 0, then an error has occurred. |
83 | Probably would be a good idea to communicate that to DVB core... */ | 84 | Probably would be a good idea to communicate that to DVB core... */ |
84 | 85 | ||
85 | printk(KERN_DEBUG "dvb thread stopped\n"); | 86 | pvr2_trace(PVR2_TRACE_DVB_FEED, "dvb feed thread stopped"); |
86 | 87 | ||
87 | return 0; | 88 | return 0; |
88 | } | 89 | } |
@@ -210,7 +211,8 @@ static int pvr2_dvb_ctrl_feed(struct dvb_demux_feed *dvbdmxfeed, int onoff) | |||
210 | do { | 211 | do { |
211 | if (onoff) { | 212 | if (onoff) { |
212 | if (!adap->feedcount) { | 213 | if (!adap->feedcount) { |
213 | printk(KERN_DEBUG "start feeding\n"); | 214 | pvr2_trace(PVR2_TRACE_DVB_FEED, |
215 | "start feeding demux"); | ||
214 | ret = pvr2_dvb_stream_start(adap); | 216 | ret = pvr2_dvb_stream_start(adap); |
215 | if (ret < 0) break; | 217 | if (ret < 0) break; |
216 | } | 218 | } |
@@ -218,7 +220,8 @@ static int pvr2_dvb_ctrl_feed(struct dvb_demux_feed *dvbdmxfeed, int onoff) | |||
218 | } else if (adap->feedcount > 0) { | 220 | } else if (adap->feedcount > 0) { |
219 | (adap->feedcount)--; | 221 | (adap->feedcount)--; |
220 | if (!adap->feedcount) { | 222 | if (!adap->feedcount) { |
221 | printk(KERN_DEBUG "stop feeding\n"); | 223 | pvr2_trace(PVR2_TRACE_DVB_FEED, |
224 | "stop feeding demux"); | ||
222 | pvr2_dvb_stream_end(adap); | 225 | pvr2_dvb_stream_end(adap); |
223 | } | 226 | } |
224 | } | 227 | } |
@@ -230,15 +233,13 @@ static int pvr2_dvb_ctrl_feed(struct dvb_demux_feed *dvbdmxfeed, int onoff) | |||
230 | 233 | ||
231 | static int pvr2_dvb_start_feed(struct dvb_demux_feed *dvbdmxfeed) | 234 | static int pvr2_dvb_start_feed(struct dvb_demux_feed *dvbdmxfeed) |
232 | { | 235 | { |
233 | printk(KERN_DEBUG "start pid: 0x%04x, feedtype: %d\n", | 236 | pvr2_trace(PVR2_TRACE_DVB_FEED, "start pid: 0x%04x", dvbdmxfeed->pid); |
234 | dvbdmxfeed->pid, dvbdmxfeed->type); | ||
235 | return pvr2_dvb_ctrl_feed(dvbdmxfeed, 1); | 237 | return pvr2_dvb_ctrl_feed(dvbdmxfeed, 1); |
236 | } | 238 | } |
237 | 239 | ||
238 | static int pvr2_dvb_stop_feed(struct dvb_demux_feed *dvbdmxfeed) | 240 | static int pvr2_dvb_stop_feed(struct dvb_demux_feed *dvbdmxfeed) |
239 | { | 241 | { |
240 | printk(KERN_DEBUG "stop pid: 0x%04x, feedtype: %d\n", | 242 | pvr2_trace(PVR2_TRACE_DVB_FEED, "stop pid: 0x%04x", dvbdmxfeed->pid); |
241 | dvbdmxfeed->pid, dvbdmxfeed->type); | ||
242 | return pvr2_dvb_ctrl_feed(dvbdmxfeed, 0); | 243 | return pvr2_dvb_ctrl_feed(dvbdmxfeed, 0); |
243 | } | 244 | } |
244 | 245 | ||
@@ -259,7 +260,8 @@ static int pvr2_dvb_adapter_init(struct pvr2_dvb_adapter *adap) | |||
259 | &adap->channel.hdw->usb_dev->dev, | 260 | &adap->channel.hdw->usb_dev->dev, |
260 | adapter_nr); | 261 | adapter_nr); |
261 | if (ret < 0) { | 262 | if (ret < 0) { |
262 | err("dvb_register_adapter failed: error %d", ret); | 263 | pvr2_trace(PVR2_TRACE_ERROR_LEGS, |
264 | "dvb_register_adapter failed: error %d", ret); | ||
263 | goto err; | 265 | goto err; |
264 | } | 266 | } |
265 | adap->dvb_adap.priv = adap; | 267 | adap->dvb_adap.priv = adap; |
@@ -276,7 +278,8 @@ static int pvr2_dvb_adapter_init(struct pvr2_dvb_adapter *adap) | |||
276 | 278 | ||
277 | ret = dvb_dmx_init(&adap->demux); | 279 | ret = dvb_dmx_init(&adap->demux); |
278 | if (ret < 0) { | 280 | if (ret < 0) { |
279 | err("dvb_dmx_init failed: error %d", ret); | 281 | pvr2_trace(PVR2_TRACE_ERROR_LEGS, |
282 | "dvb_dmx_init failed: error %d", ret); | ||
280 | goto err_dmx; | 283 | goto err_dmx; |
281 | } | 284 | } |
282 | 285 | ||
@@ -286,7 +289,8 @@ static int pvr2_dvb_adapter_init(struct pvr2_dvb_adapter *adap) | |||
286 | 289 | ||
287 | ret = dvb_dmxdev_init(&adap->dmxdev, &adap->dvb_adap); | 290 | ret = dvb_dmxdev_init(&adap->dmxdev, &adap->dvb_adap); |
288 | if (ret < 0) { | 291 | if (ret < 0) { |
289 | err("dvb_dmxdev_init failed: error %d", ret); | 292 | pvr2_trace(PVR2_TRACE_ERROR_LEGS, |
293 | "dvb_dmxdev_init failed: error %d", ret); | ||
290 | goto err_dmx_dev; | 294 | goto err_dmx_dev; |
291 | } | 295 | } |
292 | 296 | ||
@@ -304,7 +308,7 @@ err: | |||
304 | 308 | ||
305 | static int pvr2_dvb_adapter_exit(struct pvr2_dvb_adapter *adap) | 309 | static int pvr2_dvb_adapter_exit(struct pvr2_dvb_adapter *adap) |
306 | { | 310 | { |
307 | printk(KERN_DEBUG "unregistering DVB devices\n"); | 311 | pvr2_trace(PVR2_TRACE_INFO, "unregistering DVB devices"); |
308 | dvb_net_release(&adap->dvb_net); | 312 | dvb_net_release(&adap->dvb_net); |
309 | adap->demux.dmx.close(&adap->demux.dmx); | 313 | adap->demux.dmx.close(&adap->demux.dmx); |
310 | dvb_dmxdev_release(&adap->dmxdev); | 314 | dvb_dmxdev_release(&adap->dmxdev); |
@@ -320,7 +324,7 @@ static int pvr2_dvb_frontend_init(struct pvr2_dvb_adapter *adap) | |||
320 | int ret = 0; | 324 | int ret = 0; |
321 | 325 | ||
322 | if (dvb_props == NULL) { | 326 | if (dvb_props == NULL) { |
323 | err("fe_props not defined!"); | 327 | pvr2_trace(PVR2_TRACE_ERROR_LEGS, "fe_props not defined!"); |
324 | return -EINVAL; | 328 | return -EINVAL; |
325 | } | 329 | } |
326 | 330 | ||
@@ -328,13 +332,15 @@ static int pvr2_dvb_frontend_init(struct pvr2_dvb_adapter *adap) | |||
328 | &adap->channel, | 332 | &adap->channel, |
329 | (1 << PVR2_CVAL_INPUT_DTV)); | 333 | (1 << PVR2_CVAL_INPUT_DTV)); |
330 | if (ret) { | 334 | if (ret) { |
331 | err("failed to grab control of dtv input (code=%d)", | 335 | pvr2_trace(PVR2_TRACE_ERROR_LEGS, |
336 | "failed to grab control of dtv input (code=%d)", | ||
332 | ret); | 337 | ret); |
333 | return ret; | 338 | return ret; |
334 | } | 339 | } |
335 | 340 | ||
336 | if (dvb_props->frontend_attach == NULL) { | 341 | if (dvb_props->frontend_attach == NULL) { |
337 | err("frontend_attach not defined!"); | 342 | pvr2_trace(PVR2_TRACE_ERROR_LEGS, |
343 | "frontend_attach not defined!"); | ||
338 | ret = -EINVAL; | 344 | ret = -EINVAL; |
339 | goto done; | 345 | goto done; |
340 | } | 346 | } |
@@ -342,7 +348,8 @@ static int pvr2_dvb_frontend_init(struct pvr2_dvb_adapter *adap) | |||
342 | if ((dvb_props->frontend_attach(adap) == 0) && (adap->fe)) { | 348 | if ((dvb_props->frontend_attach(adap) == 0) && (adap->fe)) { |
343 | 349 | ||
344 | if (dvb_register_frontend(&adap->dvb_adap, adap->fe)) { | 350 | if (dvb_register_frontend(&adap->dvb_adap, adap->fe)) { |
345 | err("frontend registration failed!"); | 351 | pvr2_trace(PVR2_TRACE_ERROR_LEGS, |
352 | "frontend registration failed!"); | ||
346 | dvb_frontend_detach(adap->fe); | 353 | dvb_frontend_detach(adap->fe); |
347 | adap->fe = NULL; | 354 | adap->fe = NULL; |
348 | ret = -ENODEV; | 355 | ret = -ENODEV; |
@@ -359,7 +366,8 @@ static int pvr2_dvb_frontend_init(struct pvr2_dvb_adapter *adap) | |||
359 | adap->fe->ops.ts_bus_ctrl = pvr2_dvb_bus_ctrl; | 366 | adap->fe->ops.ts_bus_ctrl = pvr2_dvb_bus_ctrl; |
360 | 367 | ||
361 | } else { | 368 | } else { |
362 | err("no frontend was attached!"); | 369 | pvr2_trace(PVR2_TRACE_ERROR_LEGS, |
370 | "no frontend was attached!"); | ||
363 | ret = -ENODEV; | 371 | ret = -ENODEV; |
364 | return ret; | 372 | return ret; |
365 | } | 373 | } |