linux-scsi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Ondrej Zary <linux@rainbow-software.org>
To: linux-scsi@vger.kernel.org
Subject: [PATCH 44/52] atp870u: Simplify _probe()
Date: Sun, 26 Jul 2015 22:24:51 +0200	[thread overview]
Message-ID: <1437942299-26674-45-git-send-email-linux@rainbow-software.org> (raw)
In-Reply-To: <1437942299-26674-1-git-send-email-linux@rainbow-software.org>

Move shpnt common code to the top, remove base_io, use pci_resource_len.

Signed-off-by: Ondrej Zary <linux@rainbow-software.org>
---
 drivers/scsi/atp870u.c |   65 +++++++++++++++++++++---------------------------
 1 file changed, 28 insertions(+), 37 deletions(-)

diff --git a/drivers/scsi/atp870u.c b/drivers/scsi/atp870u.c
index f92eb00..8af51a9 100644
--- a/drivers/scsi/atp870u.c
+++ b/drivers/scsi/atp870u.c
@@ -1245,7 +1245,7 @@ static int atp870u_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 {
 	unsigned char k, m, c;
 	unsigned long flags;
-	unsigned int base_io, error,n;
+	unsigned int error,n;
 	unsigned char host_id;
 	struct Scsi_Host *shpnt = NULL;
 	struct atp_unit *atpdev;
@@ -1278,21 +1278,24 @@ static int atp870u_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 	atpdev->pdev = pdev;
 	pci_set_drvdata(pdev, atpdev);
 
-	base_io = pci_resource_start(pdev, 0);
-	base_io &= 0xfffffff8;
-	atpdev->baseport = base_io;
+	shpnt->io_port = pci_resource_start(pdev, 0);
+	shpnt->io_port &= 0xfffffff8;
+	shpnt->n_io_port = pci_resource_len(pdev, 0);
+	atpdev->baseport = shpnt->io_port;
+	shpnt->unique_id = shpnt->io_port;
+	shpnt->irq = pdev->irq;
 
 	if ((ent->device == ATP880_DEVID1)||(ent->device == ATP880_DEVID2)) {
 		pci_write_config_byte(pdev, PCI_LATENCY_TIMER, 0x80);//JCC082803
 
-		atpdev->ioport[0] = base_io + 0x40;
-		atpdev->pciport[0] = base_io + 0x28;
+		atpdev->ioport[0] = shpnt->io_port + 0x40;
+		atpdev->pciport[0] = shpnt->io_port + 0x28;
 
 		host_id = atp_readb_base(atpdev, 0x39);
 		host_id >>= 0x04;
 
 		printk(KERN_INFO "   ACARD AEC-67160 PCI Ultra3 LVD Host Adapter:"
-			"    IO:%x, IRQ:%d.\n", base_io, pdev->irq);
+			"    IO:%lx, IRQ:%d.\n", shpnt->io_port, shpnt->irq);
 		atpdev->dev_id = ent->device;
 		atpdev->host_id[0] = host_id;
 
@@ -1358,9 +1361,9 @@ flash_ok_880:
 			goto unregister;
 		}
 
-		err = request_irq(pdev->irq, atp870u_intr_handle, IRQF_SHARED, "atp880i", shpnt);
+		err = request_irq(shpnt->irq, atp870u_intr_handle, IRQF_SHARED, "atp880i", shpnt);
 		if (err) {
- 			printk(KERN_ERR "Unable to allocate IRQ%d for Acard controller.\n", pdev->irq);
+			printk(KERN_ERR "Unable to allocate IRQ%d for Acard controller.\n", shpnt->irq);
 			goto free_tables;
 		}
 
@@ -1381,20 +1384,16 @@ flash_ok_880:
 		atp_writeb_base(atpdev, 0x38, 0xb0);
 		shpnt->max_id = 16;
 		shpnt->this_id = host_id;
