Simply said, it comes down to this.
in ./drivers/ide/ide.c, around line 2530,
in function ide_register_driver, you get
driver->gen_driver.name = (char *) driver->name;
driver->gen_driver.bus = &ide_bus_type;
driver->gen_driver.remove = ide_drive_remove;
return driver_register(&driver->gen_driver);
}
, well, just above that function, define this function
ide_drive_shutdown
static void ide_drive_shutdown(struct device * dev)
{
generic_ide_suspend(dev, 5);
}
, and turn
ide_register_driver into this
driver->gen_driver.name = (char *) driver->name;
driver->gen_driver.bus = &ide_bus_type;
driver->gen_driver.remove = ide_drive_remove;
driver->gen_driver.shutdown = ide_drive_shutdown;
return driver_register(&driver->gen_driver);
}