Merge branch 'upstream' from master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev
This commit is contained in:
Коммит
87e807b6c4
|
@ -442,7 +442,6 @@ static void piix_sata_phy_reset(struct ata_port *ap)
|
|||
* piix_set_piomode - Initialize host controller PATA PIO timings
|
||||
* @ap: Port whose timings we are configuring
|
||||
* @adev: um
|
||||
* @pio: PIO mode, 0 - 4
|
||||
*
|
||||
* Set PIO mode for device, in host controller PCI config space.
|
||||
*
|
||||
|
|
|
@ -4131,6 +4131,53 @@ err_out:
|
|||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* ata_host_set_remove - PCI layer callback for device removal
|
||||
* @host_set: ATA host set that was removed
|
||||
*
|
||||
* Unregister all objects associated with this host set. Free those
|
||||
* objects.
|
||||
*
|
||||
* LOCKING:
|
||||
* Inherited from calling layer (may sleep).
|
||||
*/
|
||||
|
||||
|
||||
void ata_host_set_remove(struct ata_host_set *host_set)
|
||||
{
|
||||
struct ata_port *ap;
|
||||
unsigned int i;
|
||||
|
||||
for (i = 0; i < host_set->n_ports; i++) {
|
||||
ap = host_set->ports[i];
|
||||
scsi_remove_host(ap->host);
|
||||
}
|
||||
|
||||
free_irq(host_set->irq, host_set);
|
||||
|
||||
for (i = 0; i < host_set->n_ports; i++) {
|
||||
ap = host_set->ports[i];
|
||||
|
||||
ata_scsi_release(ap->host);
|
||||
|
||||
if ((ap->flags & ATA_FLAG_NO_LEGACY) == 0) {
|
||||
struct ata_ioports *ioaddr = &ap->ioaddr;
|
||||
|
||||
if (ioaddr->cmd_addr == 0x1f0)
|
||||
release_region(0x1f0, 8);
|
||||
else if (ioaddr->cmd_addr == 0x170)
|
||||
release_region(0x170, 8);
|
||||
}
|
||||
|
||||
scsi_host_put(ap->host);
|
||||
}
|
||||
|
||||
if (host_set->ops->host_stop)
|
||||
host_set->ops->host_stop(host_set);
|
||||
|
||||
kfree(host_set);
|
||||
}
|
||||
|
||||
/**
|
||||
* ata_scsi_release - SCSI layer callback hook for host unload
|
||||
* @host: libata host to be unloaded
|
||||
|
@ -4471,39 +4518,8 @@ void ata_pci_remove_one (struct pci_dev *pdev)
|
|||
{
|
||||
struct device *dev = pci_dev_to_dev(pdev);
|
||||
struct ata_host_set *host_set = dev_get_drvdata(dev);
|
||||
struct ata_port *ap;
|
||||
unsigned int i;
|
||||
|
||||
for (i = 0; i < host_set->n_ports; i++) {
|
||||
ap = host_set->ports[i];
|
||||
|
||||
scsi_remove_host(ap->host);
|
||||
}
|
||||
|
||||
free_irq(host_set->irq, host_set);
|
||||
|
||||
for (i = 0; i < host_set->n_ports; i++) {
|
||||
ap = host_set->ports[i];
|
||||
|
||||
ata_scsi_release(ap->host);
|
||||
|
||||
if ((ap->flags & ATA_FLAG_NO_LEGACY) == 0) {
|
||||
struct ata_ioports *ioaddr = &ap->ioaddr;
|
||||
|
||||
if (ioaddr->cmd_addr == 0x1f0)
|
||||
release_region(0x1f0, 8);
|
||||
else if (ioaddr->cmd_addr == 0x170)
|
||||
release_region(0x170, 8);
|
||||
}
|
||||
|
||||
scsi_host_put(ap->host);
|
||||
}
|
||||
|
||||
if (host_set->ops->host_stop)
|
||||
host_set->ops->host_stop(host_set);
|
||||
|
||||
kfree(host_set);
|
||||
|
||||
ata_host_set_remove(host_set);
|
||||
pci_release_regions(pdev);
|
||||
pci_disable_device(pdev);
|
||||
dev_set_drvdata(dev, NULL);
|
||||
|
@ -4573,6 +4589,7 @@ module_exit(ata_exit);
|
|||
EXPORT_SYMBOL_GPL(ata_std_bios_param);
|
||||
EXPORT_SYMBOL_GPL(ata_std_ports);
|
||||
EXPORT_SYMBOL_GPL(ata_device_add);
|
||||
EXPORT_SYMBOL_GPL(ata_host_set_remove);
|
||||
EXPORT_SYMBOL_GPL(ata_sg_init);
|
||||
EXPORT_SYMBOL_GPL(ata_sg_init_one);
|
||||
EXPORT_SYMBOL_GPL(ata_qc_complete);
|
||||
|
|
|
@ -158,6 +158,8 @@ static struct pci_device_id nv_pci_tbl[] = {
|
|||
PCI_ANY_ID, PCI_ANY_ID, 0, 0, MCP51 },
|
||||
{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP55_SATA,
|
||||
PCI_ANY_ID, PCI_ANY_ID, 0, 0, MCP55 },
|
||||
{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP55_SATA2,
|
||||
PCI_ANY_ID, PCI_ANY_ID, 0, 0, MCP55 },
|
||||
{ PCI_VENDOR_ID_NVIDIA, PCI_ANY_ID,
|
||||
PCI_ANY_ID, PCI_ANY_ID,
|
||||
PCI_CLASS_STORAGE_IDE<<8, 0xffff00, GENERIC },
|
||||
|
|
|
@ -393,6 +393,7 @@ extern int ata_pci_init_one (struct pci_dev *pdev, struct ata_port_info **port_i
|
|||
extern void ata_pci_remove_one (struct pci_dev *pdev);
|
||||
#endif /* CONFIG_PCI */
|
||||
extern int ata_device_add(struct ata_probe_ent *ent);
|
||||
extern void ata_host_set_remove(struct ata_host_set *host_set);
|
||||
extern int ata_scsi_detect(Scsi_Host_Template *sht);
|
||||
extern int ata_scsi_ioctl(struct scsi_device *dev, int cmd, void __user *arg);
|
||||
extern int ata_scsi_queuecmd(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *));
|
||||
|
|
|
@ -1268,7 +1268,8 @@
|
|||
#define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP51_SATA 0x0266
|
||||
#define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP51_SATA2 0x0267
|
||||
#define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP55_IDE 0x036E
|
||||
#define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP55_SATA 0x036F
|
||||
#define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP55_SATA 0x037E
|
||||
#define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP55_SATA2 0x037F
|
||||
#define PCI_DEVICE_ID_NVIDIA_NVENET_12 0x0268
|
||||
#define PCI_DEVICE_ID_NVIDIA_NVENET_13 0x0269
|
||||
#define PCI_DEVICE_ID_NVIDIA_MCP51_AUDIO 0x026B
|
||||
|
|
Загрузка…
Ссылка в новой задаче