提交 374b1873 编写于 作者: J Jeff Garzik

[libata] update several drivers to use pci_iomap()/pci_iounmap()

上级 ea6ba10b
...@@ -995,8 +995,7 @@ static int ahci_init_one (struct pci_dev *pdev, const struct pci_device_id *ent) ...@@ -995,8 +995,7 @@ static int ahci_init_one (struct pci_dev *pdev, const struct pci_device_id *ent)
probe_ent->dev = pci_dev_to_dev(pdev); probe_ent->dev = pci_dev_to_dev(pdev);
INIT_LIST_HEAD(&probe_ent->node); INIT_LIST_HEAD(&probe_ent->node);
mmio_base = ioremap(pci_resource_start(pdev, AHCI_PCI_BAR), mmio_base = pci_iomap(pdev, AHCI_PCI_BAR, 0);
pci_resource_len(pdev, AHCI_PCI_BAR));
if (mmio_base == NULL) { if (mmio_base == NULL) {
rc = -ENOMEM; rc = -ENOMEM;
goto err_out_free_ent; goto err_out_free_ent;
...@@ -1040,7 +1039,7 @@ static int ahci_init_one (struct pci_dev *pdev, const struct pci_device_id *ent) ...@@ -1040,7 +1039,7 @@ static int ahci_init_one (struct pci_dev *pdev, const struct pci_device_id *ent)
err_out_hpriv: err_out_hpriv:
kfree(hpriv); kfree(hpriv);
err_out_iounmap: err_out_iounmap:
iounmap(mmio_base); pci_iounmap(pdev, mmio_base);
err_out_free_ent: err_out_free_ent:
kfree(probe_ent); kfree(probe_ent);
err_out_msi: err_out_msi:
...@@ -1081,7 +1080,7 @@ static void ahci_remove_one (struct pci_dev *pdev) ...@@ -1081,7 +1080,7 @@ static void ahci_remove_one (struct pci_dev *pdev)
} }
kfree(hpriv); kfree(hpriv);
iounmap(host_set->mmio_base); pci_iounmap(pdev, host_set->mmio_base);
kfree(host_set); kfree(host_set);
if (have_msi) if (have_msi)
......
...@@ -584,7 +584,6 @@ static void pci_enable_intx(struct pci_dev *pdev) ...@@ -584,7 +584,6 @@ static void pci_enable_intx(struct pci_dev *pdev)
static int piix_disable_ahci(struct pci_dev *pdev) static int piix_disable_ahci(struct pci_dev *pdev)
{ {
void __iomem *mmio; void __iomem *mmio;
unsigned long addr;
u32 tmp; u32 tmp;
int rc = 0; int rc = 0;
...@@ -592,11 +591,11 @@ static int piix_disable_ahci(struct pci_dev *pdev) ...@@ -592,11 +591,11 @@ static int piix_disable_ahci(struct pci_dev *pdev)
* works because this device is usually set up by BIOS. * works because this device is usually set up by BIOS.
*/ */
addr = pci_resource_start(pdev, AHCI_PCI_BAR); if (!pci_resource_start(pdev, AHCI_PCI_BAR) ||
if (!addr || !pci_resource_len(pdev, AHCI_PCI_BAR)) !pci_resource_len(pdev, AHCI_PCI_BAR))
return 0; return 0;
mmio = ioremap(addr, 64); mmio = pci_iomap(pdev, AHCI_PCI_BAR, 64);
if (!mmio) if (!mmio)
return -ENOMEM; return -ENOMEM;
...@@ -610,7 +609,7 @@ static int piix_disable_ahci(struct pci_dev *pdev) ...@@ -610,7 +609,7 @@ static int piix_disable_ahci(struct pci_dev *pdev)
rc = -EIO; rc = -EIO;
} }
iounmap(mmio); pci_iounmap(pdev, mmio);
return rc; return rc;
} }
......
...@@ -4200,6 +4200,15 @@ ata_probe_ent_alloc(struct device *dev, struct ata_port_info *port) ...@@ -4200,6 +4200,15 @@ ata_probe_ent_alloc(struct device *dev, struct ata_port_info *port)
#ifdef CONFIG_PCI
void ata_pci_host_stop (struct ata_host_set *host_set)
{
struct pci_dev *pdev = to_pci_dev(host_set->dev);
pci_iounmap(pdev, host_set->mmio_base);
}
/** /**
* ata_pci_init_native_mode - Initialize native-mode driver * ata_pci_init_native_mode - Initialize native-mode driver
* @pdev: pci device to be initialized * @pdev: pci device to be initialized
...@@ -4212,7 +4221,6 @@ ata_probe_ent_alloc(struct device *dev, struct ata_port_info *port) ...@@ -4212,7 +4221,6 @@ ata_probe_ent_alloc(struct device *dev, struct ata_port_info *port)
* ata_probe_ent structure should then be freed with kfree(). * ata_probe_ent structure should then be freed with kfree().
*/ */
#ifdef CONFIG_PCI
struct ata_probe_ent * struct ata_probe_ent *
ata_pci_init_native_mode(struct pci_dev *pdev, struct ata_port_info **port) ata_pci_init_native_mode(struct pci_dev *pdev, struct ata_port_info **port)
{ {
...@@ -4595,6 +4603,7 @@ EXPORT_SYMBOL_GPL(ata_scsi_simulate); ...@@ -4595,6 +4603,7 @@ EXPORT_SYMBOL_GPL(ata_scsi_simulate);
#ifdef CONFIG_PCI #ifdef CONFIG_PCI
EXPORT_SYMBOL_GPL(pci_test_config_bits); EXPORT_SYMBOL_GPL(pci_test_config_bits);
EXPORT_SYMBOL_GPL(ata_pci_host_stop);
EXPORT_SYMBOL_GPL(ata_pci_init_native_mode); EXPORT_SYMBOL_GPL(ata_pci_init_native_mode);
EXPORT_SYMBOL_GPL(ata_pci_init_one); EXPORT_SYMBOL_GPL(ata_pci_init_one);
EXPORT_SYMBOL_GPL(ata_pci_remove_one); EXPORT_SYMBOL_GPL(ata_pci_remove_one);
......
...@@ -351,6 +351,7 @@ static void nv_scr_write (struct ata_port *ap, unsigned int sc_reg, u32 val) ...@@ -351,6 +351,7 @@ static void nv_scr_write (struct ata_port *ap, unsigned int sc_reg, u32 val)
static void nv_host_stop (struct ata_host_set *host_set) static void nv_host_stop (struct ata_host_set *host_set)
{ {
struct nv_host *host = host_set->private_data; struct nv_host *host = host_set->private_data;
struct pci_dev *pdev = to_pci_dev(host_set->dev);
// Disable hotplug event interrupts. // Disable hotplug event interrupts.
if (host->host_desc->disable_hotplug) if (host->host_desc->disable_hotplug)
...@@ -358,7 +359,8 @@ static void nv_host_stop (struct ata_host_set *host_set) ...@@ -358,7 +359,8 @@ static void nv_host_stop (struct ata_host_set *host_set)
kfree(host); kfree(host);
ata_host_stop(host_set); if (host_set->mmio_base)
pci_iounmap(pdev, host_set->mmio_base);
} }
static int nv_init_one (struct pci_dev *pdev, const struct pci_device_id *ent) static int nv_init_one (struct pci_dev *pdev, const struct pci_device_id *ent)
...@@ -420,8 +422,7 @@ static int nv_init_one (struct pci_dev *pdev, const struct pci_device_id *ent) ...@@ -420,8 +422,7 @@ static int nv_init_one (struct pci_dev *pdev, const struct pci_device_id *ent)
if (host->host_flags & NV_HOST_FLAGS_SCR_MMIO) { if (host->host_flags & NV_HOST_FLAGS_SCR_MMIO) {
unsigned long base; unsigned long base;
probe_ent->mmio_base = ioremap(pci_resource_start(pdev, 5), probe_ent->mmio_base = pci_iomap(pdev, 5, 0);
pci_resource_len(pdev, 5));
if (probe_ent->mmio_base == NULL) { if (probe_ent->mmio_base == NULL) {
rc = -EIO; rc = -EIO;
goto err_out_free_host; goto err_out_free_host;
...@@ -457,7 +458,7 @@ static int nv_init_one (struct pci_dev *pdev, const struct pci_device_id *ent) ...@@ -457,7 +458,7 @@ static int nv_init_one (struct pci_dev *pdev, const struct pci_device_id *ent)
err_out_iounmap: err_out_iounmap:
if (host->host_flags & NV_HOST_FLAGS_SCR_MMIO) if (host->host_flags & NV_HOST_FLAGS_SCR_MMIO)
iounmap(probe_ent->mmio_base); pci_iounmap(pdev, probe_ent->mmio_base);
err_out_free_host: err_out_free_host:
kfree(host); kfree(host);
err_out_free_ent: err_out_free_ent:
......
...@@ -92,6 +92,7 @@ static void pdc_exec_command_mmio(struct ata_port *ap, struct ata_taskfile *tf); ...@@ -92,6 +92,7 @@ static void pdc_exec_command_mmio(struct ata_port *ap, struct ata_taskfile *tf);
static void pdc_irq_clear(struct ata_port *ap); static void pdc_irq_clear(struct ata_port *ap);
static int pdc_qc_issue_prot(struct ata_queued_cmd *qc); static int pdc_qc_issue_prot(struct ata_queued_cmd *qc);
static Scsi_Host_Template pdc_ata_sht = { static Scsi_Host_Template pdc_ata_sht = {
.module = THIS_MODULE, .module = THIS_MODULE,
.name = DRV_NAME, .name = DRV_NAME,
...@@ -132,7 +133,7 @@ static struct ata_port_operations pdc_sata_ops = { ...@@ -132,7 +133,7 @@ static struct ata_port_operations pdc_sata_ops = {
.scr_write = pdc_sata_scr_write, .scr_write = pdc_sata_scr_write,
.port_start = pdc_port_start, .port_start = pdc_port_start,
.port_stop = pdc_port_stop, .port_stop = pdc_port_stop,
.host_stop = ata_host_stop, .host_stop = ata_pci_host_stop,
}; };
static struct ata_port_operations pdc_pata_ops = { static struct ata_port_operations pdc_pata_ops = {
...@@ -153,7 +154,7 @@ static struct ata_port_operations pdc_pata_ops = { ...@@ -153,7 +154,7 @@ static struct ata_port_operations pdc_pata_ops = {
.port_start = pdc_port_start, .port_start = pdc_port_start,
.port_stop = pdc_port_stop, .port_stop = pdc_port_stop,
.host_stop = ata_host_stop, .host_stop = ata_pci_host_stop,
}; };
static struct ata_port_info pdc_port_info[] = { static struct ata_port_info pdc_port_info[] = {
...@@ -663,8 +664,7 @@ static int pdc_ata_init_one (struct pci_dev *pdev, const struct pci_device_id *e ...@@ -663,8 +664,7 @@ static int pdc_ata_init_one (struct pci_dev *pdev, const struct pci_device_id *e
probe_ent->dev = pci_dev_to_dev(pdev); probe_ent->dev = pci_dev_to_dev(pdev);
INIT_LIST_HEAD(&probe_ent->node); INIT_LIST_HEAD(&probe_ent->node);
mmio_base = ioremap(pci_resource_start(pdev, 3), mmio_base = pci_iomap(pdev, 3, 0);
pci_resource_len(pdev, 3));
if (mmio_base == NULL) { if (mmio_base == NULL) {
rc = -ENOMEM; rc = -ENOMEM;
goto err_out_free_ent; goto err_out_free_ent;
......
...@@ -538,11 +538,12 @@ static void qs_port_stop(struct ata_port *ap) ...@@ -538,11 +538,12 @@ static void qs_port_stop(struct ata_port *ap)
static void qs_host_stop(struct ata_host_set *host_set) static void qs_host_stop(struct ata_host_set *host_set)
{ {
void __iomem *mmio_base = host_set->mmio_base; void __iomem *mmio_base = host_set->mmio_base;
struct pci_dev *pdev = to_pci_dev(host_set->dev);
writeb(0, mmio_base + QS_HCT_CTRL); /* disable host interrupts */ writeb(0, mmio_base + QS_HCT_CTRL); /* disable host interrupts */
writeb(QS_CNFG3_GSRST, mmio_base + QS_HCF_CNFG3); /* global reset */ writeb(QS_CNFG3_GSRST, mmio_base + QS_HCF_CNFG3); /* global reset */
ata_host_stop(host_set); pci_iounmap(pdev, mmio_base);
} }
static void qs_host_init(unsigned int chip_id, struct ata_probe_ent *pe) static void qs_host_init(unsigned int chip_id, struct ata_probe_ent *pe)
...@@ -646,8 +647,7 @@ static int qs_ata_init_one(struct pci_dev *pdev, ...@@ -646,8 +647,7 @@ static int qs_ata_init_one(struct pci_dev *pdev,
goto err_out_regions; goto err_out_regions;
} }
mmio_base = ioremap(pci_resource_start(pdev, 4), mmio_base = pci_iomap(pdev, 4, 0);
pci_resource_len(pdev, 4));
if (mmio_base == NULL) { if (mmio_base == NULL) {
rc = -ENOMEM; rc = -ENOMEM;
goto err_out_regions; goto err_out_regions;
...@@ -697,7 +697,7 @@ static int qs_ata_init_one(struct pci_dev *pdev, ...@@ -697,7 +697,7 @@ static int qs_ata_init_one(struct pci_dev *pdev,
return 0; return 0;
err_out_iounmap: err_out_iounmap:
iounmap(mmio_base); pci_iounmap(pdev, mmio_base);
err_out_regions: err_out_regions:
pci_release_regions(pdev); pci_release_regions(pdev);
err_out: err_out:
......
...@@ -86,6 +86,7 @@ static u32 sil_scr_read (struct ata_port *ap, unsigned int sc_reg); ...@@ -86,6 +86,7 @@ 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);
static void sil_post_set_mode (struct ata_port *ap); static void sil_post_set_mode (struct ata_port *ap);
static struct pci_device_id sil_pci_tbl[] = { static struct pci_device_id sil_pci_tbl[] = {
{ 0x1095, 0x3112, PCI_ANY_ID, PCI_ANY_ID, 0, 0, sil_3112_m15w }, { 0x1095, 0x3112, PCI_ANY_ID, PCI_ANY_ID, 0, 0, sil_3112_m15w },
{ 0x1095, 0x0240, PCI_ANY_ID, PCI_ANY_ID, 0, 0, sil_3112_m15w }, { 0x1095, 0x0240, PCI_ANY_ID, PCI_ANY_ID, 0, 0, sil_3112_m15w },
...@@ -172,7 +173,7 @@ static struct ata_port_operations sil_ops = { ...@@ -172,7 +173,7 @@ static struct ata_port_operations sil_ops = {
.scr_write = sil_scr_write, .scr_write = sil_scr_write,
.port_start = ata_port_start, .port_start = ata_port_start,
.port_stop = ata_port_stop, .port_stop = ata_port_stop,
.host_stop = ata_host_stop, .host_stop = ata_pci_host_stop,
}; };
static struct ata_port_info sil_port_info[] = { static struct ata_port_info sil_port_info[] = {
...@@ -231,6 +232,7 @@ MODULE_LICENSE("GPL"); ...@@ -231,6 +232,7 @@ MODULE_LICENSE("GPL");
MODULE_DEVICE_TABLE(pci, sil_pci_tbl); MODULE_DEVICE_TABLE(pci, sil_pci_tbl);
MODULE_VERSION(DRV_VERSION); MODULE_VERSION(DRV_VERSION);
static unsigned char sil_get_device_cache_line(struct pci_dev *pdev) static unsigned char sil_get_device_cache_line(struct pci_dev *pdev)
{ {
u8 cache_line = 0; u8 cache_line = 0;
...@@ -426,8 +428,7 @@ static int sil_init_one (struct pci_dev *pdev, const struct pci_device_id *ent) ...@@ -426,8 +428,7 @@ static int sil_init_one (struct pci_dev *pdev, const struct pci_device_id *ent)
probe_ent->irq_flags = SA_SHIRQ; probe_ent->irq_flags = SA_SHIRQ;
probe_ent->host_flags = sil_port_info[ent->driver_data].host_flags; probe_ent->host_flags = sil_port_info[ent->driver_data].host_flags;
mmio_base = ioremap(pci_resource_start(pdev, 5), mmio_base = pci_iomap(pdev, 5, 0);
pci_resource_len(pdev, 5));
if (mmio_base == NULL) { if (mmio_base == NULL) {
rc = -ENOMEM; rc = -ENOMEM;
goto err_out_free_ent; goto err_out_free_ent;
......
...@@ -318,7 +318,7 @@ static struct ata_port_operations k2_sata_ops = { ...@@ -318,7 +318,7 @@ static struct ata_port_operations k2_sata_ops = {
.scr_write = k2_sata_scr_write, .scr_write = k2_sata_scr_write,
.port_start = ata_port_start, .port_start = ata_port_start,
.port_stop = ata_port_stop, .port_stop = ata_port_stop,
.host_stop = ata_host_stop, .host_stop = ata_pci_host_stop,
}; };
static void k2_sata_setup_port(struct ata_ioports *port, unsigned long base) static void k2_sata_setup_port(struct ata_ioports *port, unsigned long base)
...@@ -392,8 +392,7 @@ static int k2_sata_init_one (struct pci_dev *pdev, const struct pci_device_id *e ...@@ -392,8 +392,7 @@ static int k2_sata_init_one (struct pci_dev *pdev, const struct pci_device_id *e
probe_ent->dev = pci_dev_to_dev(pdev); probe_ent->dev = pci_dev_to_dev(pdev);
INIT_LIST_HEAD(&probe_ent->node); INIT_LIST_HEAD(&probe_ent->node);
mmio_base = ioremap(pci_resource_start(pdev, 5), mmio_base = pci_iomap(pdev, 5, 0);
pci_resource_len(pdev, 5));
if (mmio_base == NULL) { if (mmio_base == NULL) {
rc = -ENOMEM; rc = -ENOMEM;
goto err_out_free_ent; goto err_out_free_ent;
......
...@@ -245,13 +245,14 @@ static struct pci_driver pdc_sata_pci_driver = { ...@@ -245,13 +245,14 @@ static struct pci_driver pdc_sata_pci_driver = {
static void pdc20621_host_stop(struct ata_host_set *host_set) static void pdc20621_host_stop(struct ata_host_set *host_set)
{ {
struct pci_dev *pdev = to_pci_dev(host_set->dev);
struct pdc_host_priv *hpriv = host_set->private_data; struct pdc_host_priv *hpriv = host_set->private_data;
void *dimm_mmio = hpriv->dimm_mmio; void *dimm_mmio = hpriv->dimm_mmio;
iounmap(dimm_mmio); pci_iounmap(pdev, dimm_mmio);
kfree(hpriv); kfree(hpriv);
ata_host_stop(host_set); pci_iounmap(pdev, host_set->mmio_base);
} }
static int pdc_port_start(struct ata_port *ap) static int pdc_port_start(struct ata_port *ap)
...@@ -1418,8 +1419,7 @@ static int pdc_sata_init_one (struct pci_dev *pdev, const struct pci_device_id * ...@@ -1418,8 +1419,7 @@ static int pdc_sata_init_one (struct pci_dev *pdev, const struct pci_device_id *
probe_ent->dev = pci_dev_to_dev(pdev); probe_ent->dev = pci_dev_to_dev(pdev);
INIT_LIST_HEAD(&probe_ent->node); INIT_LIST_HEAD(&probe_ent->node);
mmio_base = ioremap(pci_resource_start(pdev, 3), mmio_base = pci_iomap(pdev, 3, 0);
pci_resource_len(pdev, 3));
if (mmio_base == NULL) { if (mmio_base == NULL) {
rc = -ENOMEM; rc = -ENOMEM;
goto err_out_free_ent; goto err_out_free_ent;
...@@ -1433,8 +1433,7 @@ static int pdc_sata_init_one (struct pci_dev *pdev, const struct pci_device_id * ...@@ -1433,8 +1433,7 @@ static int pdc_sata_init_one (struct pci_dev *pdev, const struct pci_device_id *
} }
memset(hpriv, 0, sizeof(*hpriv)); memset(hpriv, 0, sizeof(*hpriv));
dimm_mmio = ioremap(pci_resource_start(pdev, 4), dimm_mmio = pci_iomap(pdev, 4, 0);
pci_resource_len(pdev, 4));
if (!dimm_mmio) { if (!dimm_mmio) {
kfree(hpriv); kfree(hpriv);
rc = -ENOMEM; rc = -ENOMEM;
...@@ -1481,9 +1480,9 @@ static int pdc_sata_init_one (struct pci_dev *pdev, const struct pci_device_id * ...@@ -1481,9 +1480,9 @@ static int pdc_sata_init_one (struct pci_dev *pdev, const struct pci_device_id *
err_out_iounmap_dimm: /* only get to this label if 20621 */ err_out_iounmap_dimm: /* only get to this label if 20621 */
kfree(hpriv); kfree(hpriv);
iounmap(dimm_mmio); pci_iounmap(pdev, dimm_mmio);
err_out_iounmap: err_out_iounmap:
iounmap(mmio_base); pci_iounmap(pdev, mmio_base);
err_out_free_ent: err_out_free_ent:
kfree(probe_ent); kfree(probe_ent);
err_out_regions: err_out_regions:
......
...@@ -252,7 +252,7 @@ static struct ata_port_operations vsc_sata_ops = { ...@@ -252,7 +252,7 @@ static struct ata_port_operations vsc_sata_ops = {
.scr_write = vsc_sata_scr_write, .scr_write = vsc_sata_scr_write,
.port_start = ata_port_start, .port_start = ata_port_start,
.port_stop = ata_port_stop, .port_stop = ata_port_stop,
.host_stop = ata_host_stop, .host_stop = ata_pci_host_stop,
}; };
static void __devinit vsc_sata_setup_port(struct ata_ioports *port, unsigned long base) static void __devinit vsc_sata_setup_port(struct ata_ioports *port, unsigned long base)
...@@ -326,8 +326,7 @@ static int __devinit vsc_sata_init_one (struct pci_dev *pdev, const struct pci_d ...@@ -326,8 +326,7 @@ static int __devinit vsc_sata_init_one (struct pci_dev *pdev, const struct pci_d
probe_ent->dev = pci_dev_to_dev(pdev); probe_ent->dev = pci_dev_to_dev(pdev);
INIT_LIST_HEAD(&probe_ent->node); INIT_LIST_HEAD(&probe_ent->node);
mmio_base = ioremap(pci_resource_start(pdev, 0), mmio_base = pci_iomap(pdev, 0, 0);
pci_resource_len(pdev, 0));
if (mmio_base == NULL) { if (mmio_base == NULL) {
rc = -ENOMEM; rc = -ENOMEM;
goto err_out_free_ent; goto err_out_free_ent;
......
...@@ -450,6 +450,7 @@ struct pci_bits { ...@@ -450,6 +450,7 @@ struct pci_bits {
unsigned long val; unsigned long val;
}; };
extern void ata_pci_host_stop (struct ata_host_set *host_set);
extern struct ata_probe_ent * extern struct ata_probe_ent *
ata_pci_init_native_mode(struct pci_dev *pdev, struct ata_port_info **port); ata_pci_init_native_mode(struct pci_dev *pdev, struct ata_port_info **port);
extern int pci_test_config_bits(struct pci_dev *pdev, struct pci_bits *bits); extern int pci_test_config_bits(struct pci_dev *pdev, struct pci_bits *bits);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册