aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/media/video/videobuf-dvb.c43
1 files changed, 25 insertions, 18 deletions
diff --git a/drivers/media/video/videobuf-dvb.c b/drivers/media/video/videobuf-dvb.c
index 36b1e67ac330..adf7674b4a02 100644
--- a/drivers/media/video/videobuf-dvb.c
+++ b/drivers/media/video/videobuf-dvb.c
@@ -126,7 +126,6 @@ static int videobuf_dvb_stop_feed(struct dvb_demux_feed *feed)
126 mutex_lock(&dvb->lock); 126 mutex_lock(&dvb->lock);
127 dvb->nfeeds--; 127 dvb->nfeeds--;
128 if (0 == dvb->nfeeds && NULL != dvb->thread) { 128 if (0 == dvb->nfeeds && NULL != dvb->thread) {
129 // FIXME: cx8802_cancel_buffers(dev);
130 err = kthread_stop(dvb->thread); 129 err = kthread_stop(dvb->thread);
131 dvb->thread = NULL; 130 dvb->thread = NULL;
132 } 131 }
@@ -154,7 +153,8 @@ int videobuf_dvb_register_bus(struct videobuf_dvb_frontends *f,
154 } 153 }
155 154
156 /* Bring up the adapter */ 155 /* Bring up the adapter */
157 res = videobuf_dvb_register_adapter(f, module, adapter_priv, device, fe->dvb.name, adapter_nr, mfe_shared); 156 res = videobuf_dvb_register_adapter(f, module, adapter_priv, device,
157 fe->dvb.name, adapter_nr, mfe_shared);
158 if (res < 0) { 158 if (res < 0) {
159 printk(KERN_WARNING "videobuf_dvb_register_adapter failed (errno = %d)\n", res); 159 printk(KERN_WARNING "videobuf_dvb_register_adapter failed (errno = %d)\n", res);
160 return res; 160 return res;
@@ -179,6 +179,7 @@ err:
179 videobuf_dvb_unregister_bus(f); 179 videobuf_dvb_unregister_bus(f);
180 return res; 180 return res;
181} 181}
182EXPORT_SYMBOL(videobuf_dvb_register_bus);
182 183
183int videobuf_dvb_register_adapter(struct videobuf_dvb_frontends *fe, 184int videobuf_dvb_register_adapter(struct videobuf_dvb_frontends *fe,
184 struct module *module, 185 struct module *module,
@@ -193,7 +194,8 @@ int videobuf_dvb_register_adapter(struct videobuf_dvb_frontends *fe,
193 mutex_init(&fe->lock); 194 mutex_init(&fe->lock);
194 195
195 /* register adapter */ 196 /* register adapter */
196 result = dvb_register_adapter(&fe->adapter, adapter_name, module, device, adapter_nr); 197 result = dvb_register_adapter(&fe->adapter, adapter_name, module,
198 device, adapter_nr);
197 if (result < 0) { 199 if (result < 0) {
198 printk(KERN_WARNING "%s: dvb_register_adapter failed (errno = %d)\n", 200 printk(KERN_WARNING "%s: dvb_register_adapter failed (errno = %d)\n",
199 adapter_name, result); 201 adapter_name, result);
@@ -204,7 +206,8 @@ int videobuf_dvb_register_adapter(struct videobuf_dvb_frontends *fe,
204 return result; 206 return result;
205} 207}
206 208
207int videobuf_dvb_register_frontend(struct dvb_adapter *adapter, struct videobuf_dvb *dvb) 209int videobuf_dvb_register_frontend(struct dvb_adapter *adapter,
210 struct videobuf_dvb *dvb)
208{ 211{
209 int result; 212 int result;
210 213
@@ -299,15 +302,18 @@ void videobuf_dvb_unregister_bus(struct videobuf_dvb_frontends *f)
299 mutex_lock(&f->lock); 302 mutex_lock(&f->lock);
300 list_for_each_safe(list, q, &f->felist) { 303 list_for_each_safe(list, q, &f->felist) {
301 fe = list_entry(list, struct videobuf_dvb_frontend, felist); 304 fe = list_entry(list, struct videobuf_dvb_frontend, felist);
302 if(fe->dvb.net.dvbdev) { 305 if (fe->dvb.net.dvbdev) {
303 dvb_net_release(&fe->dvb.net); 306 dvb_net_release(&fe->dvb.net);
304 fe->dvb.demux.dmx.remove_frontend(&fe->dvb.demux.dmx, &fe->dvb.fe_mem); 307 fe->dvb.demux.dmx.remove_frontend(&fe->dvb.demux.dmx,
305 fe->dvb.demux.dmx.remove_frontend(&fe->dvb.demux.dmx, &fe->dvb.fe_hw); 308 &fe->dvb.fe_mem);
309 fe->dvb.demux.dmx.remove_frontend(&fe->dvb.demux.dmx,
310 &fe->dvb.fe_hw);
306 dvb_dmxdev_release(&fe->dvb.dmxdev); 311 dvb_dmxdev_release(&fe->dvb.dmxdev);
307 dvb_dmx_release(&fe->dvb.demux); 312 dvb_dmx_release(&fe->dvb.demux);
308 dvb_unregister_frontend(fe->dvb.frontend); 313 dvb_unregister_frontend(fe->dvb.frontend);
309 } 314 }
310 if(fe->dvb.frontend) /* always allocated, may have been reset */ 315 if (fe->dvb.frontend)
316 /* always allocated, may have been reset */
311 dvb_frontend_detach(fe->dvb.frontend); 317 dvb_frontend_detach(fe->dvb.frontend);
312 list_del(list); 318 list_del(list);
313 kfree(fe); 319 kfree(fe);
@@ -316,8 +322,10 @@ void videobuf_dvb_unregister_bus(struct videobuf_dvb_frontends *f)
316 322
317 dvb_unregister_adapter(&f->adapter); 323 dvb_unregister_adapter(&f->adapter);
318} 324}
325EXPORT_SYMBOL(videobuf_dvb_unregister_bus);
319 326
320struct videobuf_dvb_frontend * videobuf_dvb_get_frontend(struct videobuf_dvb_frontends *f, int id) 327struct videobuf_dvb_frontend *videobuf_dvb_get_frontend(
328 struct videobuf_dvb_frontends *f, int id)
321{ 329{
322 struct list_head *list, *q; 330 struct list_head *list, *q;
323 struct videobuf_dvb_frontend *fe, *ret = NULL; 331 struct videobuf_dvb_frontend *fe, *ret = NULL;
@@ -336,8 +344,10 @@ struct videobuf_dvb_frontend * videobuf_dvb_get_frontend(struct videobuf_dvb_fro
336 344
337 return ret; 345 return ret;
338} 346}
347EXPORT_SYMBOL(videobuf_dvb_get_frontend);
339 348
340int videobuf_dvb_find_frontend(struct videobuf_dvb_frontends *f, struct dvb_frontend *p) 349int videobuf_dvb_find_frontend(struct videobuf_dvb_frontends *f,
350 struct dvb_frontend *p)
341{ 351{
342 struct list_head *list, *q; 352 struct list_head *list, *q;
343 struct videobuf_dvb_frontend *fe = NULL; 353 struct videobuf_dvb_frontend *fe = NULL;
@@ -357,12 +367,14 @@ int videobuf_dvb_find_frontend(struct videobuf_dvb_frontends *f, struct dvb_fron
357 367
358 return ret; 368 return ret;
359} 369}
370EXPORT_SYMBOL(videobuf_dvb_find_frontend);
360 371
361struct videobuf_dvb_frontend * videobuf_dvb_alloc_frontend(struct videobuf_dvb_frontends *f, int id) 372struct videobuf_dvb_frontend *videobuf_dvb_alloc_frontend(
373 struct videobuf_dvb_frontends *f, int id)
362{ 374{
363 struct videobuf_dvb_frontend *fe; 375 struct videobuf_dvb_frontend *fe;
364 376
365 fe = kzalloc(sizeof(struct videobuf_dvb_frontend),GFP_KERNEL); 377 fe = kzalloc(sizeof(struct videobuf_dvb_frontend), GFP_KERNEL);
366 if (fe == NULL) 378 if (fe == NULL)
367 goto fail_alloc; 379 goto fail_alloc;
368 380
@@ -370,18 +382,13 @@ struct videobuf_dvb_frontend * videobuf_dvb_alloc_frontend(struct videobuf_dvb_f
370 mutex_init(&fe->dvb.lock); 382 mutex_init(&fe->dvb.lock);
371 383
372 mutex_lock(&f->lock); 384 mutex_lock(&f->lock);
373 list_add_tail(&fe->felist,&f->felist); 385 list_add_tail(&fe->felist, &f->felist);
374 mutex_unlock(&f->lock); 386 mutex_unlock(&f->lock);
375 387
376fail_alloc: 388fail_alloc:
377 return fe; 389 return fe;
378} 390}
379
380EXPORT_SYMBOL(videobuf_dvb_register_bus);
381EXPORT_SYMBOL(videobuf_dvb_unregister_bus);
382EXPORT_SYMBOL(videobuf_dvb_alloc_frontend); 391EXPORT_SYMBOL(videobuf_dvb_alloc_frontend);
383EXPORT_SYMBOL(videobuf_dvb_get_frontend);
384EXPORT_SYMBOL(videobuf_dvb_find_frontend);
385 392
386/* ------------------------------------------------------------------ */ 393/* ------------------------------------------------------------------ */
387/* 394/*