X-Git-Url: http://pilppa.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=drivers%2Fieee1394%2Fdv1394.c;h=9d19aec5820a303145d8b286e2d1ce2e72b4a586;hb=ed569bfb8e5d0725db11018130e44eb567d829c1;hp=3bd78efd1852b0a417d172747cb4aa9018fedad6;hpb=861646f52217cf42a0e2e6558d85bd1172ca1611;p=linux-2.6-omap-h63xx.git diff --git a/drivers/ieee1394/dv1394.c b/drivers/ieee1394/dv1394.c index 3bd78efd185..9d19aec5820 100644 --- a/drivers/ieee1394/dv1394.c +++ b/drivers/ieee1394/dv1394.c @@ -94,7 +94,6 @@ #include #include #include -#include #include #include #include @@ -2147,7 +2146,7 @@ out: } static struct cdev dv1394_cdev; -static struct file_operations dv1394_fops= +static const struct file_operations dv1394_fops= { .owner = THIS_MODULE, .poll = dv1394_poll, @@ -2168,6 +2167,7 @@ static struct file_operations dv1394_fops= /* * Export information about protocols/devices supported by this driver. */ +#ifdef MODULE static struct ieee1394_device_id dv1394_id_table[] = { { .match_flags = IEEE1394_MATCH_SPECIFIER_ID | IEEE1394_MATCH_VERSION, @@ -2178,14 +2178,10 @@ static struct ieee1394_device_id dv1394_id_table[] = { }; MODULE_DEVICE_TABLE(ieee1394, dv1394_id_table); +#endif /* MODULE */ static struct hpsb_protocol_driver dv1394_driver = { - .name = "DV/1394 Driver", - .id_table = dv1394_id_table, - .driver = { - .name = "dv1394", - .bus = &ieee1394_bus_type, - }, + .name = "dv1394", }; @@ -2259,49 +2255,37 @@ static int dv1394_init(struct ti_ohci *ohci, enum pal_or_ntsc format, enum modes return 0; } -static void dv1394_un_init(struct video_card *video) -{ - /* obviously nobody has the driver open at this point */ - do_dv1394_shutdown(video, 1); - kfree(video); -} - - -static void dv1394_remove_host (struct hpsb_host *host) +static void dv1394_remove_host(struct hpsb_host *host) { - struct video_card *video; + struct video_card *video, *tmp_video; unsigned long flags; - int id = host->id; + int found_ohci_card = 0; - /* We only work with the OHCI-1394 driver */ - if (strcmp(host->driver->name, OHCI1394_DRIVER_NAME)) - return; - - /* find the corresponding video_cards */ do { - struct video_card *tmp_vid; - video = NULL; - spin_lock_irqsave(&dv1394_cards_lock, flags); - list_for_each_entry(tmp_vid, &dv1394_cards, list) { - if ((tmp_vid->id >> 2) == id) { - list_del(&tmp_vid->list); - video = tmp_vid; + list_for_each_entry(tmp_video, &dv1394_cards, list) { + if ((tmp_video->id >> 2) == host->id) { + list_del(&tmp_video->list); + video = tmp_video; + found_ohci_card = 1; break; } } spin_unlock_irqrestore(&dv1394_cards_lock, flags); - if (video) - dv1394_un_init(video); - } while (video != NULL); + if (video) { + do_dv1394_shutdown(video, 1); + kfree(video); + } + } while (video); - class_device_destroy(hpsb_protocol_class, - MKDEV(IEEE1394_MAJOR, IEEE1394_MINOR_BLOCK_DV1394 * 16 + (id<<2))); + if (found_ohci_card) + device_destroy(hpsb_protocol_class, MKDEV(IEEE1394_MAJOR, + IEEE1394_MINOR_BLOCK_DV1394 * 16 + (host->id << 2))); } -static void dv1394_add_host (struct hpsb_host *host) +static void dv1394_add_host(struct hpsb_host *host) { struct ti_ohci *ohci; int id = host->id; @@ -2312,9 +2296,9 @@ static void dv1394_add_host (struct hpsb_host *host) ohci = (struct ti_ohci *)host->hostdata; - class_device_create(hpsb_protocol_class, NULL, MKDEV( - IEEE1394_MAJOR, IEEE1394_MINOR_BLOCK_DV1394 * 16 + (id<<2)), - NULL, "dv1394-%d", id); + device_create(hpsb_protocol_class, NULL, MKDEV( + IEEE1394_MAJOR, IEEE1394_MINOR_BLOCK_DV1394 * 16 + (id<<2)), + "dv1394-%d", id); dv1394_init(ohci, DV1394_NTSC, MODE_RECEIVE); dv1394_init(ohci, DV1394_NTSC, MODE_TRANSMIT); @@ -2580,12 +2564,11 @@ static int __init dv1394_init_module(void) int ret; printk(KERN_WARNING - "WARNING: The dv1394 driver is unsupported and will be removed " - "from Linux soon. Use raw1394 instead.\n"); + "NOTE: The dv1394 driver is unsupported and may be removed in a " + "future Linux release. Use raw1394 instead.\n"); cdev_init(&dv1394_cdev, &dv1394_fops); dv1394_cdev.owner = THIS_MODULE; - kobject_set_name(&dv1394_cdev.kobj, "dv1394"); ret = cdev_add(&dv1394_cdev, IEEE1394_DV1394_DEV, 16); if (ret) { printk(KERN_ERR "dv1394: unable to register character device\n");