-		shpnt->unique_id = base_io;
-		shpnt->io_port = base_io;
-		shpnt->n_io_port = 0x60;	/* Number of bytes of I/O space used */
-		shpnt->irq = pdev->irq;			
 	} else if (ent->device == ATP885_DEVID) {	
-			printk(KERN_INFO "   ACARD AEC-67162 PCI Ultra3 LVD Host Adapter:  IO:%x, IRQ:%d.\n"
-			       , base_io, pdev->irq);
+			printk(KERN_INFO "   ACARD AEC-67162 PCI Ultra3 LVD Host Adapter:  IO:%lx, IRQ:%d.\n"
+			       , shpnt->io_port, shpnt->irq);
         	
 		atpdev->pdev = pdev;
 		atpdev->dev_id  = ent->device;
-		atpdev->ioport[0] = base_io + 0x80;
-		atpdev->ioport[1] = base_io + 0xc0;
-		atpdev->pciport[0] = base_io + 0x40;
-		atpdev->pciport[1] = base_io + 0x50;
+		atpdev->ioport[0] = shpnt->io_port + 0x80;
+		atpdev->ioport[1] = shpnt->io_port + 0xc0;
+		atpdev->pciport[0] = shpnt->io_port + 0x40;
+		atpdev->pciport[1] = shpnt->io_port + 0x50;
 				
 		if (atp870u_init_tables(shpnt) < 0) {
 			err = -ENOMEM;
@@ -1404,7 +1403,7 @@ flash_ok_880:
 #ifdef ED_DBGP		
 	printk("request_irq() shpnt %p hostdata %p\n", shpnt, atpdev);
 #endif	        
-		err = request_irq(pdev->irq, atp870u_intr_handle, IRQF_SHARED, "atp870u", shpnt);
+		err = request_irq(shpnt->irq, atp870u_intr_handle, IRQF_SHARED, "atp870u", shpnt);
 		if (err) {
 				printk(KERN_ERR "Unable to allocate IRQ for Acard controller.\n");
 			goto free_tables;
@@ -1516,11 +1515,6 @@ flash_ok_885:
 		shpnt->max_lun = (atpdev->global_map[0] & 0x07) + 1;
 		shpnt->max_channel = 1;
 		shpnt->this_id = atpdev->host_id[0];
-		shpnt->unique_id = base_io;
-		shpnt->io_port = base_io;
-		shpnt->n_io_port = 0xff;	/* Number of bytes of I/O space used */
-		shpnt->irq = pdev->irq;
-				
 	} else {
 		bool wide_chip =
 			(ent->device == PCI_DEVICE_ID_ARTOP_AEC7610 &&
@@ -1530,10 +1524,10 @@ flash_ok_885:
 		error = pci_read_config_byte(pdev, 0x49, &host_id);
 
 		printk(KERN_INFO "   ACARD AEC-671X PCI Ultra/W SCSI-2/3 Host Adapter: "
-			"IO:%x, IRQ:%d.\n", base_io, pdev->irq);
+			"IO:%lx, IRQ:%d.\n", shpnt->io_port, shpnt->irq);
 
-		atpdev->ioport[0] = base_io;
-		atpdev->pciport[0] = base_io + 0x20;
+		atpdev->ioport[0] = shpnt->io_port;
+		atpdev->pciport[0] = shpnt->io_port + 0x20;
 		atpdev->dev_id = ent->device;
 		host_id &= 0x07;
 		atpdev->host_id[0] = host_id;
@@ -1553,9 +1547,9 @@ flash_ok_885:
 			goto unregister;
 		}
 
-		err = request_irq(pdev->irq, atp870u_intr_handle, IRQF_SHARED, "atp870i", shpnt);
+		err = request_irq(shpnt->irq, atp870u_intr_handle, IRQF_SHARED, "atp870i", shpnt);
 		if (err) {
-			printk(KERN_ERR "Unable to allocate IRQ%d for Acard controller.\n", pdev->irq);
+			printk(KERN_ERR "Unable to allocate IRQ%d for Acard controller.\n", shpnt->irq);
 			goto free_tables;
 		}
 
@@ -1579,13 +1573,10 @@ flash_ok_885:
 		atp_writeb_base(atpdev, 0x3b, atp_readb_base(atpdev, 0x3b) | 0x20);
 		shpnt->max_id = wide_chip ? 16 : 8;
 		shpnt->this_id = host_id;
-		shpnt->unique_id = base_io;
-		shpnt->io_port = base_io;
-		shpnt->n_io_port = 0x40;	/* Number of bytes of I/O space used */
-		shpnt->irq = pdev->irq;		
+
 	} 
 		spin_unlock_irqrestore(shpnt->host_lock, flags);
-		if (!request_region(base_io, shpnt->n_io_port, "atp870u")) {
+		if (!request_region(shpnt->io_port, shpnt->n_io_port, "atp870u")) {
 			err = -EBUSY;
 			goto request_io_fail;
 		}
@@ -1600,10 +1591,10 @@ flash_ok_885:
 
 scsi_add_fail:
 	printk("atp870u_prob:scsi_add_fail\n");
-	release_region(base_io, shpnt->n_io_port);
+	release_region(shpnt->io_port, shpnt->n_io_port);
 request_io_fail:
 	printk("atp870u_prob:request_io_fail\n");
-	free_irq(pdev->irq, shpnt);
+	free_irq(shpnt->irq, shpnt);
 free_tables:
 	printk("atp870u_prob:free_table\n");
 	atp870u_free_tables(shpnt);
-- 
Ondrej Zary


  parent reply	other threads:[~2015-07-26 20:55 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-07-26 20:24 [PATCH 00/52] atp870u: Major rework Ondrej Zary
2015-07-26 20:24 ` [PATCH 01/52] atp870u: Remove workport Ondrej Zary
2015-07-26 20:24 ` [PATCH 02/52] atp870u: Remove tmport1 Ondrej Zary
2015-07-26 20:24 ` [PATCH 03/52] atp870u: Untangle tmport Ondrej Zary
2015-07-26 20:24 ` [PATCH 04/52] atp870u: Untangle tmport #2 Ondrej Zary
2015-07-26 20:24 ` [PATCH 05/52] atp870u: Untangle tmport #3 Ondrej Zary
2015-07-26 20:24 ` [PATCH 06/52] atp870u: Untangle tmport #4 Ondrej Zary
2015-07-26 20:24 ` [PATCH 07/52] atp870u: Untangle tmport #5 Ondrej Zary
2015-07-26 20:24 ` [PATCH 08/52] atp870u: Untangle tmport #6 Ondrej Zary
2015-07-26 20:24 ` [PATCH 09/52] atp870u: Untangle tmport #7 Ondrej Zary
2015-07-26 20:24 ` [PATCH 10/52] atp870u: Untangle tmport #8 Ondrej Zary
2015-07-26 20:24 ` [PATCH 11/52] atp870u: Untangle tmpcip Ondrej Zary
2015-07-26 20:24 ` [PATCH 12/52] atp870u: Untangle tmpcip #2 Ondrej Zary
2015-07-26 20:24 ` [PATCH 13/52] atp870u: Remove ugly gotos Ondrej Zary
2015-07-26 20:24 ` [PATCH 14/52] atp870u: Remove ugly gotos #2 Ondrej Zary
2015-07-26 20:24 ` [PATCH 15/52] atp870u: Remove ugly gotos #3 Ondrej Zary
2015-07-26 20:24 ` [PATCH 16/52] atp870u: Remove ugly gotos #4 Ondrej Zary
2015-07-26 20:24 ` [PATCH 17/52] atp870u: Remove ugly gotos #5 Ondrej Zary
2015-07-26 20:24 ` [PATCH 18/52] atp870u: Introduce HW access wrappers Ondrej Zary
2015-07-26 20:24 ` [PATCH 19/52] atp870u: Convert is870() to use wrappers Ondrej Zary
2015-07-26 20:24 ` [PATCH 20/52] atp870u: Convert is880() " Ondrej Zary
2015-07-26 20:24 ` [PATCH 21/52] atp870u: Convert is885() " Ondrej Zary
2015-07-26 20:24 ` [PATCH 22/52] atp870u: Unify code format in is870(), is880() and is885() Ondrej Zary
2015-07-26 20:24 ` [PATCH 23/52] atp870u: Add channel parameter to is870() and is880() Ondrej Zary
2015-07-26 20:24 ` [PATCH 24/52] atp870u: Move chip-specific lines out of is880() and is885() Ondrej Zary
2015-07-26 20:24 ` [PATCH 25/52] atp870u: Remove is880() Ondrej Zary
2015-07-26 20:24 ` [PATCH 26/52] atp870u: Add wide_chip parameter to is870() and is885() Ondrej Zary
2015-07-26 20:24 ` [PATCH 27/52] atp870u: Add remaining 870 support to is885() Ondrej Zary
2015-07-26 20:24 ` [PATCH 28/52] atp870u: Move 870-specific code out of is870() Ondrej Zary
2015-07-26 20:24 ` [PATCH 29/52] atp870u: Remove is870() Ondrej Zary
2015-07-26 20:24 ` [PATCH 30/52] atp870u: Rename is885() to atp_is() Ondrej Zary
2015-07-26 20:24 ` [PATCH 31/52] atp870u: Convert remaining in[bwl] and out[bwl] to wrappers Ondrej Zary
2015-07-26 20:24 ` [PATCH 32/52] atp870u: Replace port 0x80 delay by udelay Ondrej Zary
2015-07-26 20:24 ` [PATCH 33/52] atp870u: Fix incorrect writeb_io access to register 0x3a Ondrej Zary
2015-07-26 20:24 ` [PATCH 34/52] atp870u: Introduce atp_set_host_id Ondrej Zary
2015-07-26 20:24 ` [PATCH 35/52] atp870u: Reduce log spam on module load/unload Ondrej Zary
2015-07-26 20:24 ` [PATCH 36/52] atp870u: Remove empty tscam_885() Ondrej Zary
2015-07-26 20:24 ` [PATCH 37/52] atp870u: Use module_pci_driver Ondrej Zary
2015-07-26 20:24 ` [PATCH 38/52] atp870u: Use n_io_port in request_region and release_region Ondrej Zary
2015-07-26 20:24 ` [PATCH 39/52] atp870u: Remove useless and broken card counting Ondrej Zary
2015-07-26 20:24 ` [PATCH 40/52] atp870u: Remove unused irq from struct atp_unit Ondrej Zary
2015-07-26 20:24 ` [PATCH 41/52] atp870u: Improve _probe() Ondrej Zary
2015-07-26 20:24 ` [PATCH 42/52] atp870u: Improve unsupported chip detection Ondrej Zary
2015-07-26 20:24 ` [PATCH 43/52] atp870u: Remove chip_ver from struct atp_unit Ondrej Zary
2015-07-26 20:24 ` Ondrej Zary [this message]
2015-07-26 20:24 ` [PATCH 45/52] atp870u: Introduce is880(), is885() and remove dev_id Ondrej Zary
2015-07-26 20:24 ` [PATCH 46/52] atp870u: Use pci_request_regions Ondrej Zary
2015-07-26 20:24 ` [PATCH 47/52] atp870u: Request IRQ later, remove weird locking Ondrej Zary
2015-07-26 20:24 ` [PATCH 48/52] atp870u: Remove scam_on from struct atp_unit Ondrej Zary
2015-07-26 20:24 ` [PATCH 49/52] atp870u: Initialize tables earlier Ondrej Zary
2015-07-26 20:24 ` [PATCH 50/52] atp870u: Introduce atp880_init() Ondrej Zary
2015-07-26 20:24 ` [PATCH 51/52] atp870u: Introduce atp885_init() Ondrej Zary
2015-07-26 20:24 ` [PATCH 52/52] atp870u: Introduce atp870_init() Ondrej Zary
2015-07-27  8:56 ` [PATCH 00/52] atp870u: Major rework Hannes Reinecke
2015-10-04  7:57 ` Christoph Hellwig
  -- strict thread matches above, loose matches on Subject: below --
2015-11-17 18:23 [PATCH 00/52] [resend] " Ondrej Zary
2015-11-17 18:24 ` [PATCH 44/52] atp870u: Simplify _probe() Ondrej Zary

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1437942299-26674-45-git-send-email-linux@rainbow-software.org \
    --to=linux@rainbow-software.org \
    --cc=linux-scsi@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).