[PATCH] sata_sil: add suspend/sleep support
Add suspend/sleep support. Signed-off-by: Tejun Heo <htejun@gmail.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
This commit is contained in:
parent
3d8ec91352
commit
afb5a7cb84
1 changed files with 17 additions and 0 deletions
|
@ -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 = {
|
||||||
.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 = {
|
||||||
.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)
|
||||||
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);
|
||||||
|
|
Loading…
Reference in a new issue