summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOndrej Zary <linux@rainbow-software.org>2015-11-17 13:24:25 -0500
committerMartin K. Petersen <martin.petersen@oracle.com>2015-11-25 22:08:53 -0500
commitf5f53a38c2f8671f9fc249c711411ba44d76a618 (patch)
treef9ad9d737dc860129587ae75ea8b247951ce8e03
parent8177c507523e053011861cce08cb73a77d5896e3 (diff)
atp870u: Initialize tables earlier
Call _init_tables before chip-specific initialization. This avoids code duplication and fixes a bug(?) in 880 init where the values read from flash into atpdev->sp are then overwritten by calling init_tables. Signed-off-by: Ondrej Zary <linux@rainbow-software.org> Reviewed-by: Hannes Reinicke <hare@suse.de> Acked-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
-rw-r--r--drivers/scsi/atp870u.c22
1 files changed, 6 insertions, 16 deletions
diff --git a/drivers/scsi/atp870u.c b/drivers/scsi/atp870u.c
index dd0b520f7dd4..3c66539e5781 100644
--- a/drivers/scsi/atp870u.c
+++ b/drivers/scsi/atp870u.c
@@ -1298,6 +1298,12 @@ static int atp870u_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
1298 shpnt->unique_id = shpnt->io_port; 1298 shpnt->unique_id = shpnt->io_port;
1299 shpnt->irq = pdev->irq; 1299 shpnt->irq = pdev->irq;
1300 1300
1301 err = atp870u_init_tables(shpnt);
1302 if (err) {
1303 dev_err(&pdev->dev, "Unable to allocate tables for Acard controller\n");
1304 goto unregister;
1305 }
1306
1301 if (is880(atpdev)) { 1307 if (is880(atpdev)) {
1302 pci_write_config_byte(pdev, PCI_LATENCY_TIMER, 0x80);//JCC082803 1308 pci_write_config_byte(pdev, PCI_LATENCY_TIMER, 0x80);//JCC082803
1303 1309
@@ -1366,11 +1372,6 @@ flash_ok_880:
1366 atpdev->async[0] = ~(atpdev->async[0]); 1372 atpdev->async[0] = ~(atpdev->async[0]);
1367 atp_writeb_base(atpdev, 0x35, atpdev->global_map[0]); 1373 atp_writeb_base(atpdev, 0x35, atpdev->global_map[0]);
1368 1374
1369 if (atp870u_init_tables(shpnt) < 0) {
1370 printk(KERN_ERR "Unable to allocate tables for Acard controller\n");
1371 err = -ENOMEM;
1372 goto unregister;
1373 }
1374 1375
1375 k = atp_readb_base(atpdev, 0x38) & 0x80; 1376 k = atp_readb_base(atpdev, 0x38) & 0x80;
1376 atp_writeb_base(atpdev, 0x38, k); 1377 atp_writeb_base(atpdev, 0x38, k);
@@ -1398,11 +1399,6 @@ flash_ok_880:
1398 atpdev->pciport[0] = shpnt->io_port + 0x40; 1399 atpdev->pciport[0] = shpnt->io_port + 0x40;
1399 atpdev->pciport[1] = shpnt->io_port + 0x50; 1400 atpdev->pciport[1] = shpnt->io_port + 0x50;
1400 1401
1401 if (atp870u_init_tables(shpnt) < 0) {
1402 err = -ENOMEM;
1403 goto unregister;
1404 }
1405
1406 c = atp_readb_base(atpdev, 0x29); 1402 c = atp_readb_base(atpdev, 0x29);
1407 atp_writeb_base(atpdev, 0x29, c | 0x04); 1403 atp_writeb_base(atpdev, 0x29, c | 0x04);
1408 1404
@@ -1533,12 +1529,6 @@ flash_ok_885:
1533 atpdev->ultra_map[0] = 0xffff; 1529 atpdev->ultra_map[0] = 0xffff;
1534 } 1530 }
1535 1531
1536
1537 if (atp870u_init_tables(shpnt) < 0) {
1538 err = -ENOMEM;
1539 goto unregister;
1540 }
1541
1542 if (pdev->revision > 0x07) /* check if atp876 chip then enable terminator */ 1532 if (pdev->revision > 0x07) /* check if atp876 chip then enable terminator */
1543 atp_writeb_base(atpdev, 0x3e, 0x00); 1533 atp_writeb_base(atpdev, 0x3e, 0x00);
1544 1534