Loading drivers/scsi/sata_sil24.c +25 −0 Original line number Diff line number Diff line Loading @@ -92,6 +92,7 @@ enum { HOST_CTRL_STOP = (1 << 18), /* latched PCI STOP */ HOST_CTRL_DEVSEL = (1 << 19), /* latched PCI DEVSEL */ HOST_CTRL_REQ64 = (1 << 20), /* latched PCI REQ64 */ HOST_CTRL_GLOBAL_RST = (1 << 31), /* global reset */ /* * Port registers Loading Loading @@ -338,6 +339,7 @@ static int sil24_port_start(struct ata_port *ap); static void sil24_port_stop(struct ata_port *ap); static void sil24_host_stop(struct ata_host_set *host_set); static int sil24_init_one(struct pci_dev *pdev, const struct pci_device_id *ent); static int sil24_pci_device_resume(struct pci_dev *pdev); static const struct pci_device_id sil24_pci_tbl[] = { { 0x1095, 0x3124, PCI_ANY_ID, PCI_ANY_ID, 0, 0, BID_SIL3124 }, Loading @@ -353,6 +355,8 @@ static struct pci_driver sil24_pci_driver = { .id_table = sil24_pci_tbl, .probe = sil24_init_one, .remove = ata_pci_remove_one, /* safe? */ .suspend = ata_pci_device_suspend, .resume = sil24_pci_device_resume, }; static struct scsi_host_template sil24_sht = { Loading @@ -372,6 +376,8 @@ static struct scsi_host_template sil24_sht = { .slave_configure = ata_scsi_slave_config, .slave_destroy = ata_scsi_slave_destroy, .bios_param = ata_std_bios_param, .suspend = ata_scsi_device_suspend, .resume = ata_scsi_device_resume, }; static const struct ata_port_operations sil24_ops = { Loading Loading @@ -1179,6 +1185,25 @@ static int sil24_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) return rc; } static int sil24_pci_device_resume(struct pci_dev *pdev) { struct ata_host_set *host_set = dev_get_drvdata(&pdev->dev); struct sil24_host_priv *hpriv = host_set->private_data; ata_pci_device_do_resume(pdev); if (pdev->dev.power.power_state.event == PM_EVENT_SUSPEND) writel(HOST_CTRL_GLOBAL_RST, hpriv->host_base + HOST_CTRL); sil24_init_controller(pdev, host_set->n_ports, host_set->ports[0]->flags, hpriv->host_base, hpriv->port_base); ata_host_set_resume(host_set); return 0; } static int __init sil24_init(void) { return pci_module_init(&sil24_pci_driver); Loading Loading
drivers/scsi/sata_sil24.c +25 −0 Original line number Diff line number Diff line Loading @@ -92,6 +92,7 @@ enum { HOST_CTRL_STOP = (1 << 18), /* latched PCI STOP */ HOST_CTRL_DEVSEL = (1 << 19), /* latched PCI DEVSEL */ HOST_CTRL_REQ64 = (1 << 20), /* latched PCI REQ64 */ HOST_CTRL_GLOBAL_RST = (1 << 31), /* global reset */ /* * Port registers Loading Loading @@ -338,6 +339,7 @@ static int sil24_port_start(struct ata_port *ap); static void sil24_port_stop(struct ata_port *ap); static void sil24_host_stop(struct ata_host_set *host_set); static int sil24_init_one(struct pci_dev *pdev, const struct pci_device_id *ent); static int sil24_pci_device_resume(struct pci_dev *pdev); static const struct pci_device_id sil24_pci_tbl[] = { { 0x1095, 0x3124, PCI_ANY_ID, PCI_ANY_ID, 0, 0, BID_SIL3124 }, Loading @@ -353,6 +355,8 @@ static struct pci_driver sil24_pci_driver = { .id_table = sil24_pci_tbl, .probe = sil24_init_one, .remove = ata_pci_remove_one, /* safe? */ .suspend = ata_pci_device_suspend, .resume = sil24_pci_device_resume, }; static struct scsi_host_template sil24_sht = { Loading @@ -372,6 +376,8 @@ static struct scsi_host_template sil24_sht = { .slave_configure = ata_scsi_slave_config, .slave_destroy = ata_scsi_slave_destroy, .bios_param = ata_std_bios_param, .suspend = ata_scsi_device_suspend, .resume = ata_scsi_device_resume, }; static const struct ata_port_operations sil24_ops = { Loading Loading @@ -1179,6 +1185,25 @@ static int sil24_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) return rc; } static int sil24_pci_device_resume(struct pci_dev *pdev) { struct ata_host_set *host_set = dev_get_drvdata(&pdev->dev); struct sil24_host_priv *hpriv = host_set->private_data; ata_pci_device_do_resume(pdev); if (pdev->dev.power.power_state.event == PM_EVENT_SUSPEND) writel(HOST_CTRL_GLOBAL_RST, hpriv->host_base + HOST_CTRL); sil24_init_controller(pdev, host_set->n_ports, host_set->ports[0]->flags, hpriv->host_base, hpriv->port_base); ata_host_set_resume(host_set); return 0; } static int __init sil24_init(void) { return pci_module_init(&sil24_pci_driver); Loading