Commit afb5a7cb authored by Tejun Heo's avatar Tejun Heo Committed by Jeff Garzik

[PATCH] sata_sil: add suspend/sleep support

Add suspend/sleep support.
Signed-off-by: default avatarTejun Heo <htejun@gmail.com>
Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
parent 3d8ec913
...@@ -109,6 +109,7 @@ enum { ...@@ -109,6 +109,7 @@ enum {
}; };
static int sil_init_one (struct pci_dev *pdev, const struct pci_device_id *ent); static int sil_init_one (struct pci_dev *pdev, const struct pci_device_id *ent);
static int sil_pci_device_resume(struct pci_dev *pdev);
static void sil_dev_config(struct ata_port *ap, struct ata_device *dev); static void sil_dev_config(struct ata_port *ap, struct ata_device *dev);
static u32 sil_scr_read (struct ata_port *ap, unsigned int sc_reg); static u32 sil_scr_read (struct ata_port *ap, unsigned int sc_reg);
static void sil_scr_write (struct ata_port *ap, unsigned int sc_reg, u32 val); static void sil_scr_write (struct ata_port *ap, unsigned int sc_reg, u32 val);
...@@ -160,6 +161,8 @@ static struct pci_driver sil_pci_driver = { ...@@ -160,6 +161,8 @@ static struct pci_driver sil_pci_driver = {
.id_table = sil_pci_tbl, .id_table = sil_pci_tbl,
.probe = sil_init_one, .probe = sil_init_one,
.remove = ata_pci_remove_one, .remove = ata_pci_remove_one,
.suspend = ata_pci_device_suspend,
.resume = sil_pci_device_resume,
}; };
static struct scsi_host_template sil_sht = { static struct scsi_host_template sil_sht = {
...@@ -178,6 +181,8 @@ static struct scsi_host_template sil_sht = { ...@@ -178,6 +181,8 @@ static struct scsi_host_template sil_sht = {
.slave_configure = ata_scsi_slave_config, .slave_configure = ata_scsi_slave_config,
.slave_destroy = ata_scsi_slave_destroy, .slave_destroy = ata_scsi_slave_destroy,
.bios_param = ata_std_bios_param, .bios_param = ata_std_bios_param,
.suspend = ata_scsi_device_suspend,
.resume = ata_scsi_device_resume,
}; };
static const struct ata_port_operations sil_ops = { static const struct ata_port_operations sil_ops = {
...@@ -695,6 +700,18 @@ static int sil_init_one (struct pci_dev *pdev, const struct pci_device_id *ent) ...@@ -695,6 +700,18 @@ static int sil_init_one (struct pci_dev *pdev, const struct pci_device_id *ent)
return rc; return rc;
} }
static int sil_pci_device_resume(struct pci_dev *pdev)
{
struct ata_host_set *host_set = dev_get_drvdata(&pdev->dev);
ata_pci_device_do_resume(pdev);
sil_init_controller(pdev, host_set->n_ports, host_set->ports[0]->flags,
host_set->mmio_base);
ata_host_set_resume(host_set);
return 0;
}
static int __init sil_init(void) static int __init sil_init(void)
{ {
return pci_module_init(&sil_pci_driver); return pci_module_init(&sil_pci_driver);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment