diff options
author | Ondrej Zary <linux@rainbow-software.org> | 2015-11-17 13:24:25 -0500 |
---|---|---|
committer | Martin K. Petersen <martin.petersen@oracle.com> | 2015-11-25 22:08:53 -0500 |
commit | f5f53a38c2f8671f9fc249c711411ba44d76a618 (patch) | |
tree | f9ad9d737dc860129587ae75ea8b247951ce8e03 | |
parent | 8177c507523e053011861cce08cb73a77d5896e3 (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.c | 22 |
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 | ||