Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3360177c authored by Stefan Richter's avatar Stefan Richter
Browse files

ieee1394: restore config ROM when resuming



After PM suspend + resume, the local configuration ROM was not restored.
This prevented remote nodes from recognizing the resuming machine.

Signed-off-by: default avatarStefan Richter <stefanr@s5r6.in-berlin.de>
parent 083922fe
Loading
Loading
Loading
Loading
+8 −5
Original line number Diff line number Diff line
@@ -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);
+2 −1
Original line number Diff line number Diff line
@@ -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
+1 −0
Original line number Diff line number Diff line
@@ -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);

+1 −3
Original line number Diff line number Diff line
@@ -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 */