|
@@ -133,55 +133,7 @@ static int videobuf_dvb_stop_feed(struct dvb_demux_feed *feed)
|
|
|
return err;
|
|
|
}
|
|
|
|
|
|
-/* ------------------------------------------------------------------ */
|
|
|
-/* Register a single adapter and one or more frontends */
|
|
|
-int videobuf_dvb_register_bus(struct videobuf_dvb_frontends *f,
|
|
|
- struct module *module,
|
|
|
- void *adapter_priv,
|
|
|
- struct device *device,
|
|
|
- short *adapter_nr,
|
|
|
- int mfe_shared)
|
|
|
-{
|
|
|
- struct list_head *list, *q;
|
|
|
- struct videobuf_dvb_frontend *fe;
|
|
|
- int res;
|
|
|
-
|
|
|
- fe = videobuf_dvb_get_frontend(f, 1);
|
|
|
- if (!fe) {
|
|
|
- printk(KERN_WARNING "Unable to register the adapter which has no frontends\n");
|
|
|
- return -EINVAL;
|
|
|
- }
|
|
|
-
|
|
|
- /* Bring up the adapter */
|
|
|
- res = videobuf_dvb_register_adapter(f, module, adapter_priv, device,
|
|
|
- fe->dvb.name, adapter_nr, mfe_shared);
|
|
|
- if (res < 0) {
|
|
|
- printk(KERN_WARNING "videobuf_dvb_register_adapter failed (errno = %d)\n", res);
|
|
|
- return res;
|
|
|
- }
|
|
|
-
|
|
|
- /* Attach all of the frontends to the adapter */
|
|
|
- mutex_lock(&f->lock);
|
|
|
- list_for_each_safe(list, q, &f->felist) {
|
|
|
- fe = list_entry(list, struct videobuf_dvb_frontend, felist);
|
|
|
- res = videobuf_dvb_register_frontend(&f->adapter, &fe->dvb);
|
|
|
- if (res < 0) {
|
|
|
- printk(KERN_WARNING "%s: videobuf_dvb_register_frontend failed (errno = %d)\n",
|
|
|
- fe->dvb.name, res);
|
|
|
- goto err;
|
|
|
- }
|
|
|
- }
|
|
|
- mutex_unlock(&f->lock);
|
|
|
- return 0;
|
|
|
-
|
|
|
-err:
|
|
|
- mutex_unlock(&f->lock);
|
|
|
- videobuf_dvb_unregister_bus(f);
|
|
|
- return res;
|
|
|
-}
|
|
|
-EXPORT_SYMBOL(videobuf_dvb_register_bus);
|
|
|
-
|
|
|
-int videobuf_dvb_register_adapter(struct videobuf_dvb_frontends *fe,
|
|
|
+static int videobuf_dvb_register_adapter(struct videobuf_dvb_frontends *fe,
|
|
|
struct module *module,
|
|
|
void *adapter_priv,
|
|
|
struct device *device,
|
|
@@ -206,7 +158,7 @@ int videobuf_dvb_register_adapter(struct videobuf_dvb_frontends *fe,
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
-int videobuf_dvb_register_frontend(struct dvb_adapter *adapter,
|
|
|
+static int videobuf_dvb_register_frontend(struct dvb_adapter *adapter,
|
|
|
struct videobuf_dvb *dvb)
|
|
|
{
|
|
|
int result;
|
|
@@ -294,6 +246,54 @@ fail_frontend:
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
+/* ------------------------------------------------------------------ */
|
|
|
+/* Register a single adapter and one or more frontends */
|
|
|
+int videobuf_dvb_register_bus(struct videobuf_dvb_frontends *f,
|
|
|
+ struct module *module,
|
|
|
+ void *adapter_priv,
|
|
|
+ struct device *device,
|
|
|
+ short *adapter_nr,
|
|
|
+ int mfe_shared)
|
|
|
+{
|
|
|
+ struct list_head *list, *q;
|
|
|
+ struct videobuf_dvb_frontend *fe;
|
|
|
+ int res;
|
|
|
+
|
|
|
+ fe = videobuf_dvb_get_frontend(f, 1);
|
|
|
+ if (!fe) {
|
|
|
+ printk(KERN_WARNING "Unable to register the adapter which has no frontends\n");
|
|
|
+ return -EINVAL;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* Bring up the adapter */
|
|
|
+ res = videobuf_dvb_register_adapter(f, module, adapter_priv, device,
|
|
|
+ fe->dvb.name, adapter_nr, mfe_shared);
|
|
|
+ if (res < 0) {
|
|
|
+ printk(KERN_WARNING "videobuf_dvb_register_adapter failed (errno = %d)\n", res);
|
|
|
+ return res;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* Attach all of the frontends to the adapter */
|
|
|
+ mutex_lock(&f->lock);
|
|
|
+ list_for_each_safe(list, q, &f->felist) {
|
|
|
+ fe = list_entry(list, struct videobuf_dvb_frontend, felist);
|
|
|
+ res = videobuf_dvb_register_frontend(&f->adapter, &fe->dvb);
|
|
|
+ if (res < 0) {
|
|
|
+ printk(KERN_WARNING "%s: videobuf_dvb_register_frontend failed (errno = %d)\n",
|
|
|
+ fe->dvb.name, res);
|
|
|
+ goto err;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ mutex_unlock(&f->lock);
|
|
|
+ return 0;
|
|
|
+
|
|
|
+err:
|
|
|
+ mutex_unlock(&f->lock);
|
|
|
+ videobuf_dvb_unregister_bus(f);
|
|
|
+ return res;
|
|
|
+}
|
|
|
+EXPORT_SYMBOL(videobuf_dvb_register_bus);
|
|
|
+
|
|
|
void videobuf_dvb_unregister_bus(struct videobuf_dvb_frontends *f)
|
|
|
{
|
|
|
struct list_head *list, *q;
|
|
@@ -389,11 +389,3 @@ fail_alloc:
|
|
|
return fe;
|
|
|
}
|
|
|
EXPORT_SYMBOL(videobuf_dvb_alloc_frontend);
|
|
|
-
|
|
|
-/* ------------------------------------------------------------------ */
|
|
|
-/*
|
|
|
- * Local variables:
|
|
|
- * c-basic-offset: 8
|
|
|
- * compile-command: "make DVB=1"
|
|
|
- * End:
|
|
|
- */
|