aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/aha1542.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@g5.osdl.org>2006-06-21 14:18:25 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2006-06-21 14:18:25 -0400
commit28e4b224955cbe30275b2a7842e729023a4f4b03 (patch)
treeab4d28fecc06070fc2a2742f4b4550b29de44912 /drivers/scsi/aha1542.c
parent22ae813b85df7c0b0fc7c8d6f336d6a9f566ff97 (diff)
parent67d59dfdeb21df2c16dcd478b66177e91178ecd0 (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: (85 commits) [SCSI] 53c700: remove reliance on deprecated cmnd fields [SCSI] hptiop: don't use cmnd->bufflen [SCSI] hptiop: HighPoint RocketRAID 3xxx controller driver [SCSI] aacraid: small misc. cleanups [SCSI] aacraid: Update supported product information [SCSI] aacraid: Fix return code interpretation [SCSI] scsi_transport_sas: fix panic in sas_free_rphy [SCSI] remove RQ_SCSI_* flags [SCSI] remove scsi_request infrastructure [SCSI] mptfusion: change driver revision to 3.03.10 [SCSI] mptfc: abort of board reset leaves port dead requiring reboot [SCSI] mptfc: fix fibre channel infinite request/response loop [SCSI] mptfc: set fibre channel fw target missing timers to one second [SCSI] mptfusion: move fc event/reset handling to mptfc [SCSI] spi transport: don't allow dt to be set on SE or HVD buses [SCSI] aic7xxx: expose the bus setting to sysfs [SCSI] scsi: remove Documentation/scsi/cpqfc.txt [SCSI] drivers/scsi: Use ARRAY_SIZE macro [SCSI] Remove last page_address from dc395x.c [SCSI] hptiop: HighPoint RocketRAID 3xxx controller driver ... Fixed up conflicts in drivers/message/fusion/mptbase.c manually (due to the sparc interrupt cleanups)
Diffstat (limited to 'drivers/scsi/aha1542.c')
-rw-r--r--drivers/scsi/aha1542.c31
1 files changed, 14 insertions, 17 deletions
diff --git a/drivers/scsi/aha1542.c b/drivers/scsi/aha1542.c
index 51bad7a1e773..86c6bd234591 100644
--- a/drivers/scsi/aha1542.c
+++ b/drivers/scsi/aha1542.c
@@ -1011,7 +1011,7 @@ static int __init do_setup(char *str)
1011 1011
1012 int count=setup_idx; 1012 int count=setup_idx;
1013 1013
1014 get_options(str, sizeof(ints)/sizeof(int), ints); 1014 get_options(str, ARRAY_SIZE(ints), ints);
1015 aha1542_setup(str,ints); 1015 aha1542_setup(str,ints);
1016 1016
1017 return count<setup_idx; 1017 return count<setup_idx;
@@ -1072,8 +1072,7 @@ static int __init aha1542_detect(struct scsi_host_template * tpnt)
1072 int slot = 0; 1072 int slot = 0;
1073 int pos = 0; 1073 int pos = 0;
1074 1074
1075 for (indx = 0; (slot != MCA_NOTFOUND) && 1075 for (indx = 0; (slot != MCA_NOTFOUND) && (indx < ARRAY_SIZE(bases)); indx++) {
1076 (indx < sizeof(bases)/sizeof(bases[0])); indx++) {
1077 1076
1078 if (bases[indx]) 1077 if (bases[indx])
1079 continue; 1078 continue;
@@ -1083,10 +1082,9 @@ static int __init aha1542_detect(struct scsi_host_template * tpnt)
1083 if (slot == MCA_NOTFOUND) 1082 if (slot == MCA_NOTFOUND)
1084 break; 1083 break;
1085 1084
1086
1087 /* Found one */ 1085 /* Found one */
1088 pos = mca_read_stored_pos(slot, 3); 1086 pos = mca_read_stored_pos(slot, 3);
1089 1087
1090 /* Decode address */ 1088 /* Decode address */
1091 if (pos & 0x80) { 1089 if (pos & 0x80) {
1092 if (pos & 0x02) { 1090 if (pos & 0x02) {
@@ -1118,23 +1116,22 @@ static int __init aha1542_detect(struct scsi_host_template * tpnt)
1118 mca_set_adapter_name(slot, "Adapter AHA-1640"); 1116 mca_set_adapter_name(slot, "Adapter AHA-1640");
1119 mca_set_adapter_procfn(slot, NULL, NULL); 1117 mca_set_adapter_procfn(slot, NULL, NULL);
1120 mca_mark_as_used(slot); 1118 mca_mark_as_used(slot);
1121 1119
1122 /* Go on */ 1120 /* Go on */
1123 slot++; 1121 slot++;
1124 } 1122 }
1125 1123
1126 } 1124 }
1127#endif 1125#endif
1128 1126
1129 /* 1127 /*
1130 * Hunt for ISA Plug'n'Pray Adaptecs (AHA1535) 1128 * Hunt for ISA Plug'n'Pray Adaptecs (AHA1535)
1131 */ 1129 */
1132 1130
1133 if(isapnp) 1131 if(isapnp)
1134 { 1132 {
1135 struct pnp_dev *pdev = NULL; 1133 struct pnp_dev *pdev = NULL;
1136 for(indx = 0; indx <sizeof(bases)/sizeof(bases[0]);indx++) 1134 for(indx = 0; indx < ARRAY_SIZE(bases); indx++) {
1137 {
1138 if(bases[indx]) 1135 if(bases[indx])
1139 continue; 1136 continue;
1140 pdev = pnp_find_dev(NULL, ISAPNP_VENDOR('A', 'D', 'P'), 1137 pdev = pnp_find_dev(NULL, ISAPNP_VENDOR('A', 'D', 'P'),
@@ -1144,29 +1141,29 @@ static int __init aha1542_detect(struct scsi_host_template * tpnt)
1144 /* 1141 /*
1145 * Activate the PnP card 1142 * Activate the PnP card
1146 */ 1143 */
1147 1144
1148 if(pnp_device_attach(pdev)<0) 1145 if(pnp_device_attach(pdev)<0)
1149 continue; 1146 continue;
1150 1147
1151 if(pnp_activate_dev(pdev)<0) { 1148 if(pnp_activate_dev(pdev)<0) {
1152 pnp_device_detach(pdev); 1149 pnp_device_detach(pdev);
1153 continue; 1150 continue;
1154 } 1151 }
1155 1152
1156 if(!pnp_port_valid(pdev, 0)) { 1153 if(!pnp_port_valid(pdev, 0)) {
1157 pnp_device_detach(pdev); 1154 pnp_device_detach(pdev);
1158 continue; 1155 continue;
1159 } 1156 }
1160 1157
1161 bases[indx] = pnp_port_start(pdev, 0); 1158 bases[indx] = pnp_port_start(pdev, 0);
1162 1159
1163 /* The card can be queried for its DMA, we have 1160 /* The card can be queried for its DMA, we have
1164 the DMA set up that is enough */ 1161 the DMA set up that is enough */
1165 1162
1166 printk(KERN_INFO "ISAPnP found an AHA1535 at I/O 0x%03X\n", bases[indx]); 1163 printk(KERN_INFO "ISAPnP found an AHA1535 at I/O 0x%03X\n", bases[indx]);
1167 } 1164 }
1168 } 1165 }
1169 for (indx = 0; indx < sizeof(bases) / sizeof(bases[0]); indx++) 1166 for (indx = 0; indx < ARRAY_SIZE(bases); indx++)
1170 if (bases[indx] != 0 && request_region(bases[indx], 4, "aha1542")) { 1167 if (bases[indx] != 0 && request_region(bases[indx], 4, "aha1542")) {
1171 shpnt = scsi_register(tpnt, 1168 shpnt = scsi_register(tpnt,
1172 sizeof(struct aha1542_hostdata)); 1169 sizeof(struct aha1542_hostdata));