|
@@ -2255,47 +2255,37 @@ static int dv1394_init(struct ti_ohci *ohci, enum pal_or_ntsc format, enum modes
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static void dv1394_un_init(struct video_card *video)
|
|
|
|
|
|
+static void dv1394_remove_host(struct hpsb_host *host)
|
|
{
|
|
{
|
|
- /* 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)
|
|
|
|
-{
|
|
|
|
- struct video_card *video;
|
|
|
|
|
|
+ struct video_card *video, *tmp_video;
|
|
unsigned long flags;
|
|
unsigned long flags;
|
|
- int id = host->id, found_ohci_card = 0;
|
|
|
|
|
|
+ int found_ohci_card = 0;
|
|
|
|
|
|
- /* find the corresponding video_cards */
|
|
|
|
do {
|
|
do {
|
|
- struct video_card *tmp_vid;
|
|
|
|
-
|
|
|
|
video = NULL;
|
|
video = NULL;
|
|
-
|
|
|
|
spin_lock_irqsave(&dv1394_cards_lock, flags);
|
|
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;
|
|
found_ohci_card = 1;
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
spin_unlock_irqrestore(&dv1394_cards_lock, flags);
|
|
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);
|
|
|
|
|
|
if (found_ohci_card)
|
|
if (found_ohci_card)
|
|
class_device_destroy(hpsb_protocol_class, MKDEV(IEEE1394_MAJOR,
|
|
class_device_destroy(hpsb_protocol_class, MKDEV(IEEE1394_MAJOR,
|
|
IEEE1394_MINOR_BLOCK_DV1394 * 16 + (host->id << 2)));
|
|
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;
|
|
struct ti_ohci *ohci;
|
|
int id = host->id;
|
|
int id = host->id;
|