diff options
author | Stefan Richter <stefanr@s5r6.in-berlin.de> | 2011-02-06 09:41:44 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2011-03-21 19:32:21 -0400 |
commit | 92374e886c7518387e6816dedfe60fc7bdfa8fdd (patch) | |
tree | 68aa4fa6ff251d7d97bcc3139d718da583f3ccbb /drivers/media/dvb/firewire/firedtv-dvb.c | |
parent | 14ddc3188d50855ae2a419a6aced995e2834e5d4 (diff) |
[media] firedtv: drop obsolete backend abstraction
Since the drivers/ieee1394/ backend was removed from firedtv, its I/O no
longer needs to be abstracted as exchangeable backend methods.
Also, ieee1394 variants of module and device probe and removal are no
longer there. Move module probe and removal into firedtv-fw.c where
device probe and removal are implemented.
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/dvb/firewire/firedtv-dvb.c')
-rw-r--r-- | drivers/media/dvb/firewire/firedtv-dvb.c | 130 |
1 files changed, 3 insertions, 127 deletions
diff --git a/drivers/media/dvb/firewire/firedtv-dvb.c b/drivers/media/dvb/firewire/firedtv-dvb.c index 86349db75250..fd8bbbfa5c59 100644 --- a/drivers/media/dvb/firewire/firedtv-dvb.c +++ b/drivers/media/dvb/firewire/firedtv-dvb.c | |||
@@ -14,14 +14,9 @@ | |||
14 | #include <linux/device.h> | 14 | #include <linux/device.h> |
15 | #include <linux/errno.h> | 15 | #include <linux/errno.h> |
16 | #include <linux/kernel.h> | 16 | #include <linux/kernel.h> |
17 | #include <linux/mod_devicetable.h> | ||
18 | #include <linux/module.h> | 17 | #include <linux/module.h> |
19 | #include <linux/mutex.h> | 18 | #include <linux/mutex.h> |
20 | #include <linux/slab.h> | ||
21 | #include <linux/string.h> | ||
22 | #include <linux/types.h> | 19 | #include <linux/types.h> |
23 | #include <linux/wait.h> | ||
24 | #include <linux/workqueue.h> | ||
25 | 20 | ||
26 | #include <dmxdev.h> | 21 | #include <dmxdev.h> |
27 | #include <dvb_demux.h> | 22 | #include <dvb_demux.h> |
@@ -166,11 +161,11 @@ int fdtv_stop_feed(struct dvb_demux_feed *dvbdmxfeed) | |||
166 | 161 | ||
167 | DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr); | 162 | DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr); |
168 | 163 | ||
169 | int fdtv_dvb_register(struct firedtv *fdtv) | 164 | int fdtv_dvb_register(struct firedtv *fdtv, const char *name) |
170 | { | 165 | { |
171 | int err; | 166 | int err; |
172 | 167 | ||
173 | err = dvb_register_adapter(&fdtv->adapter, fdtv_model_names[fdtv->type], | 168 | err = dvb_register_adapter(&fdtv->adapter, name, |
174 | THIS_MODULE, fdtv->device, adapter_nr); | 169 | THIS_MODULE, fdtv->device, adapter_nr); |
175 | if (err < 0) | 170 | if (err < 0) |
176 | goto fail_log; | 171 | goto fail_log; |
@@ -210,7 +205,7 @@ int fdtv_dvb_register(struct firedtv *fdtv) | |||
210 | 205 | ||
211 | dvb_net_init(&fdtv->adapter, &fdtv->dvbnet, &fdtv->demux.dmx); | 206 | dvb_net_init(&fdtv->adapter, &fdtv->dvbnet, &fdtv->demux.dmx); |
212 | 207 | ||
213 | fdtv_frontend_init(fdtv); | 208 | fdtv_frontend_init(fdtv, name); |
214 | err = dvb_register_frontend(&fdtv->adapter, &fdtv->fe); | 209 | err = dvb_register_frontend(&fdtv->adapter, &fdtv->fe); |
215 | if (err) | 210 | if (err) |
216 | goto fail_net_release; | 211 | goto fail_net_release; |
@@ -248,122 +243,3 @@ void fdtv_dvb_unregister(struct firedtv *fdtv) | |||
248 | dvb_dmx_release(&fdtv->demux); | 243 | dvb_dmx_release(&fdtv->demux); |
249 | dvb_unregister_adapter(&fdtv->adapter); | 244 | dvb_unregister_adapter(&fdtv->adapter); |
250 | } | 245 | } |
251 | |||
252 | const char *fdtv_model_names[] = { | ||
253 | [FIREDTV_UNKNOWN] = "unknown type", | ||
254 | [FIREDTV_DVB_S] = "FireDTV S/CI", | ||
255 | [FIREDTV_DVB_C] = "FireDTV C/CI", | ||
256 | [FIREDTV_DVB_T] = "FireDTV T/CI", | ||
257 | [FIREDTV_DVB_S2] = "FireDTV S2 ", | ||
258 | }; | ||
259 | |||
260 | struct firedtv *fdtv_alloc(struct device *dev, | ||
261 | const struct firedtv_backend *backend, | ||
262 | const char *name, size_t name_len) | ||
263 | { | ||
264 | struct firedtv *fdtv; | ||
265 | int i; | ||
266 | |||
267 | fdtv = kzalloc(sizeof(*fdtv), GFP_KERNEL); | ||
268 | if (!fdtv) | ||
269 | return NULL; | ||
270 | |||
271 | dev_set_drvdata(dev, fdtv); | ||
272 | fdtv->device = dev; | ||
273 | fdtv->isochannel = -1; | ||
274 | fdtv->voltage = 0xff; | ||
275 | fdtv->tone = 0xff; | ||
276 | fdtv->backend = backend; | ||
277 | |||
278 | mutex_init(&fdtv->avc_mutex); | ||
279 | init_waitqueue_head(&fdtv->avc_wait); | ||
280 | mutex_init(&fdtv->demux_mutex); | ||
281 | INIT_WORK(&fdtv->remote_ctrl_work, avc_remote_ctrl_work); | ||
282 | |||
283 | for (i = ARRAY_SIZE(fdtv_model_names); --i; ) | ||
284 | if (strlen(fdtv_model_names[i]) <= name_len && | ||
285 | strncmp(name, fdtv_model_names[i], name_len) == 0) | ||
286 | break; | ||
287 | fdtv->type = i; | ||
288 | |||
289 | return fdtv; | ||
290 | } | ||
291 | |||
292 | #define MATCH_FLAGS (IEEE1394_MATCH_VENDOR_ID | IEEE1394_MATCH_MODEL_ID | \ | ||
293 | IEEE1394_MATCH_SPECIFIER_ID | IEEE1394_MATCH_VERSION) | ||
294 | |||
295 | #define DIGITAL_EVERYWHERE_OUI 0x001287 | ||
296 | #define AVC_UNIT_SPEC_ID_ENTRY 0x00a02d | ||
297 | #define AVC_SW_VERSION_ENTRY 0x010001 | ||
298 | |||
299 | const struct ieee1394_device_id fdtv_id_table[] = { | ||
300 | { | ||
301 | /* FloppyDTV S/CI and FloppyDTV S2 */ | ||
302 | .match_flags = MATCH_FLAGS, | ||
303 | .vendor_id = DIGITAL_EVERYWHERE_OUI, | ||
304 | .model_id = 0x000024, | ||
305 | .specifier_id = AVC_UNIT_SPEC_ID_ENTRY, | ||
306 | .version = AVC_SW_VERSION_ENTRY, | ||
307 | }, { | ||
308 | /* FloppyDTV T/CI */ | ||
309 | .match_flags = MATCH_FLAGS, | ||
310 | .vendor_id = DIGITAL_EVERYWHERE_OUI, | ||
311 | .model_id = 0x000025, | ||
312 | .specifier_id = AVC_UNIT_SPEC_ID_ENTRY, | ||
313 | .version = AVC_SW_VERSION_ENTRY, | ||
314 | }, { | ||
315 | /* FloppyDTV C/CI */ | ||
316 | .match_flags = MATCH_FLAGS, | ||
317 | .vendor_id = DIGITAL_EVERYWHERE_OUI, | ||
318 | .model_id = 0x000026, | ||
319 | .specifier_id = AVC_UNIT_SPEC_ID_ENTRY, | ||
320 | .version = AVC_SW_VERSION_ENTRY, | ||
321 | }, { | ||
322 | /* FireDTV S/CI and FloppyDTV S2 */ | ||
323 | .match_flags = MATCH_FLAGS, | ||
324 | .vendor_id = DIGITAL_EVERYWHERE_OUI, | ||
325 | .model_id = 0x000034, | ||
326 | .specifier_id = AVC_UNIT_SPEC_ID_ENTRY, | ||
327 | .version = AVC_SW_VERSION_ENTRY, | ||
328 | }, { | ||
329 | /* FireDTV T/CI */ | ||
330 | .match_flags = MATCH_FLAGS, | ||
331 | .vendor_id = DIGITAL_EVERYWHERE_OUI, | ||
332 | .model_id = 0x000035, | ||
333 | .specifier_id = AVC_UNIT_SPEC_ID_ENTRY, | ||
334 | .version = AVC_SW_VERSION_ENTRY, | ||
335 | }, { | ||
336 | /* FireDTV C/CI */ | ||
337 | .match_flags = MATCH_FLAGS, | ||
338 | .vendor_id = DIGITAL_EVERYWHERE_OUI, | ||
339 | .model_id = 0x000036, | ||
340 | .specifier_id = AVC_UNIT_SPEC_ID_ENTRY, | ||
341 | .version = AVC_SW_VERSION_ENTRY, | ||
342 | }, {} | ||
343 | }; | ||
344 | MODULE_DEVICE_TABLE(ieee1394, fdtv_id_table); | ||
345 | |||
346 | static int __init fdtv_init(void) | ||
347 | { | ||
348 | int ret; | ||
349 | |||
350 | ret = fdtv_fw_init(); | ||
351 | if (ret < 0) | ||
352 | return ret; | ||
353 | |||
354 | return ret; | ||
355 | } | ||
356 | |||
357 | static void __exit fdtv_exit(void) | ||
358 | { | ||
359 | fdtv_fw_exit(); | ||
360 | } | ||
361 | |||
362 | module_init(fdtv_init); | ||
363 | module_exit(fdtv_exit); | ||
364 | |||
365 | MODULE_AUTHOR("Andreas Monitzer <andy@monitzer.com>"); | ||
366 | MODULE_AUTHOR("Ben Backx <ben@bbackx.com>"); | ||
367 | MODULE_DESCRIPTION("FireDTV DVB Driver"); | ||
368 | MODULE_LICENSE("GPL"); | ||
369 | MODULE_SUPPORTED_DEVICE("FireDTV DVB"); | ||