diff options
author | Steven Toth <stoth@hauppauge.com> | 2008-04-18 20:39:11 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@infradead.org> | 2008-04-24 13:09:43 -0400 |
commit | bc3c613cef903e73e7365986a1943b0124350018 (patch) | |
tree | 4414b3d5d059d0e0faacafc03724e7cbf38c9fa1 /drivers/media/video/au0828/au0828-dvb.c | |
parent | 9c26de555dd3c2cb9833b4d324150aa6b5547b91 (diff) |
V4L/DVB (7625): au0828: Cleanup
Signed-off-by: Steven Toth <stoth@hauppauge.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Diffstat (limited to 'drivers/media/video/au0828/au0828-dvb.c')
-rw-r--r-- | drivers/media/video/au0828/au0828-dvb.c | 53 |
1 files changed, 23 insertions, 30 deletions
diff --git a/drivers/media/video/au0828/au0828-dvb.c b/drivers/media/video/au0828/au0828-dvb.c index ecc08a8e31ca..453fb3efa3e0 100644 --- a/drivers/media/video/au0828/au0828-dvb.c +++ b/drivers/media/video/au0828/au0828-dvb.c | |||
@@ -26,19 +26,11 @@ | |||
26 | #include <media/v4l2-common.h> | 26 | #include <media/v4l2-common.h> |
27 | 27 | ||
28 | #include "au0828.h" | 28 | #include "au0828.h" |
29 | |||
30 | #include "au8522.h" | 29 | #include "au8522.h" |
31 | #include "xc5000.h" | 30 | #include "xc5000.h" |
32 | 31 | ||
33 | DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr); | 32 | DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr); |
34 | 33 | ||
35 | unsigned int dvb_debug = 1; | ||
36 | |||
37 | #define _dbg(level, fmt, arg...)\ | ||
38 | do { if (dvb_debug >= level)\ | ||
39 | printk(KERN_DEBUG "%s/0: " fmt, DRIVER_NAME, ## arg);\ | ||
40 | } while (0) | ||
41 | |||
42 | static struct au8522_config hauppauge_hvr950q_config = { | 34 | static struct au8522_config hauppauge_hvr950q_config = { |
43 | .demod_address = 0x8e >> 1, | 35 | .demod_address = 0x8e >> 1, |
44 | .status_mode = AU8522_DEMODLOCKING, | 36 | .status_mode = AU8522_DEMODLOCKING, |
@@ -57,6 +49,8 @@ static void urb_completion(struct urb *purb) | |||
57 | struct au0828_dev *dev = purb->context; | 49 | struct au0828_dev *dev = purb->context; |
58 | int ptype = usb_pipetype(purb->pipe); | 50 | int ptype = usb_pipetype(purb->pipe); |
59 | 51 | ||
52 | dprintk(2, "%s()\n", __FUNCTION__); | ||
53 | |||
60 | if (!dev) | 54 | if (!dev) |
61 | return; | 55 | return; |
62 | 56 | ||
@@ -84,7 +78,7 @@ static int stop_urb_transfer(struct au0828_dev *dev) | |||
84 | { | 78 | { |
85 | int i; | 79 | int i; |
86 | 80 | ||
87 | printk(KERN_INFO "%s()\n", __FUNCTION__); | 81 | dprintk(2, "%s()\n", __FUNCTION__); |
88 | 82 | ||
89 | /* FIXME: Do we need to free the transfer_buffers? */ | 83 | /* FIXME: Do we need to free the transfer_buffers? */ |
90 | for (i = 0; i < URB_COUNT; i++) { | 84 | for (i = 0; i < URB_COUNT; i++) { |
@@ -105,15 +99,11 @@ static int start_urb_transfer(struct au0828_dev *dev) | |||
105 | { | 99 | { |
106 | struct urb *purb; | 100 | struct urb *purb; |
107 | int i, ret = -ENOMEM; | 101 | int i, ret = -ENOMEM; |
108 | unsigned int pipe = usb_rcvbulkpipe(dev->usbdev, _AU0828_BULKPIPE); | ||
109 | int pipesize = usb_maxpacket(dev->usbdev, pipe, usb_pipeout(pipe)); | ||
110 | int packets = _BULKPIPESIZE / pipesize; | ||
111 | int transfer_buflen = packets * pipesize; | ||
112 | 102 | ||
113 | printk(KERN_INFO "%s() transfer_buflen = %d\n", __FUNCTION__, transfer_buflen); | 103 | dprintk(2, "%s()\n", __FUNCTION__); |
114 | 104 | ||
115 | if (dev->urb_streaming) { | 105 | if (dev->urb_streaming) { |
116 | printk("%s: iso xfer already running!\n", __FUNCTION__); | 106 | dprintk(2, "%s: iso xfer already running!\n", __FUNCTION__); |
117 | return 0; | 107 | return 0; |
118 | } | 108 | } |
119 | 109 | ||
@@ -167,17 +157,15 @@ static int au0828_dvb_start_feed(struct dvb_demux_feed *feed) | |||
167 | struct au0828_dvb *dvb = &dev->dvb; | 157 | struct au0828_dvb *dvb = &dev->dvb; |
168 | int ret = 0; | 158 | int ret = 0; |
169 | 159 | ||
170 | printk(KERN_INFO "%s() pid = 0x%x index = %d\n", __FUNCTION__, feed->pid, feed->index); | 160 | dprintk(1, "%s()\n", __FUNCTION__); |
171 | 161 | ||
172 | if (!demux->dmx.frontend) | 162 | if (!demux->dmx.frontend) |
173 | return -EINVAL; | 163 | return -EINVAL; |
174 | 164 | ||
175 | printk(KERN_INFO "%s() Preparing, feeding = %d\n", __FUNCTION__, dvb->feeding); | ||
176 | if (dvb) { | 165 | if (dvb) { |
177 | mutex_lock(&dvb->lock); | 166 | mutex_lock(&dvb->lock); |
178 | if (dvb->feeding++ == 0) { | 167 | if (dvb->feeding++ == 0) { |
179 | printk(KERN_INFO "%s() Starting Transport DMA\n", | 168 | /* Start transport */ |
180 | __FUNCTION__); | ||
181 | au0828_write(dev, 0x608, 0x90); | 169 | au0828_write(dev, 0x608, 0x90); |
182 | au0828_write(dev, 0x609, 0x72); | 170 | au0828_write(dev, 0x609, 0x72); |
183 | au0828_write(dev, 0x60a, 0x71); | 171 | au0828_write(dev, 0x60a, 0x71); |
@@ -197,13 +185,12 @@ static int au0828_dvb_stop_feed(struct dvb_demux_feed *feed) | |||
197 | struct au0828_dvb *dvb = &dev->dvb; | 185 | struct au0828_dvb *dvb = &dev->dvb; |
198 | int ret = 0; | 186 | int ret = 0; |
199 | 187 | ||
200 | printk(KERN_INFO "%s() pid = 0x%x index = %d\n", __FUNCTION__, feed->pid, feed->index); | 188 | dprintk(1, "%s()\n", __FUNCTION__); |
201 | 189 | ||
202 | if (dvb) { | 190 | if (dvb) { |
203 | mutex_lock(&dvb->lock); | 191 | mutex_lock(&dvb->lock); |
204 | if (--dvb->feeding == 0) { | 192 | if (--dvb->feeding == 0) { |
205 | printk(KERN_INFO "%s() Stopping Transport DMA\n", | 193 | /* Stop transport */ |
206 | __FUNCTION__); | ||
207 | au0828_write(dev, 0x608, 0x00); | 194 | au0828_write(dev, 0x608, 0x00); |
208 | au0828_write(dev, 0x609, 0x00); | 195 | au0828_write(dev, 0x609, 0x00); |
209 | au0828_write(dev, 0x60a, 0x00); | 196 | au0828_write(dev, 0x60a, 0x00); |
@@ -221,11 +208,13 @@ int dvb_register(struct au0828_dev *dev) | |||
221 | struct au0828_dvb *dvb = &dev->dvb; | 208 | struct au0828_dvb *dvb = &dev->dvb; |
222 | int result; | 209 | int result; |
223 | 210 | ||
211 | dprintk(1, "%s()\n", __FUNCTION__); | ||
212 | |||
224 | /* register adapter */ | 213 | /* register adapter */ |
225 | result = dvb_register_adapter(&dvb->adapter, DRIVER_NAME, THIS_MODULE, | 214 | result = dvb_register_adapter(&dvb->adapter, DRIVER_NAME, THIS_MODULE, |
226 | &dev->usbdev->dev, adapter_nr); | 215 | &dev->usbdev->dev, adapter_nr); |
227 | if (result < 0) { | 216 | if (result < 0) { |
228 | printk(KERN_WARNING "%s: dvb_register_adapter failed (errno = %d)\n", | 217 | printk(KERN_ERROR "%s: dvb_register_adapter failed (errno = %d)\n", |
229 | DRIVER_NAME, result); | 218 | DRIVER_NAME, result); |
230 | goto fail_adapter; | 219 | goto fail_adapter; |
231 | } | 220 | } |
@@ -234,7 +223,7 @@ int dvb_register(struct au0828_dev *dev) | |||
234 | /* register frontend */ | 223 | /* register frontend */ |
235 | result = dvb_register_frontend(&dvb->adapter, dvb->frontend); | 224 | result = dvb_register_frontend(&dvb->adapter, dvb->frontend); |
236 | if (result < 0) { | 225 | if (result < 0) { |
237 | printk(KERN_WARNING "%s: dvb_register_frontend failed (errno = %d)\n", | 226 | printk(KERN_ERR "%s: dvb_register_frontend failed (errno = %d)\n", |
238 | DRIVER_NAME, result); | 227 | DRIVER_NAME, result); |
239 | goto fail_frontend; | 228 | goto fail_frontend; |
240 | } | 229 | } |
@@ -250,7 +239,7 @@ int dvb_register(struct au0828_dev *dev) | |||
250 | dvb->demux.stop_feed = au0828_dvb_stop_feed; | 239 | dvb->demux.stop_feed = au0828_dvb_stop_feed; |
251 | result = dvb_dmx_init(&dvb->demux); | 240 | result = dvb_dmx_init(&dvb->demux); |
252 | if (result < 0) { | 241 | if (result < 0) { |
253 | printk(KERN_WARNING "%s: dvb_dmx_init failed (errno = %d)\n", | 242 | printk(KERN_ERR "%s: dvb_dmx_init failed (errno = %d)\n", |
254 | DRIVER_NAME, result); | 243 | DRIVER_NAME, result); |
255 | goto fail_dmx; | 244 | goto fail_dmx; |
256 | } | 245 | } |
@@ -260,7 +249,7 @@ int dvb_register(struct au0828_dev *dev) | |||
260 | dvb->dmxdev.capabilities = 0; | 249 | dvb->dmxdev.capabilities = 0; |
261 | result = dvb_dmxdev_init(&dvb->dmxdev, &dvb->adapter); | 250 | result = dvb_dmxdev_init(&dvb->dmxdev, &dvb->adapter); |
262 | if (result < 0) { | 251 | if (result < 0) { |
263 | printk(KERN_WARNING "%s: dvb_dmxdev_init failed (errno = %d)\n", | 252 | printk(KERN_ERR "%s: dvb_dmxdev_init failed (errno = %d)\n", |
264 | DRIVER_NAME, result); | 253 | DRIVER_NAME, result); |
265 | goto fail_dmxdev; | 254 | goto fail_dmxdev; |
266 | } | 255 | } |
@@ -268,7 +257,7 @@ int dvb_register(struct au0828_dev *dev) | |||
268 | dvb->fe_hw.source = DMX_FRONTEND_0; | 257 | dvb->fe_hw.source = DMX_FRONTEND_0; |
269 | result = dvb->demux.dmx.add_frontend(&dvb->demux.dmx, &dvb->fe_hw); | 258 | result = dvb->demux.dmx.add_frontend(&dvb->demux.dmx, &dvb->fe_hw); |
270 | if (result < 0) { | 259 | if (result < 0) { |
271 | printk(KERN_WARNING "%s: add_frontend failed (DMX_FRONTEND_0, errno = %d)\n", | 260 | printk(KERN_ERR "%s: add_frontend failed (DMX_FRONTEND_0, errno = %d)\n", |
272 | DRIVER_NAME, result); | 261 | DRIVER_NAME, result); |
273 | goto fail_fe_hw; | 262 | goto fail_fe_hw; |
274 | } | 263 | } |
@@ -276,14 +265,14 @@ int dvb_register(struct au0828_dev *dev) | |||
276 | dvb->fe_mem.source = DMX_MEMORY_FE; | 265 | dvb->fe_mem.source = DMX_MEMORY_FE; |
277 | result = dvb->demux.dmx.add_frontend(&dvb->demux.dmx, &dvb->fe_mem); | 266 | result = dvb->demux.dmx.add_frontend(&dvb->demux.dmx, &dvb->fe_mem); |
278 | if (result < 0) { | 267 | if (result < 0) { |
279 | printk(KERN_WARNING "%s: add_frontend failed (DMX_MEMORY_FE, errno = %d)\n", | 268 | printk(KERN_ERR "%s: add_frontend failed (DMX_MEMORY_FE, errno = %d)\n", |
280 | DRIVER_NAME, result); | 269 | DRIVER_NAME, result); |
281 | goto fail_fe_mem; | 270 | goto fail_fe_mem; |
282 | } | 271 | } |
283 | 272 | ||
284 | result = dvb->demux.dmx.connect_frontend(&dvb->demux.dmx, &dvb->fe_hw); | 273 | result = dvb->demux.dmx.connect_frontend(&dvb->demux.dmx, &dvb->fe_hw); |
285 | if (result < 0) { | 274 | if (result < 0) { |
286 | printk(KERN_WARNING "%s: connect_frontend failed (errno = %d)\n", | 275 | printk(KERN_ERR "%s: connect_frontend failed (errno = %d)\n", |
287 | DRIVER_NAME, result); | 276 | DRIVER_NAME, result); |
288 | goto fail_fe_conn; | 277 | goto fail_fe_conn; |
289 | } | 278 | } |
@@ -313,6 +302,8 @@ void au0828_dvb_unregister(struct au0828_dev *dev) | |||
313 | { | 302 | { |
314 | struct au0828_dvb *dvb = &dev->dvb; | 303 | struct au0828_dvb *dvb = &dev->dvb; |
315 | 304 | ||
305 | dprintk(1, "%s()\n", __FUNCTION__); | ||
306 | |||
316 | if(dvb->frontend == NULL) | 307 | if(dvb->frontend == NULL) |
317 | return; | 308 | return; |
318 | 309 | ||
@@ -335,6 +326,8 @@ int au0828_dvb_register(struct au0828_dev *dev) | |||
335 | struct au0828_dvb *dvb = &dev->dvb; | 326 | struct au0828_dvb *dvb = &dev->dvb; |
336 | int ret; | 327 | int ret; |
337 | 328 | ||
329 | dprintk(1, "%s()\n", __FUNCTION__); | ||
330 | |||
338 | /* init frontend */ | 331 | /* init frontend */ |
339 | switch (dev->board) { | 332 | switch (dev->board) { |
340 | case AU0828_BOARD_HAUPPAUGE_HVR850: | 333 | case AU0828_BOARD_HAUPPAUGE_HVR850: |
@@ -355,7 +348,7 @@ int au0828_dvb_register(struct au0828_dev *dev) | |||
355 | break; | 348 | break; |
356 | } | 349 | } |
357 | if (NULL == dvb->frontend) { | 350 | if (NULL == dvb->frontend) { |
358 | printk("Frontend initialization failed\n"); | 351 | printk(KERN_ERR "%s() Frontend initialization failed\n", __FUNCTION__); |
359 | return -1; | 352 | return -1; |
360 | } | 353 | } |
361 | 354 | ||