aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/au0828/au0828-dvb.c
diff options
context:
space:
mode:
authorSteven Toth <stoth@hauppauge.com>2008-04-18 20:39:11 -0400
committerMauro Carvalho Chehab <mchehab@infradead.org>2008-04-24 13:09:43 -0400
commitbc3c613cef903e73e7365986a1943b0124350018 (patch)
tree4414b3d5d059d0e0faacafc03724e7cbf38c9fa1 /drivers/media/video/au0828/au0828-dvb.c
parent9c26de555dd3c2cb9833b4d324150aa6b5547b91 (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.c53
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
33DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr); 32DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr);
34 33
35unsigned 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
42static struct au8522_config hauppauge_hvr950q_config = { 34static 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