projects
/
powerpc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'upstream-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/linvil...
[powerpc.git]
/
drivers
/
ata
/
sata_uli.c
diff --git
a/drivers/ata/sata_uli.c
b/drivers/ata/sata_uli.c
index
a43aec6
..
d659ace
100644
(file)
--- a/
drivers/ata/sata_uli.c
+++ b/
drivers/ata/sata_uli.c
@@
-36,7
+36,7
@@
#include <linux/libata.h>
#define DRV_NAME "sata_uli"
#include <linux/libata.h>
#define DRV_NAME "sata_uli"
-#define DRV_VERSION "1.
0
"
+#define DRV_VERSION "1.
1
"
enum {
uli_5289 = 0,
enum {
uli_5289 = 0,
@@
-108,7
+108,7
@@
static const struct ata_port_operations uli_ops = {
.bmdma_status = ata_bmdma_status,
.qc_prep = ata_qc_prep,
.qc_issue = ata_qc_issue_prot,
.bmdma_status = ata_bmdma_status,
.qc_prep = ata_qc_prep,
.qc_issue = ata_qc_issue_prot,
- .data_xfer = ata_
pio_
data_xfer,
+ .data_xfer = ata_data_xfer,
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
@@
-117,13
+117,13
@@
static const struct ata_port_operations uli_ops = {
.irq_handler = ata_interrupt,
.irq_clear = ata_bmdma_irq_clear,
.irq_handler = ata_interrupt,
.irq_clear = ata_bmdma_irq_clear,
+ .irq_on = ata_irq_on,
+ .irq_ack = ata_irq_ack,
.scr_read = uli_scr_read,
.scr_write = uli_scr_write,
.port_start = ata_port_start,
.scr_read = uli_scr_read,
.scr_write = uli_scr_write,
.port_start = ata_port_start,
- .port_stop = ata_port_stop,
- .host_stop = ata_host_stop,
};
static struct ata_port_info uli_port_info = {
};
static struct ata_port_info uli_port_info = {
@@
-189,62
+189,60
@@
static int uli_init_one (struct pci_dev *pdev, const struct pci_device_id *ent)
struct ata_port_info *ppi[2];
int rc;
unsigned int board_idx = (unsigned int) ent->driver_data;
struct ata_port_info *ppi[2];
int rc;
unsigned int board_idx = (unsigned int) ent->driver_data;
- int pci_dev_busy = 0;
struct uli_priv *hpriv;
struct uli_priv *hpriv;
+ void __iomem * const *iomap;
if (!printed_version++)
dev_printk(KERN_INFO, &pdev->dev, "version " DRV_VERSION "\n");
if (!printed_version++)
dev_printk(KERN_INFO, &pdev->dev, "version " DRV_VERSION "\n");
- rc = pci_enable_device(pdev);
+ rc = pci
m
_enable_device(pdev);
if (rc)
return rc;
rc = pci_request_regions(pdev, DRV_NAME);
if (rc) {
if (rc)
return rc;
rc = pci_request_regions(pdev, DRV_NAME);
if (rc) {
- pci
_dev_busy = 1
;
-
goto err_out
;
+ pci
m_pin_device(pdev)
;
+
return rc
;
}
rc = pci_set_dma_mask(pdev, ATA_DMA_MASK);
if (rc)
}
rc = pci_set_dma_mask(pdev, ATA_DMA_MASK);
if (rc)
-
goto err_out_regions
;
+
return rc
;
rc = pci_set_consistent_dma_mask(pdev, ATA_DMA_MASK);
if (rc)
rc = pci_set_consistent_dma_mask(pdev, ATA_DMA_MASK);
if (rc)
-
goto err_out_regions
;
+
return rc
;
ppi[0] = ppi[1] = &uli_port_info;
probe_ent = ata_pci_init_native_mode(pdev, ppi, ATA_PORT_PRIMARY | ATA_PORT_SECONDARY);
ppi[0] = ppi[1] = &uli_port_info;
probe_ent = ata_pci_init_native_mode(pdev, ppi, ATA_PORT_PRIMARY | ATA_PORT_SECONDARY);
- if (!probe_ent) {
- rc = -ENOMEM;
- goto err_out_regions;
- }
+ if (!probe_ent)
+ return -ENOMEM;
- hpriv = kzalloc(sizeof(*hpriv), GFP_KERNEL);
- if (!hpriv) {
- rc = -ENOMEM;
- goto err_out_probe_ent;
- }
+ hpriv = devm_kzalloc(&pdev->dev, sizeof(*hpriv), GFP_KERNEL);
+ if (!hpriv)
+ return -ENOMEM;
probe_ent->private_data = hpriv;
probe_ent->private_data = hpriv;
+ iomap = pcim_iomap_table(pdev);
+
switch (board_idx) {
case uli_5287:
hpriv->scr_cfg_addr[0] = ULI5287_BASE;
hpriv->scr_cfg_addr[1] = ULI5287_BASE + ULI5287_OFFS;
probe_ent->n_ports = 4;
switch (board_idx) {
case uli_5287:
hpriv->scr_cfg_addr[0] = ULI5287_BASE;
hpriv->scr_cfg_addr[1] = ULI5287_BASE + ULI5287_OFFS;
probe_ent->n_ports = 4;
-
probe_ent->port[2].cmd_addr = pci_resource_start(pdev, 0)
+ 8;
+
probe_ent->port[2].cmd_addr = iomap[0]
+ 8;
probe_ent->port[2].altstatus_addr =
probe_ent->port[2].altstatus_addr =
- probe_ent->port[2].ctl_addr =
- (
pci_resource_start(pdev, 1)
| ATA_PCI_CTL_OFS) + 4;
- probe_ent->port[2].bmdma_addr =
pci_resource_start(pdev, 4)
+ 16;
+ probe_ent->port[2].ctl_addr =
(void __iomem *)
+ (
(unsigned long)iomap[1]
| ATA_PCI_CTL_OFS) + 4;
+ probe_ent->port[2].bmdma_addr =
iomap[4]
+ 16;
hpriv->scr_cfg_addr[2] = ULI5287_BASE + ULI5287_OFFS*4;
hpriv->scr_cfg_addr[2] = ULI5287_BASE + ULI5287_OFFS*4;
- probe_ent->port[3].cmd_addr =
pci_resource_start(pdev, 2)
+ 8;
+ probe_ent->port[3].cmd_addr =
iomap[2]
+ 8;
probe_ent->port[3].altstatus_addr =
probe_ent->port[3].altstatus_addr =
- probe_ent->port[3].ctl_addr =
- (
pci_resource_start(pdev, 3)
| ATA_PCI_CTL_OFS) + 4;
- probe_ent->port[3].bmdma_addr =
pci_resource_start(pdev, 4)
+ 24;
+ probe_ent->port[3].ctl_addr =
(void __iomem *)
+ (
(unsigned long)iomap[3]
| ATA_PCI_CTL_OFS) + 4;
+ probe_ent->port[3].bmdma_addr =
iomap[4]
+ 24;
hpriv->scr_cfg_addr[3] = ULI5287_BASE + ULI5287_OFFS*5;
ata_std_ports(&probe_ent->port[2]);
hpriv->scr_cfg_addr[3] = ULI5287_BASE + ULI5287_OFFS*5;
ata_std_ports(&probe_ent->port[2]);
@@
-269,21
+267,11
@@
static int uli_init_one (struct pci_dev *pdev, const struct pci_device_id *ent)
pci_set_master(pdev);
pci_intx(pdev, 1);
pci_set_master(pdev);
pci_intx(pdev, 1);
- /* FIXME: check ata_device_add return value */
- ata_device_add(probe_ent);
- kfree(probe_ent);
+ if (!ata_device_add(probe_ent))
+ return -ENODEV;
+ devm_kfree(&pdev->dev, probe_ent);
return 0;
return 0;
-
-err_out_probe_ent:
- kfree(probe_ent);
-err_out_regions:
- pci_release_regions(pdev);
-err_out:
- if (!pci_dev_busy)
- pci_disable_device(pdev);
- return rc;
-
}
static int __init uli_init(void)
}
static int __init uli_init(void)