diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-02-11 14:44:25 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-02-11 14:44:25 -0500 |
commit | 5f0b1437e0708772b6fecae5900c01c3b5f9b512 (patch) | |
tree | bcd923e305345178bc162ed8560d56a3af197224 /drivers/scsi/aic7xxx | |
parent | 574009c1a895aeeb85eaab29c235d75852b09eb8 (diff) | |
parent | 81b7bbd1932a04869d4c8635a75222dfc6089f96 (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.h | 3 | ||||
-rw-r--r-- | drivers/scsi/aic7xxx/aic79xx_core.c | 5 | ||||
-rw-r--r-- | drivers/scsi/aic7xxx/aic79xx_osm.c | 9 | ||||
-rw-r--r-- | drivers/scsi/aic7xxx/aic79xx_osm.h | 2 | ||||
-rw-r--r-- | drivers/scsi/aic7xxx/aic79xx_osm_pci.c | 19 | ||||
-rw-r--r-- | drivers/scsi/aic7xxx/aic79xx_pci.c | 2 |
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 **********************/ |
1338 | void ahd_qinfifo_requeue_tail(struct ahd_softc *ahd, | 1338 | void ahd_qinfifo_requeue_tail(struct ahd_softc *ahd, |
1339 | struct scb *scb); | 1339 | struct scb *scb); |
1340 | int 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 ********************************/ |
1345 | struct ahd_softc *ahd_alloc(void *platform_arg, char *name); | 1342 | struct 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); |
263 | static int ahd_verify_vpd_cksum(struct vpd_config *vpd); | 263 | static int ahd_verify_vpd_cksum(struct vpd_config *vpd); |
264 | static int ahd_wait_seeprom(struct ahd_softc *ahd); | 264 | static int ahd_wait_seeprom(struct ahd_softc *ahd); |
265 | static 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 **********************/ |
7259 | int | 7262 | static int |
7260 | ahd_match_scb(struct ahd_softc *ahd, struct scb *scb, int target, | 7263 | ahd_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 | ||
1129 | uint64_t | ||
1130 | ahd_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) | |||
496 | int ahd_linux_register_host(struct ahd_softc *, | 496 | int ahd_linux_register_host(struct ahd_softc *, |
497 | struct scsi_host_template *); | 497 | struct scsi_host_template *); |
498 | 498 | ||
499 | uint64_t ahd_linux_get_memsize(void); | ||
500 | |||
501 | /*************************** Pretty Printing **********************************/ | 499 | /*************************** Pretty Printing **********************************/ |
502 | struct info_str { | 500 | struct 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 | ||