From 3f73b5c596a139b8ff5160442f05350454f402c4 Mon Sep 17 00:00:00 2001 From: Stefan Richter Date: Sun, 7 Jan 2007 21:49:27 +0100 Subject: [PATCH] --- yaml --- r: 47314 b: refs/heads/master c: 3360177c62e86f476c4f1a057e13163383652f7b h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/ieee1394/hosts.c | 13 ++++++++----- trunk/drivers/ieee1394/hosts.h | 3 ++- trunk/drivers/ieee1394/ieee1394_core.c | 1 + trunk/drivers/ieee1394/ohci1394.c | 4 +--- 5 files changed, 13 insertions(+), 10 deletions(-) diff --git a/[refs] b/[refs] index 120c4714930e..3d9632e4cc29 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 083922fe1c277603a03f0ca700fe5a76f11178c7 +refs/heads/master: 3360177c62e86f476c4f1a057e13163383652f7b diff --git a/trunk/drivers/ieee1394/hosts.c b/trunk/drivers/ieee1394/hosts.c index ee82a5320bf7..32a130921938 100644 --- a/trunk/drivers/ieee1394/hosts.c +++ b/trunk/drivers/ieee1394/hosts.c @@ -190,14 +190,19 @@ int hpsb_add_host(struct hpsb_host *host) { if (hpsb_default_host_entry(host)) return -ENOMEM; - hpsb_add_extra_config_roms(host); - highlevel_add_host(host); - return 0; } +void hpsb_resume_host(struct hpsb_host *host) +{ + if (host->driver->set_hw_config_rom) + host->driver->set_hw_config_rom(host, + host->csr.rom->bus_info_data); + host->driver->devctl(host, RESET_BUS, SHORT_RESET); +} + void hpsb_remove_host(struct hpsb_host *host) { host->is_shutdown = 1; @@ -206,9 +211,7 @@ void hpsb_remove_host(struct hpsb_host *host) flush_scheduled_work(); host->driver = &dummy_driver; - highlevel_remove_host(host); - hpsb_remove_extra_config_roms(host); class_device_unregister(&host->class_dev); diff --git a/trunk/drivers/ieee1394/hosts.h b/trunk/drivers/ieee1394/hosts.h index d553e38c9543..3922f0e88526 100644 --- a/trunk/drivers/ieee1394/hosts.h +++ b/trunk/drivers/ieee1394/hosts.h @@ -200,7 +200,8 @@ struct hpsb_host_driver { struct hpsb_host *hpsb_alloc_host(struct hpsb_host_driver *drv, size_t extra, struct device *dev); int hpsb_add_host(struct hpsb_host *host); -void hpsb_remove_host(struct hpsb_host *h); +void hpsb_resume_host(struct hpsb_host *host); +void hpsb_remove_host(struct hpsb_host *host); /* Updates the configuration rom image of a host. rom_version must be the * current version, otherwise it will fail with return value -1. If this diff --git a/trunk/drivers/ieee1394/ieee1394_core.c b/trunk/drivers/ieee1394/ieee1394_core.c index 35fbe4755a2b..1521e57e124b 100644 --- a/trunk/drivers/ieee1394/ieee1394_core.c +++ b/trunk/drivers/ieee1394/ieee1394_core.c @@ -1178,6 +1178,7 @@ module_exit(ieee1394_cleanup); /** hosts.c **/ EXPORT_SYMBOL(hpsb_alloc_host); EXPORT_SYMBOL(hpsb_add_host); +EXPORT_SYMBOL(hpsb_resume_host); EXPORT_SYMBOL(hpsb_remove_host); EXPORT_SYMBOL(hpsb_update_config_rom_image); diff --git a/trunk/drivers/ieee1394/ohci1394.c b/trunk/drivers/ieee1394/ohci1394.c index b7e816683fb0..5729e412cc4a 100644 --- a/trunk/drivers/ieee1394/ohci1394.c +++ b/trunk/drivers/ieee1394/ohci1394.c @@ -3536,9 +3536,6 @@ static int ohci1394_pci_suspend(struct pci_dev *pdev, pm_message_t state) int err; struct ti_ohci *ohci = pci_get_drvdata(pdev); - printk(KERN_INFO "%s does not fully support suspend and resume yet\n", - OHCI1394_DRIVER_NAME); - if (!ohci) { printk(KERN_ERR "%s: tried to suspend nonexisting host\n", OHCI1394_DRIVER_NAME); @@ -3625,6 +3622,7 @@ static int ohci1394_pci_resume(struct pci_dev *pdev) mdelay(50); ohci_initialize(ohci); + hpsb_resume_host(ohci->host); return 0; } #endif /* CONFIG_PM */