aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/aic7xxx
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@woody.linux-foundation.org>2007-02-11 14:44:25 -0500
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-02-11 14:44:25 -0500
commit5f0b1437e0708772b6fecae5900c01c3b5f9b512 (patch)
treebcd923e305345178bc162ed8560d56a3af197224 /drivers/scsi/aic7xxx
parent574009c1a895aeeb85eaab29c235d75852b09eb8 (diff)
parent81b7bbd1932a04869d4c8635a75222dfc6089f96 (diff)
Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6
* master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6: (97 commits) [SCSI] zfcp: removed wrong comment [SCSI] zfcp: use of uninitialized variable [SCSI] zfcp: Invalid locking order [SCSI] aic79xx: use dma_get_required_mask() [SCSI] aic79xx: fix bracket mismatch in unused macro [SCSI] BusLogic: Replace 'boolean' by 'bool' [SCSI] advansys: clean up warnings [SCSI] 53c7xx: brackets fix in uncompiled code [SCSI] nsp_cs: remove old scsi code [SCSI] aic79xx: make ahd_match_scb() static [SCSI] DAC960: kmalloc->kzalloc/Casting cleanups [SCSI] scsi_kmap_atomic_sg(): check that local irqs are disabled [SCSI] Buslogic: local_irq_disable() is redundant after local_irq_save() [SCSI] aic94xx: update for v28 firmware [SCSI] scsi_error: Fix lost EH commands [SCSI] aic94xx: Add default bus reset handler [SCSI] aic94xx: Remove TMF result code munging [SCSI] libsas: Add an LU reset mechanism to the error handler [SCSI] libsas: Don't BUG when connecting two expanders via wide port [SCSI] st: fix Tape dies if wrong block size used, bug 7919 ...
Diffstat (limited to 'drivers/scsi/aic7xxx')
-rw-r--r--drivers/scsi/aic7xxx/aic79xx.h3
-rw-r--r--drivers/scsi/aic7xxx/aic79xx_core.c5
-rw-r--r--drivers/scsi/aic7xxx/aic79xx_osm.c9
-rw-r--r--drivers/scsi/aic7xxx/aic79xx_osm.h2
-rw-r--r--drivers/scsi/aic7xxx/aic79xx_osm_pci.c19
-rw-r--r--drivers/scsi/aic7xxx/aic79xx_pci.c2
6 files changed, 14 insertions, 26 deletions
diff --git a/drivers/scsi/aic7xxx/aic79xx.h b/drivers/scsi/aic7xxx/aic79xx.h
index 170a4344cbb2..27adbb294ac1 100644
--- a/drivers/scsi/aic7xxx/aic79xx.h
+++ b/drivers/scsi/aic7xxx/aic79xx.h
@@ -1337,9 +1337,6 @@ int ahd_pci_test_register_access(struct ahd_softc *);
1337/************************** SCB and SCB queue management **********************/ 1337/************************** SCB and SCB queue management **********************/
1338void ahd_qinfifo_requeue_tail(struct ahd_softc *ahd, 1338void ahd_qinfifo_requeue_tail(struct ahd_softc *ahd,
1339 struct scb *scb); 1339 struct scb *scb);
1340int ahd_match_scb(struct ahd_softc *ahd, struct scb *scb,
1341 int target, char channel, int lun,
1342 u_int tag, role_t role);
1343 1340
1344/****************************** Initialization ********************************/ 1341/****************************** Initialization ********************************/
1345struct ahd_softc *ahd_alloc(void *platform_arg, char *name); 1342struct ahd_softc *ahd_alloc(void *platform_arg, char *name);
diff --git a/drivers/scsi/aic7xxx/aic79xx_core.c b/drivers/scsi/aic7xxx/aic79xx_core.c
index 07a86a30f676..9ddc6e4a74b0 100644
--- a/drivers/scsi/aic7xxx/aic79xx_core.c
+++ b/drivers/scsi/aic7xxx/aic79xx_core.c
@@ -262,6 +262,9 @@ static void ahd_update_coalescing_values(struct ahd_softc *ahd,
262 u_int mincmds); 262 u_int mincmds);
263static int ahd_verify_vpd_cksum(struct vpd_config *vpd); 263static int ahd_verify_vpd_cksum(struct vpd_config *vpd);
264static int ahd_wait_seeprom(struct ahd_softc *ahd); 264static int ahd_wait_seeprom(struct ahd_softc *ahd);
265static int ahd_match_scb(struct ahd_softc *ahd, struct scb *scb,
266 int target, char channel, int lun,
267 u_int tag, role_t role);
265 268
266/******************************** Private Inlines *****************************/ 269/******************************** Private Inlines *****************************/
267 270
@@ -7256,7 +7259,7 @@ ahd_busy_tcl(struct ahd_softc *ahd, u_int tcl, u_int scbid)
7256} 7259}
7257 7260
7258/************************** SCB and SCB queue management **********************/ 7261/************************** SCB and SCB queue management **********************/
7259int 7262static int
7260ahd_match_scb(struct ahd_softc *ahd, struct scb *scb, int target, 7263ahd_match_scb(struct ahd_softc *ahd, struct scb *scb, int target,
7261 char channel, int lun, u_int tag, role_t role) 7264 char channel, int lun, u_int tag, role_t role)
7262{ 7265{
diff --git a/drivers/scsi/aic7xxx/aic79xx_osm.c b/drivers/scsi/aic7xxx/aic79xx_osm.c
index 9bfcca5ede08..c7fe478f4813 100644
--- a/drivers/scsi/aic7xxx/aic79xx_osm.c
+++ b/drivers/scsi/aic7xxx/aic79xx_osm.c
@@ -1126,15 +1126,6 @@ ahd_linux_register_host(struct ahd_softc *ahd, struct scsi_host_template *templa
1126 return 0; 1126 return 0;
1127} 1127}
1128 1128
1129uint64_t
1130ahd_linux_get_memsize(void)
1131{
1132 struct sysinfo si;
1133
1134 si_meminfo(&si);
1135 return ((uint64_t)si.totalram << PAGE_SHIFT);
1136}
1137
1138/* 1129/*
1139 * Place the SCSI bus into a known state by either resetting it, 1130 * Place the SCSI bus into a known state by either resetting it,
1140 * or forcing transfer negotiations on the next command to any 1131 * or forcing transfer negotiations on the next command to any
diff --git a/drivers/scsi/aic7xxx/aic79xx_osm.h b/drivers/scsi/aic7xxx/aic79xx_osm.h
index 3a67fc578d78..147c83c456a5 100644
--- a/drivers/scsi/aic7xxx/aic79xx_osm.h
+++ b/drivers/scsi/aic7xxx/aic79xx_osm.h
@@ -496,8 +496,6 @@ ahd_insb(struct ahd_softc * ahd, long port, uint8_t *array, int count)
496int ahd_linux_register_host(struct ahd_softc *, 496int ahd_linux_register_host(struct ahd_softc *,
497 struct scsi_host_template *); 497 struct scsi_host_template *);
498 498
499uint64_t ahd_linux_get_memsize(void);
500
501/*************************** Pretty Printing **********************************/ 499/*************************** Pretty Printing **********************************/
502struct info_str { 500struct info_str {
503 char *buffer; 501 char *buffer;
diff --git a/drivers/scsi/aic7xxx/aic79xx_osm_pci.c b/drivers/scsi/aic7xxx/aic79xx_osm_pci.c
index 1a3ab6aa856b..c62ce41f2793 100644
--- a/drivers/scsi/aic7xxx/aic79xx_osm_pci.c
+++ b/drivers/scsi/aic7xxx/aic79xx_osm_pci.c
@@ -132,6 +132,7 @@ ahd_linux_pci_dev_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
132 struct ahd_pci_identity *entry; 132 struct ahd_pci_identity *entry;
133 char *name; 133 char *name;
134 int error; 134 int error;
135 struct device *dev = &pdev->dev;
135 136
136 pci = pdev; 137 pci = pdev;
137 entry = ahd_find_pci_device(pci); 138 entry = ahd_find_pci_device(pci);
@@ -161,20 +162,18 @@ ahd_linux_pci_dev_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
161 pci_set_master(pdev); 162 pci_set_master(pdev);
162 163
163 if (sizeof(dma_addr_t) > 4) { 164 if (sizeof(dma_addr_t) > 4) {
164 uint64_t memsize; 165 const u64 required_mask = dma_get_required_mask(dev);
165 const uint64_t mask_39bit = 0x7FFFFFFFFFULL;
166 166
167 memsize = ahd_linux_get_memsize(); 167 if (required_mask > DMA_39BIT_MASK &&
168 168 dma_set_mask(dev, DMA_64BIT_MASK) == 0)
169 if (memsize >= 0x8000000000ULL
170 && pci_set_dma_mask(pdev, DMA_64BIT_MASK) == 0) {
171 ahd->flags |= AHD_64BIT_ADDRESSING; 169 ahd->flags |= AHD_64BIT_ADDRESSING;
172 } else if (memsize > 0x80000000 170 else if (required_mask > DMA_32BIT_MASK &&
173 && pci_set_dma_mask(pdev, mask_39bit) == 0) { 171 dma_set_mask(dev, DMA_39BIT_MASK) == 0)
174 ahd->flags |= AHD_39BIT_ADDRESSING; 172 ahd->flags |= AHD_39BIT_ADDRESSING;
175 } 173 else
174 dma_set_mask(dev, DMA_32BIT_MASK);
176 } else { 175 } else {
177 pci_set_dma_mask(pdev, DMA_32BIT_MASK); 176 dma_set_mask(dev, DMA_32BIT_MASK);
178 } 177 }
179 ahd->dev_softc = pci; 178 ahd->dev_softc = pci;
180 error = ahd_pci_config(ahd, entry); 179 error = ahd_pci_config(ahd, entry);
diff --git a/drivers/scsi/aic7xxx/aic79xx_pci.c b/drivers/scsi/aic7xxx/aic79xx_pci.c
index 2cf7bb3123f0..8d72bbae96ad 100644
--- a/drivers/scsi/aic7xxx/aic79xx_pci.c
+++ b/drivers/scsi/aic7xxx/aic79xx_pci.c
@@ -88,7 +88,7 @@ ahd_compose_id(u_int device, u_int vendor, u_int subdevice, u_int subvendor)
88 88
89#define SUBID_9005_LEGACYCONN_FUNC(id) ((id) & 0x20) 89#define SUBID_9005_LEGACYCONN_FUNC(id) ((id) & 0x20)
90 90
91#define SUBID_9005_SEEPTYPE(id) ((id) & 0x0C0) >> 6) 91#define SUBID_9005_SEEPTYPE(id) (((id) & 0x0C0) >> 6)
92#define SUBID_9005_SEEPTYPE_NONE 0x0 92#define SUBID_9005_SEEPTYPE_NONE 0x0
93#define SUBID_9005_SEEPTYPE_4K 0x1 93#define SUBID_9005_SEEPTYPE_4K 0x1
94 94