diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/scsi/aic7xxx/aic79xx.reg | 113 | ||||
-rw-r--r-- | drivers/scsi/aic7xxx/aic7xxx.reg | 43 | ||||
-rw-r--r-- | drivers/scsi/aic7xxx/aicasm/aicasm.c | 6 | ||||
-rw-r--r-- | drivers/scsi/aic7xxx/aicasm/aicasm_gram.y | 12 | ||||
-rw-r--r-- | drivers/scsi/aic7xxx/aicasm/aicasm_scan.l | 1 | ||||
-rw-r--r-- | drivers/scsi/aic7xxx/aicasm/aicasm_symbol.c | 25 | ||||
-rw-r--r-- | drivers/scsi/aic7xxx/aicasm/aicasm_symbol.h | 1 |
7 files changed, 185 insertions, 16 deletions
diff --git a/drivers/scsi/aic7xxx/aic79xx.reg b/drivers/scsi/aic7xxx/aic79xx.reg index 6ab514d7f980..cca16fc5b4ad 100644 --- a/drivers/scsi/aic7xxx/aic79xx.reg +++ b/drivers/scsi/aic7xxx/aic79xx.reg | |||
@@ -198,6 +198,7 @@ register SEQINTCODE { | |||
198 | register CLRINT { | 198 | register CLRINT { |
199 | address 0x003 | 199 | address 0x003 |
200 | access_mode WO | 200 | access_mode WO |
201 | count 19 | ||
201 | field CLRHWERRINT 0x80 /* Rev B or greater */ | 202 | field CLRHWERRINT 0x80 /* Rev B or greater */ |
202 | field CLRBRKADRINT 0x40 | 203 | field CLRBRKADRINT 0x40 |
203 | field CLRSWTMINT 0x20 | 204 | field CLRSWTMINT 0x20 |
@@ -245,6 +246,7 @@ register CLRERR { | |||
245 | register HCNTRL { | 246 | register HCNTRL { |
246 | address 0x005 | 247 | address 0x005 |
247 | access_mode RW | 248 | access_mode RW |
249 | count 12 | ||
248 | field SEQ_RESET 0x80 /* Rev B or greater */ | 250 | field SEQ_RESET 0x80 /* Rev B or greater */ |
249 | field POWRDN 0x40 | 251 | field POWRDN 0x40 |
250 | field SWINT 0x10 | 252 | field SWINT 0x10 |
@@ -262,6 +264,7 @@ register HNSCB_QOFF { | |||
262 | address 0x006 | 264 | address 0x006 |
263 | access_mode RW | 265 | access_mode RW |
264 | size 2 | 266 | size 2 |
267 | count 2 | ||
265 | } | 268 | } |
266 | 269 | ||
267 | /* | 270 | /* |
@@ -270,6 +273,7 @@ register HNSCB_QOFF { | |||
270 | register HESCB_QOFF { | 273 | register HESCB_QOFF { |
271 | address 0x008 | 274 | address 0x008 |
272 | access_mode RW | 275 | access_mode RW |
276 | count 2 | ||
273 | } | 277 | } |
274 | 278 | ||
275 | /* | 279 | /* |
@@ -287,6 +291,7 @@ register HS_MAILBOX { | |||
287 | */ | 291 | */ |
288 | register SEQINTSTAT { | 292 | register SEQINTSTAT { |
289 | address 0x00C | 293 | address 0x00C |
294 | count 1 | ||
290 | access_mode RO | 295 | access_mode RO |
291 | field SEQ_SWTMRTO 0x10 | 296 | field SEQ_SWTMRTO 0x10 |
292 | field SEQ_SEQINT 0x08 | 297 | field SEQ_SEQINT 0x08 |
@@ -332,6 +337,7 @@ register SNSCB_QOFF { | |||
332 | */ | 337 | */ |
333 | register SESCB_QOFF { | 338 | register SESCB_QOFF { |
334 | address 0x012 | 339 | address 0x012 |
340 | count 2 | ||
335 | access_mode RW | 341 | access_mode RW |
336 | modes M_CCHAN | 342 | modes M_CCHAN |
337 | } | 343 | } |
@@ -397,6 +403,7 @@ register DFCNTRL { | |||
397 | address 0x019 | 403 | address 0x019 |
398 | access_mode RW | 404 | access_mode RW |
399 | modes M_DFF0, M_DFF1 | 405 | modes M_DFF0, M_DFF1 |
406 | count 11 | ||
400 | field PRELOADEN 0x80 | 407 | field PRELOADEN 0x80 |
401 | field SCSIENWRDIS 0x40 /* Rev B only. */ | 408 | field SCSIENWRDIS 0x40 /* Rev B only. */ |
402 | field SCSIEN 0x20 | 409 | field SCSIEN 0x20 |
@@ -415,6 +422,7 @@ register DFCNTRL { | |||
415 | */ | 422 | */ |
416 | register DSCOMMAND0 { | 423 | register DSCOMMAND0 { |
417 | address 0x019 | 424 | address 0x019 |
425 | count 1 | ||
418 | access_mode RW | 426 | access_mode RW |
419 | modes M_CFG | 427 | modes M_CFG |
420 | field CACHETHEN 0x80 /* Cache Threshold enable */ | 428 | field CACHETHEN 0x80 /* Cache Threshold enable */ |
@@ -580,6 +588,7 @@ register DFF_THRSH { | |||
580 | address 0x088 | 588 | address 0x088 |
581 | access_mode RW | 589 | access_mode RW |
582 | modes M_CFG | 590 | modes M_CFG |
591 | count 1 | ||
583 | field WR_DFTHRSH 0x70 { | 592 | field WR_DFTHRSH 0x70 { |
584 | WR_DFTHRSH_MIN, | 593 | WR_DFTHRSH_MIN, |
585 | WR_DFTHRSH_25, | 594 | WR_DFTHRSH_25, |
@@ -800,6 +809,7 @@ register PCIXCTL { | |||
800 | address 0x093 | 809 | address 0x093 |
801 | access_mode RW | 810 | access_mode RW |
802 | modes M_CFG | 811 | modes M_CFG |
812 | count 1 | ||
803 | field SERRPULSE 0x80 | 813 | field SERRPULSE 0x80 |
804 | field UNEXPSCIEN 0x20 | 814 | field UNEXPSCIEN 0x20 |
805 | field SPLTSMADIS 0x10 | 815 | field SPLTSMADIS 0x10 |
@@ -844,6 +854,7 @@ register DCHSPLTSTAT0 { | |||
844 | address 0x096 | 854 | address 0x096 |
845 | access_mode RW | 855 | access_mode RW |
846 | modes M_DFF0, M_DFF1 | 856 | modes M_DFF0, M_DFF1 |
857 | count 2 | ||
847 | field STAETERM 0x80 | 858 | field STAETERM 0x80 |
848 | field SCBCERR 0x40 | 859 | field SCBCERR 0x40 |
849 | field SCADERR 0x20 | 860 | field SCADERR 0x20 |
@@ -895,6 +906,7 @@ register DCHSPLTSTAT1 { | |||
895 | address 0x097 | 906 | address 0x097 |
896 | access_mode RW | 907 | access_mode RW |
897 | modes M_DFF0, M_DFF1 | 908 | modes M_DFF0, M_DFF1 |
909 | count 2 | ||
898 | field RXDATABUCKET 0x01 | 910 | field RXDATABUCKET 0x01 |
899 | } | 911 | } |
900 | 912 | ||
@@ -1048,6 +1060,7 @@ register SGSPLTSTAT0 { | |||
1048 | address 0x09E | 1060 | address 0x09E |
1049 | access_mode RW | 1061 | access_mode RW |
1050 | modes M_DFF0, M_DFF1 | 1062 | modes M_DFF0, M_DFF1 |
1063 | count 2 | ||
1051 | field STAETERM 0x80 | 1064 | field STAETERM 0x80 |
1052 | field SCBCERR 0x40 | 1065 | field SCBCERR 0x40 |
1053 | field SCADERR 0x20 | 1066 | field SCADERR 0x20 |
@@ -1065,6 +1078,7 @@ register SGSPLTSTAT1 { | |||
1065 | address 0x09F | 1078 | address 0x09F |
1066 | access_mode RW | 1079 | access_mode RW |
1067 | modes M_DFF0, M_DFF1 | 1080 | modes M_DFF0, M_DFF1 |
1081 | count 2 | ||
1068 | field RXDATABUCKET 0x01 | 1082 | field RXDATABUCKET 0x01 |
1069 | } | 1083 | } |
1070 | 1084 | ||
@@ -1086,6 +1100,7 @@ register DF0PCISTAT { | |||
1086 | address 0x0A0 | 1100 | address 0x0A0 |
1087 | access_mode RW | 1101 | access_mode RW |
1088 | modes M_CFG | 1102 | modes M_CFG |
1103 | count 1 | ||
1089 | field DPE 0x80 | 1104 | field DPE 0x80 |
1090 | field SSE 0x40 | 1105 | field SSE 0x40 |
1091 | field RMA 0x20 | 1106 | field RMA 0x20 |
@@ -1184,6 +1199,7 @@ register TARGPCISTAT { | |||
1184 | address 0x0A7 | 1199 | address 0x0A7 |
1185 | access_mode RW | 1200 | access_mode RW |
1186 | modes M_CFG | 1201 | modes M_CFG |
1202 | count 5 | ||
1187 | field DPE 0x80 | 1203 | field DPE 0x80 |
1188 | field SSE 0x40 | 1204 | field SSE 0x40 |
1189 | field STA 0x08 | 1205 | field STA 0x08 |
@@ -1198,6 +1214,7 @@ register LQIN { | |||
1198 | address 0x020 | 1214 | address 0x020 |
1199 | access_mode RW | 1215 | access_mode RW |
1200 | size 20 | 1216 | size 20 |
1217 | count 2 | ||
1201 | modes M_DFF0, M_DFF1, M_SCSI | 1218 | modes M_DFF0, M_DFF1, M_SCSI |
1202 | } | 1219 | } |
1203 | 1220 | ||
@@ -1229,6 +1246,7 @@ register LUNPTR { | |||
1229 | address 0x022 | 1246 | address 0x022 |
1230 | access_mode RW | 1247 | access_mode RW |
1231 | modes M_CFG | 1248 | modes M_CFG |
1249 | count 2 | ||
1232 | } | 1250 | } |
1233 | 1251 | ||
1234 | /* | 1252 | /* |
@@ -1259,6 +1277,7 @@ register CMDLENPTR { | |||
1259 | address 0x025 | 1277 | address 0x025 |
1260 | access_mode RW | 1278 | access_mode RW |
1261 | modes M_CFG | 1279 | modes M_CFG |
1280 | count 1 | ||
1262 | } | 1281 | } |
1263 | 1282 | ||
1264 | /* | 1283 | /* |
@@ -1270,6 +1289,7 @@ register ATTRPTR { | |||
1270 | address 0x026 | 1289 | address 0x026 |
1271 | access_mode RW | 1290 | access_mode RW |
1272 | modes M_CFG | 1291 | modes M_CFG |
1292 | count 1 | ||
1273 | } | 1293 | } |
1274 | 1294 | ||
1275 | /* | 1295 | /* |
@@ -1281,6 +1301,7 @@ register FLAGPTR { | |||
1281 | address 0x027 | 1301 | address 0x027 |
1282 | access_mode RW | 1302 | access_mode RW |
1283 | modes M_CFG | 1303 | modes M_CFG |
1304 | count 1 | ||
1284 | } | 1305 | } |
1285 | 1306 | ||
1286 | /* | 1307 | /* |
@@ -1291,6 +1312,7 @@ register CMDPTR { | |||
1291 | address 0x028 | 1312 | address 0x028 |
1292 | access_mode RW | 1313 | access_mode RW |
1293 | modes M_CFG | 1314 | modes M_CFG |
1315 | count 1 | ||
1294 | } | 1316 | } |
1295 | 1317 | ||
1296 | /* | 1318 | /* |
@@ -1301,6 +1323,7 @@ register QNEXTPTR { | |||
1301 | address 0x029 | 1323 | address 0x029 |
1302 | access_mode RW | 1324 | access_mode RW |
1303 | modes M_CFG | 1325 | modes M_CFG |
1326 | count 1 | ||
1304 | } | 1327 | } |
1305 | 1328 | ||
1306 | /* | 1329 | /* |
@@ -1323,6 +1346,7 @@ register ABRTBYTEPTR { | |||
1323 | address 0x02B | 1346 | address 0x02B |
1324 | access_mode RW | 1347 | access_mode RW |
1325 | modes M_CFG | 1348 | modes M_CFG |
1349 | count 1 | ||
1326 | } | 1350 | } |
1327 | 1351 | ||
1328 | /* | 1352 | /* |
@@ -1333,6 +1357,7 @@ register ABRTBITPTR { | |||
1333 | address 0x02C | 1357 | address 0x02C |
1334 | access_mode RW | 1358 | access_mode RW |
1335 | modes M_CFG | 1359 | modes M_CFG |
1360 | count 1 | ||
1336 | } | 1361 | } |
1337 | 1362 | ||
1338 | /* | 1363 | /* |
@@ -1370,6 +1395,7 @@ register LUNLEN { | |||
1370 | address 0x030 | 1395 | address 0x030 |
1371 | access_mode RW | 1396 | access_mode RW |
1372 | modes M_CFG | 1397 | modes M_CFG |
1398 | count 2 | ||
1373 | mask ILUNLEN 0x0F | 1399 | mask ILUNLEN 0x0F |
1374 | mask TLUNLEN 0xF0 | 1400 | mask TLUNLEN 0xF0 |
1375 | } | 1401 | } |
@@ -1383,6 +1409,7 @@ register CDBLIMIT { | |||
1383 | address 0x031 | 1409 | address 0x031 |
1384 | access_mode RW | 1410 | access_mode RW |
1385 | modes M_CFG | 1411 | modes M_CFG |
1412 | count 1 | ||
1386 | } | 1413 | } |
1387 | 1414 | ||
1388 | /* | 1415 | /* |
@@ -1394,6 +1421,7 @@ register MAXCMD { | |||
1394 | address 0x032 | 1421 | address 0x032 |
1395 | access_mode RW | 1422 | access_mode RW |
1396 | modes M_CFG | 1423 | modes M_CFG |
1424 | count 9 | ||
1397 | } | 1425 | } |
1398 | 1426 | ||
1399 | /* | 1427 | /* |
@@ -1458,6 +1486,7 @@ register LQCTL1 { | |||
1458 | address 0x038 | 1486 | address 0x038 |
1459 | access_mode RW | 1487 | access_mode RW |
1460 | modes M_DFF0, M_DFF1, M_SCSI | 1488 | modes M_DFF0, M_DFF1, M_SCSI |
1489 | count 2 | ||
1461 | field PCI2PCI 0x04 | 1490 | field PCI2PCI 0x04 |
1462 | field SINGLECMD 0x02 | 1491 | field SINGLECMD 0x02 |
1463 | field ABORTPENDING 0x01 | 1492 | field ABORTPENDING 0x01 |
@@ -1470,6 +1499,7 @@ register LQCTL2 { | |||
1470 | address 0x039 | 1499 | address 0x039 |
1471 | access_mode RW | 1500 | access_mode RW |
1472 | modes M_DFF0, M_DFF1, M_SCSI | 1501 | modes M_DFF0, M_DFF1, M_SCSI |
1502 | count 5 | ||
1473 | field LQIRETRY 0x80 | 1503 | field LQIRETRY 0x80 |
1474 | field LQICONTINUE 0x40 | 1504 | field LQICONTINUE 0x40 |
1475 | field LQITOIDLE 0x20 | 1505 | field LQITOIDLE 0x20 |
@@ -1528,6 +1558,7 @@ register SCSISEQ1 { | |||
1528 | address 0x03B | 1558 | address 0x03B |
1529 | access_mode RW | 1559 | access_mode RW |
1530 | modes M_DFF0, M_DFF1, M_SCSI | 1560 | modes M_DFF0, M_DFF1, M_SCSI |
1561 | count 8 | ||
1531 | field MANUALCTL 0x40 | 1562 | field MANUALCTL 0x40 |
1532 | field ENSELI 0x20 | 1563 | field ENSELI 0x20 |
1533 | field ENRSELI 0x10 | 1564 | field ENRSELI 0x10 |
@@ -1667,6 +1698,9 @@ register SCSISIGO { | |||
1667 | } | 1698 | } |
1668 | } | 1699 | } |
1669 | 1700 | ||
1701 | /* | ||
1702 | * SCSI Control Signal In | ||
1703 | */ | ||
1670 | register SCSISIGI { | 1704 | register SCSISIGI { |
1671 | address 0x041 | 1705 | address 0x041 |
1672 | access_mode RO | 1706 | access_mode RO |
@@ -1703,6 +1737,7 @@ register MULTARGID { | |||
1703 | access_mode RW | 1737 | access_mode RW |
1704 | modes M_CFG | 1738 | modes M_CFG |
1705 | size 2 | 1739 | size 2 |
1740 | count 2 | ||
1706 | } | 1741 | } |
1707 | 1742 | ||
1708 | /* | 1743 | /* |
@@ -1758,6 +1793,7 @@ register TARGIDIN { | |||
1758 | address 0x048 | 1793 | address 0x048 |
1759 | access_mode RO | 1794 | access_mode RO |
1760 | modes M_DFF0, M_DFF1, M_SCSI | 1795 | modes M_DFF0, M_DFF1, M_SCSI |
1796 | count 2 | ||
1761 | field CLKOUT 0x80 | 1797 | field CLKOUT 0x80 |
1762 | field TARGID 0x0F | 1798 | field TARGID 0x0F |
1763 | } | 1799 | } |
@@ -1798,6 +1834,7 @@ register OPTIONMODE { | |||
1798 | address 0x04A | 1834 | address 0x04A |
1799 | access_mode RW | 1835 | access_mode RW |
1800 | modes M_CFG | 1836 | modes M_CFG |
1837 | count 4 | ||
1801 | field BIOSCANCTL 0x80 | 1838 | field BIOSCANCTL 0x80 |
1802 | field AUTOACKEN 0x40 | 1839 | field AUTOACKEN 0x40 |
1803 | field BIASCANCTL 0x20 | 1840 | field BIASCANCTL 0x20 |
@@ -1850,6 +1887,7 @@ register SIMODE0 { | |||
1850 | address 0x04B | 1887 | address 0x04B |
1851 | access_mode RW | 1888 | access_mode RW |
1852 | modes M_CFG | 1889 | modes M_CFG |
1890 | count 8 | ||
1853 | field ENSELDO 0x40 | 1891 | field ENSELDO 0x40 |
1854 | field ENSELDI 0x20 | 1892 | field ENSELDI 0x20 |
1855 | field ENSELINGO 0x10 | 1893 | field ENSELINGO 0x10 |
@@ -1945,6 +1983,7 @@ register PERRDIAG { | |||
1945 | address 0x04E | 1983 | address 0x04E |
1946 | access_mode RO | 1984 | access_mode RO |
1947 | modes M_DFF0, M_DFF1, M_SCSI | 1985 | modes M_DFF0, M_DFF1, M_SCSI |
1986 | count 3 | ||
1948 | field HIZERO 0x80 | 1987 | field HIZERO 0x80 |
1949 | field HIPERR 0x40 | 1988 | field HIPERR 0x40 |
1950 | field PREVPHASE 0x20 | 1989 | field PREVPHASE 0x20 |
@@ -1962,6 +2001,7 @@ register LQISTATE { | |||
1962 | address 0x04E | 2001 | address 0x04E |
1963 | access_mode RO | 2002 | access_mode RO |
1964 | modes M_CFG | 2003 | modes M_CFG |
2004 | count 6 | ||
1965 | } | 2005 | } |
1966 | 2006 | ||
1967 | /* | 2007 | /* |
@@ -1971,6 +2011,7 @@ register SOFFCNT { | |||
1971 | address 0x04F | 2011 | address 0x04F |
1972 | access_mode RO | 2012 | access_mode RO |
1973 | modes M_DFF0, M_DFF1, M_SCSI | 2013 | modes M_DFF0, M_DFF1, M_SCSI |
2014 | count 1 | ||
1974 | } | 2015 | } |
1975 | 2016 | ||
1976 | /* | 2017 | /* |
@@ -1980,6 +2021,7 @@ register LQOSTATE { | |||
1980 | address 0x04F | 2021 | address 0x04F |
1981 | access_mode RO | 2022 | access_mode RO |
1982 | modes M_CFG | 2023 | modes M_CFG |
2024 | count 2 | ||
1983 | } | 2025 | } |
1984 | 2026 | ||
1985 | /* | 2027 | /* |
@@ -1989,6 +2031,7 @@ register LQISTAT0 { | |||
1989 | address 0x050 | 2031 | address 0x050 |
1990 | access_mode RO | 2032 | access_mode RO |
1991 | modes M_DFF0, M_DFF1, M_SCSI | 2033 | modes M_DFF0, M_DFF1, M_SCSI |
2034 | count 2 | ||
1992 | field LQIATNQAS 0x20 | 2035 | field LQIATNQAS 0x20 |
1993 | field LQICRCT1 0x10 | 2036 | field LQICRCT1 0x10 |
1994 | field LQICRCT2 0x08 | 2037 | field LQICRCT2 0x08 |
@@ -2004,6 +2047,7 @@ register CLRLQIINT0 { | |||
2004 | address 0x050 | 2047 | address 0x050 |
2005 | access_mode WO | 2048 | access_mode WO |
2006 | modes M_DFF0, M_DFF1, M_SCSI | 2049 | modes M_DFF0, M_DFF1, M_SCSI |
2050 | count 1 | ||
2007 | field CLRLQIATNQAS 0x20 | 2051 | field CLRLQIATNQAS 0x20 |
2008 | field CLRLQICRCT1 0x10 | 2052 | field CLRLQICRCT1 0x10 |
2009 | field CLRLQICRCT2 0x08 | 2053 | field CLRLQICRCT2 0x08 |
@@ -2019,6 +2063,7 @@ register LQIMODE0 { | |||
2019 | address 0x050 | 2063 | address 0x050 |
2020 | access_mode RW | 2064 | access_mode RW |
2021 | modes M_CFG | 2065 | modes M_CFG |
2066 | count 3 | ||
2022 | field ENLQIATNQASK 0x20 | 2067 | field ENLQIATNQASK 0x20 |
2023 | field ENLQICRCT1 0x10 | 2068 | field ENLQICRCT1 0x10 |
2024 | field ENLQICRCT2 0x08 | 2069 | field ENLQICRCT2 0x08 |
@@ -2034,6 +2079,7 @@ register LQISTAT1 { | |||
2034 | address 0x051 | 2079 | address 0x051 |
2035 | access_mode RO | 2080 | access_mode RO |
2036 | modes M_DFF0, M_DFF1, M_SCSI | 2081 | modes M_DFF0, M_DFF1, M_SCSI |
2082 | count 3 | ||
2037 | field LQIPHASE_LQ 0x80 | 2083 | field LQIPHASE_LQ 0x80 |
2038 | field LQIPHASE_NLQ 0x40 | 2084 | field LQIPHASE_NLQ 0x40 |
2039 | field LQIABORT 0x20 | 2085 | field LQIABORT 0x20 |
@@ -2051,6 +2097,7 @@ register CLRLQIINT1 { | |||
2051 | address 0x051 | 2097 | address 0x051 |
2052 | access_mode WO | 2098 | access_mode WO |
2053 | modes M_DFF0, M_DFF1, M_SCSI | 2099 | modes M_DFF0, M_DFF1, M_SCSI |
2100 | count 4 | ||
2054 | field CLRLQIPHASE_LQ 0x80 | 2101 | field CLRLQIPHASE_LQ 0x80 |
2055 | field CLRLQIPHASE_NLQ 0x40 | 2102 | field CLRLQIPHASE_NLQ 0x40 |
2056 | field CLRLIQABORT 0x20 | 2103 | field CLRLIQABORT 0x20 |
@@ -2068,6 +2115,7 @@ register LQIMODE1 { | |||
2068 | address 0x051 | 2115 | address 0x051 |
2069 | access_mode RW | 2116 | access_mode RW |
2070 | modes M_CFG | 2117 | modes M_CFG |
2118 | count 4 | ||
2071 | field ENLQIPHASE_LQ 0x80 /* LQIPHASE1 */ | 2119 | field ENLQIPHASE_LQ 0x80 /* LQIPHASE1 */ |
2072 | field ENLQIPHASE_NLQ 0x40 /* LQIPHASE2 */ | 2120 | field ENLQIPHASE_NLQ 0x40 /* LQIPHASE2 */ |
2073 | field ENLIQABORT 0x20 | 2121 | field ENLIQABORT 0x20 |
@@ -2102,6 +2150,7 @@ register SSTAT3 { | |||
2102 | address 0x053 | 2150 | address 0x053 |
2103 | access_mode RO | 2151 | access_mode RO |
2104 | modes M_DFF0, M_DFF1, M_SCSI | 2152 | modes M_DFF0, M_DFF1, M_SCSI |
2153 | count 3 | ||
2105 | field NTRAMPERR 0x02 | 2154 | field NTRAMPERR 0x02 |
2106 | field OSRAMPERR 0x01 | 2155 | field OSRAMPERR 0x01 |
2107 | } | 2156 | } |
@@ -2113,6 +2162,7 @@ register CLRSINT3 { | |||
2113 | address 0x053 | 2162 | address 0x053 |
2114 | access_mode WO | 2163 | access_mode WO |
2115 | modes M_DFF0, M_DFF1, M_SCSI | 2164 | modes M_DFF0, M_DFF1, M_SCSI |
2165 | count 3 | ||
2116 | field CLRNTRAMPERR 0x02 | 2166 | field CLRNTRAMPERR 0x02 |
2117 | field CLROSRAMPERR 0x01 | 2167 | field CLROSRAMPERR 0x01 |
2118 | } | 2168 | } |
@@ -2124,6 +2174,7 @@ register SIMODE3 { | |||
2124 | address 0x053 | 2174 | address 0x053 |
2125 | access_mode RW | 2175 | access_mode RW |
2126 | modes M_CFG | 2176 | modes M_CFG |
2177 | count 4 | ||
2127 | field ENNTRAMPERR 0x02 | 2178 | field ENNTRAMPERR 0x02 |
2128 | field ENOSRAMPERR 0x01 | 2179 | field ENOSRAMPERR 0x01 |
2129 | } | 2180 | } |
@@ -2135,6 +2186,7 @@ register LQOSTAT0 { | |||
2135 | address 0x054 | 2186 | address 0x054 |
2136 | access_mode RO | 2187 | access_mode RO |
2137 | modes M_DFF0, M_DFF1, M_SCSI | 2188 | modes M_DFF0, M_DFF1, M_SCSI |
2189 | count 2 | ||
2138 | field LQOTARGSCBPERR 0x10 | 2190 | field LQOTARGSCBPERR 0x10 |
2139 | field LQOSTOPT2 0x08 | 2191 | field LQOSTOPT2 0x08 |
2140 | field LQOATNLQ 0x04 | 2192 | field LQOATNLQ 0x04 |
@@ -2149,6 +2201,7 @@ register CLRLQOINT0 { | |||
2149 | address 0x054 | 2201 | address 0x054 |
2150 | access_mode WO | 2202 | access_mode WO |
2151 | modes M_DFF0, M_DFF1, M_SCSI | 2203 | modes M_DFF0, M_DFF1, M_SCSI |
2204 | count 3 | ||
2152 | field CLRLQOTARGSCBPERR 0x10 | 2205 | field CLRLQOTARGSCBPERR 0x10 |
2153 | field CLRLQOSTOPT2 0x08 | 2206 | field CLRLQOSTOPT2 0x08 |
2154 | field CLRLQOATNLQ 0x04 | 2207 | field CLRLQOATNLQ 0x04 |
@@ -2163,6 +2216,7 @@ register LQOMODE0 { | |||
2163 | address 0x054 | 2216 | address 0x054 |
2164 | access_mode RW | 2217 | access_mode RW |
2165 | modes M_CFG | 2218 | modes M_CFG |
2219 | count 4 | ||
2166 | field ENLQOTARGSCBPERR 0x10 | 2220 | field ENLQOTARGSCBPERR 0x10 |
2167 | field ENLQOSTOPT2 0x08 | 2221 | field ENLQOSTOPT2 0x08 |
2168 | field ENLQOATNLQ 0x04 | 2222 | field ENLQOATNLQ 0x04 |
@@ -2191,6 +2245,7 @@ register CLRLQOINT1 { | |||
2191 | address 0x055 | 2245 | address 0x055 |
2192 | access_mode WO | 2246 | access_mode WO |
2193 | modes M_DFF0, M_DFF1, M_SCSI | 2247 | modes M_DFF0, M_DFF1, M_SCSI |
2248 | count 7 | ||
2194 | field CLRLQOINITSCBPERR 0x10 | 2249 | field CLRLQOINITSCBPERR 0x10 |
2195 | field CLRLQOSTOPI2 0x08 | 2250 | field CLRLQOSTOPI2 0x08 |
2196 | field CLRLQOBADQAS 0x04 | 2251 | field CLRLQOBADQAS 0x04 |
@@ -2205,6 +2260,7 @@ register LQOMODE1 { | |||
2205 | address 0x055 | 2260 | address 0x055 |
2206 | access_mode RW | 2261 | access_mode RW |
2207 | modes M_CFG | 2262 | modes M_CFG |
2263 | count 4 | ||
2208 | field ENLQOINITSCBPERR 0x10 | 2264 | field ENLQOINITSCBPERR 0x10 |
2209 | field ENLQOSTOPI2 0x08 | 2265 | field ENLQOSTOPI2 0x08 |
2210 | field ENLQOBADQAS 0x04 | 2266 | field ENLQOBADQAS 0x04 |
@@ -2232,6 +2288,7 @@ register OS_SPACE_CNT { | |||
2232 | address 0x056 | 2288 | address 0x056 |
2233 | access_mode RO | 2289 | access_mode RO |
2234 | modes M_CFG | 2290 | modes M_CFG |
2291 | count 2 | ||
2235 | } | 2292 | } |
2236 | 2293 | ||
2237 | /* | 2294 | /* |
@@ -2286,13 +2343,19 @@ register NEXTSCB { | |||
2286 | modes M_SCSI | 2343 | modes M_SCSI |
2287 | } | 2344 | } |
2288 | 2345 | ||
2289 | /* Rev B only. */ | 2346 | /* |
2347 | * LQO SCSI Control | ||
2348 | * (Rev B only.) | ||
2349 | */ | ||
2290 | register LQOSCSCTL { | 2350 | register LQOSCSCTL { |
2291 | address 0x05A | 2351 | address 0x05A |
2292 | access_mode RW | 2352 | access_mode RW |
2293 | size 1 | 2353 | size 1 |
2294 | modes M_CFG | 2354 | modes M_CFG |
2355 | count 1 | ||
2295 | field LQOH2A_VERSION 0x80 | 2356 | field LQOH2A_VERSION 0x80 |
2357 | field LQOBUSETDLY 0x40 | ||
2358 | field LQONOHOLDLACK 0x02 | ||
2296 | field LQONOCHKOVER 0x01 | 2359 | field LQONOCHKOVER 0x01 |
2297 | } | 2360 | } |
2298 | 2361 | ||
@@ -2459,6 +2522,7 @@ register NEGPERIOD { | |||
2459 | address 0x061 | 2522 | address 0x061 |
2460 | access_mode RW | 2523 | access_mode RW |
2461 | modes M_SCSI | 2524 | modes M_SCSI |
2525 | count 1 | ||
2462 | } | 2526 | } |
2463 | 2527 | ||
2464 | /* | 2528 | /* |
@@ -2478,6 +2542,7 @@ register NEGOFFSET { | |||
2478 | address 0x062 | 2542 | address 0x062 |
2479 | access_mode RW | 2543 | access_mode RW |
2480 | modes M_SCSI | 2544 | modes M_SCSI |
2545 | count 1 | ||
2481 | } | 2546 | } |
2482 | 2547 | ||
2483 | /* | 2548 | /* |
@@ -2487,6 +2552,7 @@ register NEGPPROPTS { | |||
2487 | address 0x063 | 2552 | address 0x063 |
2488 | access_mode RW | 2553 | access_mode RW |
2489 | modes M_SCSI | 2554 | modes M_SCSI |
2555 | count 1 | ||
2490 | field PPROPT_PACE 0x08 | 2556 | field PPROPT_PACE 0x08 |
2491 | field PPROPT_QAS 0x04 | 2557 | field PPROPT_QAS 0x04 |
2492 | field PPROPT_DT 0x02 | 2558 | field PPROPT_DT 0x02 |
@@ -2516,12 +2582,19 @@ register ANNEXCOL { | |||
2516 | address 0x065 | 2582 | address 0x065 |
2517 | access_mode RW | 2583 | access_mode RW |
2518 | modes M_SCSI | 2584 | modes M_SCSI |
2585 | count 7 | ||
2519 | } | 2586 | } |
2520 | 2587 | ||
2588 | /* | ||
2589 | * SCSI Check | ||
2590 | * (Rev. B only) | ||
2591 | */ | ||
2521 | register SCSCHKN { | 2592 | register SCSCHKN { |
2522 | address 0x066 | 2593 | address 0x066 |
2523 | access_mode RW | 2594 | access_mode RW |
2524 | modes M_CFG | 2595 | modes M_CFG |
2596 | count 1 | ||
2597 | field BIDICHKDIS 0x80 | ||
2525 | field STSELSKIDDIS 0x40 | 2598 | field STSELSKIDDIS 0x40 |
2526 | field CURRFIFODEF 0x20 | 2599 | field CURRFIFODEF 0x20 |
2527 | field WIDERESEN 0x10 | 2600 | field WIDERESEN 0x10 |
@@ -2561,6 +2634,7 @@ register ANNEXDAT { | |||
2561 | address 0x066 | 2634 | address 0x066 |
2562 | access_mode RW | 2635 | access_mode RW |
2563 | modes M_SCSI | 2636 | modes M_SCSI |
2637 | count 3 | ||
2564 | } | 2638 | } |
2565 | 2639 | ||
2566 | /* | 2640 | /* |
@@ -2596,6 +2670,7 @@ register TOWNID { | |||
2596 | address 0x069 | 2670 | address 0x069 |
2597 | access_mode RW | 2671 | access_mode RW |
2598 | modes M_SCSI | 2672 | modes M_SCSI |
2673 | count 2 | ||
2599 | } | 2674 | } |
2600 | 2675 | ||
2601 | /* | 2676 | /* |
@@ -2737,6 +2812,7 @@ register SCBAUTOPTR { | |||
2737 | address 0x0AB | 2812 | address 0x0AB |
2738 | access_mode RW | 2813 | access_mode RW |
2739 | modes M_CFG | 2814 | modes M_CFG |
2815 | count 1 | ||
2740 | field AUSCBPTR_EN 0x80 | 2816 | field AUSCBPTR_EN 0x80 |
2741 | field SCBPTR_ADDR 0x38 | 2817 | field SCBPTR_ADDR 0x38 |
2742 | field SCBPTR_OFF 0x07 | 2818 | field SCBPTR_OFF 0x07 |
@@ -2881,6 +2957,7 @@ register BRDDAT { | |||
2881 | address 0x0B8 | 2957 | address 0x0B8 |
2882 | access_mode RW | 2958 | access_mode RW |
2883 | modes M_SCSI | 2959 | modes M_SCSI |
2960 | count 2 | ||
2884 | } | 2961 | } |
2885 | 2962 | ||
2886 | /* | 2963 | /* |
@@ -2890,6 +2967,7 @@ register BRDCTL { | |||
2890 | address 0x0B9 | 2967 | address 0x0B9 |
2891 | access_mode RW | 2968 | access_mode RW |
2892 | modes M_SCSI | 2969 | modes M_SCSI |
2970 | count 7 | ||
2893 | field FLXARBACK 0x80 | 2971 | field FLXARBACK 0x80 |
2894 | field FLXARBREQ 0x40 | 2972 | field FLXARBREQ 0x40 |
2895 | field BRDADDR 0x38 | 2973 | field BRDADDR 0x38 |
@@ -2905,6 +2983,7 @@ register SEEADR { | |||
2905 | address 0x0BA | 2983 | address 0x0BA |
2906 | access_mode RW | 2984 | access_mode RW |
2907 | modes M_SCSI | 2985 | modes M_SCSI |
2986 | count 4 | ||
2908 | } | 2987 | } |
2909 | 2988 | ||
2910 | /* | 2989 | /* |
@@ -2915,6 +2994,7 @@ register SEEDAT { | |||
2915 | access_mode RW | 2994 | access_mode RW |
2916 | size 2 | 2995 | size 2 |
2917 | modes M_SCSI | 2996 | modes M_SCSI |
2997 | count 4 | ||
2918 | } | 2998 | } |
2919 | 2999 | ||
2920 | /* | 3000 | /* |
@@ -2924,6 +3004,7 @@ register SEESTAT { | |||
2924 | address 0x0BE | 3004 | address 0x0BE |
2925 | access_mode RO | 3005 | access_mode RO |
2926 | modes M_SCSI | 3006 | modes M_SCSI |
3007 | count 1 | ||
2927 | field INIT_DONE 0x80 | 3008 | field INIT_DONE 0x80 |
2928 | field SEEOPCODE 0x70 | 3009 | field SEEOPCODE 0x70 |
2929 | field LDALTID_L 0x08 | 3010 | field LDALTID_L 0x08 |
@@ -2939,6 +3020,7 @@ register SEECTL { | |||
2939 | address 0x0BE | 3020 | address 0x0BE |
2940 | access_mode RW | 3021 | access_mode RW |
2941 | modes M_SCSI | 3022 | modes M_SCSI |
3023 | count 4 | ||
2942 | field SEEOPCODE 0x70 { | 3024 | field SEEOPCODE 0x70 { |
2943 | SEEOP_ERASE 0x70, | 3025 | SEEOP_ERASE 0x70, |
2944 | SEEOP_READ 0x60, | 3026 | SEEOP_READ 0x60, |
@@ -3000,6 +3082,7 @@ register DSPDATACTL { | |||
3000 | address 0x0C1 | 3082 | address 0x0C1 |
3001 | access_mode RW | 3083 | access_mode RW |
3002 | modes M_CFG | 3084 | modes M_CFG |
3085 | count 3 | ||
3003 | field BYPASSENAB 0x80 | 3086 | field BYPASSENAB 0x80 |
3004 | field DESQDIS 0x10 | 3087 | field DESQDIS 0x10 |
3005 | field RCVROFFSTDIS 0x04 | 3088 | field RCVROFFSTDIS 0x04 |
@@ -3058,6 +3141,7 @@ register DSPSELECT { | |||
3058 | address 0x0C4 | 3141 | address 0x0C4 |
3059 | access_mode RW | 3142 | access_mode RW |
3060 | modes M_CFG | 3143 | modes M_CFG |
3144 | count 1 | ||
3061 | field AUTOINCEN 0x80 | 3145 | field AUTOINCEN 0x80 |
3062 | field DSPSEL 0x1F | 3146 | field DSPSEL 0x1F |
3063 | } | 3147 | } |
@@ -3071,6 +3155,7 @@ register WRTBIASCTL { | |||
3071 | address 0x0C5 | 3155 | address 0x0C5 |
3072 | access_mode WO | 3156 | access_mode WO |
3073 | modes M_CFG | 3157 | modes M_CFG |
3158 | count 3 | ||
3074 | field AUTOXBCDIS 0x80 | 3159 | field AUTOXBCDIS 0x80 |
3075 | field XMITMANVAL 0x3F | 3160 | field XMITMANVAL 0x3F |
3076 | } | 3161 | } |
@@ -3196,7 +3281,8 @@ register OVLYADDR { | |||
3196 | */ | 3281 | */ |
3197 | register SEQCTL0 { | 3282 | register SEQCTL0 { |
3198 | address 0x0D6 | 3283 | address 0x0D6 |
3199 | access_mode RW | 3284 | access_mode RW |
3285 | count 11 | ||
3200 | field PERRORDIS 0x80 | 3286 | field PERRORDIS 0x80 |
3201 | field PAUSEDIS 0x40 | 3287 | field PAUSEDIS 0x40 |
3202 | field FAILDIS 0x20 | 3288 | field FAILDIS 0x20 |
@@ -3226,7 +3312,8 @@ register SEQCTL1 { | |||
3226 | */ | 3312 | */ |
3227 | register FLAGS { | 3313 | register FLAGS { |
3228 | address 0x0D8 | 3314 | address 0x0D8 |
3229 | access_mode RO | 3315 | access_mode RO |
3316 | count 23 | ||
3230 | field ZERO 0x02 | 3317 | field ZERO 0x02 |
3231 | field CARRY 0x01 | 3318 | field CARRY 0x01 |
3232 | } | 3319 | } |
@@ -3255,7 +3342,8 @@ register SEQINTCTL { | |||
3255 | */ | 3342 | */ |
3256 | register SEQRAM { | 3343 | register SEQRAM { |
3257 | address 0x0DA | 3344 | address 0x0DA |
3258 | access_mode RW | 3345 | access_mode RW |
3346 | count 2 | ||
3259 | } | 3347 | } |
3260 | 3348 | ||
3261 | /* | 3349 | /* |
@@ -3266,6 +3354,7 @@ register PRGMCNT { | |||
3266 | address 0x0DE | 3354 | address 0x0DE |
3267 | access_mode RW | 3355 | access_mode RW |
3268 | size 2 | 3356 | size 2 |
3357 | count 5 | ||
3269 | } | 3358 | } |
3270 | 3359 | ||
3271 | /* | 3360 | /* |
@@ -3273,7 +3362,7 @@ register PRGMCNT { | |||
3273 | */ | 3362 | */ |
3274 | register ACCUM { | 3363 | register ACCUM { |
3275 | address 0x0E0 | 3364 | address 0x0E0 |
3276 | access_mode RW | 3365 | access_mode RW |
3277 | accumulator | 3366 | accumulator |
3278 | } | 3367 | } |
3279 | 3368 | ||
@@ -3401,6 +3490,7 @@ register INTVEC1_ADDR { | |||
3401 | access_mode RW | 3490 | access_mode RW |
3402 | size 2 | 3491 | size 2 |
3403 | modes M_CFG | 3492 | modes M_CFG |
3493 | count 1 | ||
3404 | } | 3494 | } |
3405 | 3495 | ||
3406 | /* | 3496 | /* |
@@ -3412,6 +3502,7 @@ register CURADDR { | |||
3412 | access_mode RW | 3502 | access_mode RW |
3413 | size 2 | 3503 | size 2 |
3414 | modes M_SCSI | 3504 | modes M_SCSI |
3505 | count 2 | ||
3415 | } | 3506 | } |
3416 | 3507 | ||
3417 | /* | 3508 | /* |
@@ -3423,6 +3514,7 @@ register INTVEC2_ADDR { | |||
3423 | access_mode RW | 3514 | access_mode RW |
3424 | size 2 | 3515 | size 2 |
3425 | modes M_CFG | 3516 | modes M_CFG |
3517 | count 1 | ||
3426 | } | 3518 | } |
3427 | 3519 | ||
3428 | /* | 3520 | /* |
@@ -3579,6 +3671,7 @@ scratch_ram { | |||
3579 | /* Parameters for DMA Logic */ | 3671 | /* Parameters for DMA Logic */ |
3580 | DMAPARAMS { | 3672 | DMAPARAMS { |
3581 | size 1 | 3673 | size 1 |
3674 | count 8 | ||
3582 | field PRELOADEN 0x80 | 3675 | field PRELOADEN 0x80 |
3583 | field WIDEODD 0x40 | 3676 | field WIDEODD 0x40 |
3584 | field SCSIEN 0x20 | 3677 | field SCSIEN 0x20 |
@@ -3648,9 +3741,11 @@ scratch_ram { | |||
3648 | */ | 3741 | */ |
3649 | KERNEL_TQINPOS { | 3742 | KERNEL_TQINPOS { |
3650 | size 1 | 3743 | size 1 |
3744 | count 1 | ||
3651 | } | 3745 | } |
3652 | TQINPOS { | 3746 | TQINPOS { |
3653 | size 1 | 3747 | size 1 |
3748 | count 8 | ||
3654 | } | 3749 | } |
3655 | /* | 3750 | /* |
3656 | * Base address of our shared data with the kernel driver in host | 3751 | * Base address of our shared data with the kernel driver in host |
@@ -3681,6 +3776,7 @@ scratch_ram { | |||
3681 | } | 3776 | } |
3682 | ARG_2 { | 3777 | ARG_2 { |
3683 | size 1 | 3778 | size 1 |
3779 | count 1 | ||
3684 | alias RETURN_2 | 3780 | alias RETURN_2 |
3685 | } | 3781 | } |
3686 | 3782 | ||
@@ -3698,6 +3794,7 @@ scratch_ram { | |||
3698 | */ | 3794 | */ |
3699 | SCSISEQ_TEMPLATE { | 3795 | SCSISEQ_TEMPLATE { |
3700 | size 1 | 3796 | size 1 |
3797 | count 7 | ||
3701 | field MANUALCTL 0x40 | 3798 | field MANUALCTL 0x40 |
3702 | field ENSELI 0x20 | 3799 | field ENSELI 0x20 |
3703 | field ENRSELI 0x10 | 3800 | field ENRSELI 0x10 |
@@ -3711,6 +3808,7 @@ scratch_ram { | |||
3711 | */ | 3808 | */ |
3712 | INITIATOR_TAG { | 3809 | INITIATOR_TAG { |
3713 | size 1 | 3810 | size 1 |
3811 | count 1 | ||
3714 | } | 3812 | } |
3715 | 3813 | ||
3716 | SEQ_FLAGS2 { | 3814 | SEQ_FLAGS2 { |
@@ -3777,6 +3875,7 @@ scratch_ram { | |||
3777 | */ | 3875 | */ |
3778 | CMDSIZE_TABLE { | 3876 | CMDSIZE_TABLE { |
3779 | size 8 | 3877 | size 8 |
3878 | count 8 | ||
3780 | } | 3879 | } |
3781 | /* | 3880 | /* |
3782 | * When an SCB with the MK_MESSAGE flag is | 3881 | * When an SCB with the MK_MESSAGE flag is |
@@ -3803,8 +3902,8 @@ scratch_ram { | |||
3803 | /************************* Hardware SCB Definition ****************************/ | 3902 | /************************* Hardware SCB Definition ****************************/ |
3804 | scb { | 3903 | scb { |
3805 | address 0x180 | 3904 | address 0x180 |
3806 | size 64 | 3905 | size 64 |
3807 | modes 0, 1, 2, 3 | 3906 | modes 0, 1, 2, 3 |
3808 | SCB_RESIDUAL_DATACNT { | 3907 | SCB_RESIDUAL_DATACNT { |
3809 | size 4 | 3908 | size 4 |
3810 | alias SCB_CDB_STORE | 3909 | alias SCB_CDB_STORE |
diff --git a/drivers/scsi/aic7xxx/aic7xxx.reg b/drivers/scsi/aic7xxx/aic7xxx.reg index 2a103534df9f..0d2f763c3427 100644 --- a/drivers/scsi/aic7xxx/aic7xxx.reg +++ b/drivers/scsi/aic7xxx/aic7xxx.reg | |||
@@ -238,6 +238,7 @@ register SXFRCTL2 { | |||
238 | register OPTIONMODE { | 238 | register OPTIONMODE { |
239 | address 0x008 | 239 | address 0x008 |
240 | access_mode RW | 240 | access_mode RW |
241 | count 2 | ||
241 | field AUTORATEEN 0x80 | 242 | field AUTORATEEN 0x80 |
242 | field AUTOACKEN 0x40 | 243 | field AUTOACKEN 0x40 |
243 | field ATNMGMNTEN 0x20 | 244 | field ATNMGMNTEN 0x20 |
@@ -254,6 +255,7 @@ register TARGCRCCNT { | |||
254 | address 0x00a | 255 | address 0x00a |
255 | size 2 | 256 | size 2 |
256 | access_mode RW | 257 | access_mode RW |
258 | count 2 | ||
257 | } | 259 | } |
258 | 260 | ||
259 | /* | 261 | /* |
@@ -344,6 +346,7 @@ register SSTAT2 { | |||
344 | register SSTAT3 { | 346 | register SSTAT3 { |
345 | address 0x00e | 347 | address 0x00e |
346 | access_mode RO | 348 | access_mode RO |
349 | count 2 | ||
347 | mask SCSICNT 0xf0 | 350 | mask SCSICNT 0xf0 |
348 | mask OFFCNT 0x0f | 351 | mask OFFCNT 0x0f |
349 | mask U2OFFCNT 0x7f | 352 | mask U2OFFCNT 0x7f |
@@ -367,6 +370,7 @@ register SCSIID_ULTRA2 { | |||
367 | register SIMODE0 { | 370 | register SIMODE0 { |
368 | address 0x010 | 371 | address 0x010 |
369 | access_mode RW | 372 | access_mode RW |
373 | count 2 | ||
370 | field ENSELDO 0x40 | 374 | field ENSELDO 0x40 |
371 | field ENSELDI 0x20 | 375 | field ENSELDI 0x20 |
372 | field ENSELINGO 0x10 | 376 | field ENSELINGO 0x10 |
@@ -429,6 +433,7 @@ register SHADDR { | |||
429 | register SELTIMER { | 433 | register SELTIMER { |
430 | address 0x018 | 434 | address 0x018 |
431 | access_mode RW | 435 | access_mode RW |
436 | count 1 | ||
432 | field STAGE6 0x20 | 437 | field STAGE6 0x20 |
433 | field STAGE5 0x10 | 438 | field STAGE5 0x10 |
434 | field STAGE4 0x08 | 439 | field STAGE4 0x08 |
@@ -467,6 +472,7 @@ register TARGID { | |||
467 | address 0x01b | 472 | address 0x01b |
468 | size 2 | 473 | size 2 |
469 | access_mode RW | 474 | access_mode RW |
475 | count 14 | ||
470 | } | 476 | } |
471 | 477 | ||
472 | /* | 478 | /* |
@@ -480,6 +486,7 @@ register TARGID { | |||
480 | register SPIOCAP { | 486 | register SPIOCAP { |
481 | address 0x01b | 487 | address 0x01b |
482 | access_mode RW | 488 | access_mode RW |
489 | count 10 | ||
483 | field SOFT1 0x80 | 490 | field SOFT1 0x80 |
484 | field SOFT0 0x40 | 491 | field SOFT0 0x40 |
485 | field SOFTCMDEN 0x20 | 492 | field SOFTCMDEN 0x20 |
@@ -492,6 +499,7 @@ register SPIOCAP { | |||
492 | 499 | ||
493 | register BRDCTL { | 500 | register BRDCTL { |
494 | address 0x01d | 501 | address 0x01d |
502 | count 11 | ||
495 | field BRDDAT7 0x80 | 503 | field BRDDAT7 0x80 |
496 | field BRDDAT6 0x40 | 504 | field BRDDAT6 0x40 |
497 | field BRDDAT5 0x20 | 505 | field BRDDAT5 0x20 |
@@ -534,6 +542,7 @@ register BRDCTL { | |||
534 | */ | 542 | */ |
535 | register SEECTL { | 543 | register SEECTL { |
536 | address 0x01e | 544 | address 0x01e |
545 | count 11 | ||
537 | field EXTARBACK 0x80 | 546 | field EXTARBACK 0x80 |
538 | field EXTARBREQ 0x40 | 547 | field EXTARBREQ 0x40 |
539 | field SEEMS 0x20 | 548 | field SEEMS 0x20 |
@@ -570,6 +579,7 @@ register SBLKCTL { | |||
570 | register SEQCTL { | 579 | register SEQCTL { |
571 | address 0x060 | 580 | address 0x060 |
572 | access_mode RW | 581 | access_mode RW |
582 | count 15 | ||
573 | field PERRORDIS 0x80 | 583 | field PERRORDIS 0x80 |
574 | field PAUSEDIS 0x40 | 584 | field PAUSEDIS 0x40 |
575 | field FAILDIS 0x20 | 585 | field FAILDIS 0x20 |
@@ -590,6 +600,7 @@ register SEQCTL { | |||
590 | register SEQRAM { | 600 | register SEQRAM { |
591 | address 0x061 | 601 | address 0x061 |
592 | access_mode RW | 602 | access_mode RW |
603 | count 2 | ||
593 | } | 604 | } |
594 | 605 | ||
595 | /* | 606 | /* |
@@ -604,6 +615,7 @@ register SEQADDR0 { | |||
604 | register SEQADDR1 { | 615 | register SEQADDR1 { |
605 | address 0x063 | 616 | address 0x063 |
606 | access_mode RW | 617 | access_mode RW |
618 | count 8 | ||
607 | mask SEQADDR1_MASK 0x01 | 619 | mask SEQADDR1_MASK 0x01 |
608 | } | 620 | } |
609 | 621 | ||
@@ -649,6 +661,7 @@ register NONE { | |||
649 | register FLAGS { | 661 | register FLAGS { |
650 | address 0x06b | 662 | address 0x06b |
651 | access_mode RO | 663 | access_mode RO |
664 | count 18 | ||
652 | field ZERO 0x02 | 665 | field ZERO 0x02 |
653 | field CARRY 0x01 | 666 | field CARRY 0x01 |
654 | } | 667 | } |
@@ -671,6 +684,7 @@ register FUNCTION1 { | |||
671 | register STACK { | 684 | register STACK { |
672 | address 0x06f | 685 | address 0x06f |
673 | access_mode RO | 686 | access_mode RO |
687 | count 5 | ||
674 | } | 688 | } |
675 | 689 | ||
676 | const STACK_SIZE 4 | 690 | const STACK_SIZE 4 |
@@ -692,6 +706,7 @@ register BCTL { | |||
692 | register DSCOMMAND0 { | 706 | register DSCOMMAND0 { |
693 | address 0x084 | 707 | address 0x084 |
694 | access_mode RW | 708 | access_mode RW |
709 | count 7 | ||
695 | field CACHETHEN 0x80 /* Cache Threshold enable */ | 710 | field CACHETHEN 0x80 /* Cache Threshold enable */ |
696 | field DPARCKEN 0x40 /* Data Parity Check Enable */ | 711 | field DPARCKEN 0x40 /* Data Parity Check Enable */ |
697 | field MPARCKEN 0x20 /* Memory Parity Check Enable */ | 712 | field MPARCKEN 0x20 /* Memory Parity Check Enable */ |
@@ -717,6 +732,7 @@ register DSCOMMAND1 { | |||
717 | register BUSTIME { | 732 | register BUSTIME { |
718 | address 0x085 | 733 | address 0x085 |
719 | access_mode RW | 734 | access_mode RW |
735 | count 2 | ||
720 | mask BOFF 0xf0 | 736 | mask BOFF 0xf0 |
721 | mask BON 0x0f | 737 | mask BON 0x0f |
722 | } | 738 | } |
@@ -727,6 +743,7 @@ register BUSTIME { | |||
727 | register BUSSPD { | 743 | register BUSSPD { |
728 | address 0x086 | 744 | address 0x086 |
729 | access_mode RW | 745 | access_mode RW |
746 | count 2 | ||
730 | mask DFTHRSH 0xc0 | 747 | mask DFTHRSH 0xc0 |
731 | mask STBOFF 0x38 | 748 | mask STBOFF 0x38 |
732 | mask STBON 0x07 | 749 | mask STBON 0x07 |
@@ -737,6 +754,7 @@ register BUSSPD { | |||
737 | /* aic7850/55/60/70/80/95 only */ | 754 | /* aic7850/55/60/70/80/95 only */ |
738 | register DSPCISTATUS { | 755 | register DSPCISTATUS { |
739 | address 0x086 | 756 | address 0x086 |
757 | count 4 | ||
740 | mask DFTHRSH_100 0xc0 | 758 | mask DFTHRSH_100 0xc0 |
741 | } | 759 | } |
742 | 760 | ||
@@ -758,6 +776,7 @@ const SEQ_MAILBOX_SHIFT 0 | |||
758 | register HCNTRL { | 776 | register HCNTRL { |
759 | address 0x087 | 777 | address 0x087 |
760 | access_mode RW | 778 | access_mode RW |
779 | count 14 | ||
761 | field POWRDN 0x40 | 780 | field POWRDN 0x40 |
762 | field SWINT 0x10 | 781 | field SWINT 0x10 |
763 | field IRQMS 0x08 | 782 | field IRQMS 0x08 |
@@ -869,6 +888,7 @@ register INTSTAT { | |||
869 | register ERROR { | 888 | register ERROR { |
870 | address 0x092 | 889 | address 0x092 |
871 | access_mode RO | 890 | access_mode RO |
891 | count 26 | ||
872 | field CIOPARERR 0x80 /* Ultra2 only */ | 892 | field CIOPARERR 0x80 /* Ultra2 only */ |
873 | field PCIERRSTAT 0x40 /* PCI only */ | 893 | field PCIERRSTAT 0x40 /* PCI only */ |
874 | field MPARERR 0x20 /* PCI only */ | 894 | field MPARERR 0x20 /* PCI only */ |
@@ -885,6 +905,7 @@ register ERROR { | |||
885 | register CLRINT { | 905 | register CLRINT { |
886 | address 0x092 | 906 | address 0x092 |
887 | access_mode WO | 907 | access_mode WO |
908 | count 24 | ||
888 | field CLRPARERR 0x10 /* PCI only */ | 909 | field CLRPARERR 0x10 /* PCI only */ |
889 | field CLRBRKADRINT 0x08 | 910 | field CLRBRKADRINT 0x08 |
890 | field CLRSCSIINT 0x04 | 911 | field CLRSCSIINT 0x04 |
@@ -943,6 +964,7 @@ register DFDAT { | |||
943 | register SCBCNT { | 964 | register SCBCNT { |
944 | address 0x09a | 965 | address 0x09a |
945 | access_mode RW | 966 | access_mode RW |
967 | count 1 | ||
946 | field SCBAUTO 0x80 | 968 | field SCBAUTO 0x80 |
947 | mask SCBCNT_MASK 0x1f | 969 | mask SCBCNT_MASK 0x1f |
948 | } | 970 | } |
@@ -954,6 +976,7 @@ register SCBCNT { | |||
954 | register QINFIFO { | 976 | register QINFIFO { |
955 | address 0x09b | 977 | address 0x09b |
956 | access_mode RW | 978 | access_mode RW |
979 | count 12 | ||
957 | } | 980 | } |
958 | 981 | ||
959 | /* | 982 | /* |
@@ -972,11 +995,13 @@ register QINCNT { | |||
972 | register QOUTFIFO { | 995 | register QOUTFIFO { |
973 | address 0x09d | 996 | address 0x09d |
974 | access_mode WO | 997 | access_mode WO |
998 | count 7 | ||
975 | } | 999 | } |
976 | 1000 | ||
977 | register CRCCONTROL1 { | 1001 | register CRCCONTROL1 { |
978 | address 0x09d | 1002 | address 0x09d |
979 | access_mode RW | 1003 | access_mode RW |
1004 | count 3 | ||
980 | field CRCONSEEN 0x80 | 1005 | field CRCONSEEN 0x80 |
981 | field CRCVALCHKEN 0x40 | 1006 | field CRCVALCHKEN 0x40 |
982 | field CRCENDCHKEN 0x20 | 1007 | field CRCENDCHKEN 0x20 |
@@ -1013,6 +1038,7 @@ register SCSIPHASE { | |||
1013 | register SFUNCT { | 1038 | register SFUNCT { |
1014 | address 0x09f | 1039 | address 0x09f |
1015 | access_mode RW | 1040 | access_mode RW |
1041 | count 4 | ||
1016 | field ALT_MODE 0x80 | 1042 | field ALT_MODE 0x80 |
1017 | } | 1043 | } |
1018 | 1044 | ||
@@ -1095,6 +1121,7 @@ scb { | |||
1095 | } | 1121 | } |
1096 | SCB_SCSIOFFSET { | 1122 | SCB_SCSIOFFSET { |
1097 | size 1 | 1123 | size 1 |
1124 | count 1 | ||
1098 | } | 1125 | } |
1099 | SCB_NEXT { | 1126 | SCB_NEXT { |
1100 | size 1 | 1127 | size 1 |
@@ -1118,6 +1145,7 @@ const SG_SIZEOF 0x08 /* sizeof(struct ahc_dma) */ | |||
1118 | register SEECTL_2840 { | 1145 | register SEECTL_2840 { |
1119 | address 0x0c0 | 1146 | address 0x0c0 |
1120 | access_mode RW | 1147 | access_mode RW |
1148 | count 2 | ||
1121 | field CS_2840 0x04 | 1149 | field CS_2840 0x04 |
1122 | field CK_2840 0x02 | 1150 | field CK_2840 0x02 |
1123 | field DO_2840 0x01 | 1151 | field DO_2840 0x01 |
@@ -1126,6 +1154,7 @@ register SEECTL_2840 { | |||
1126 | register STATUS_2840 { | 1154 | register STATUS_2840 { |
1127 | address 0x0c1 | 1155 | address 0x0c1 |
1128 | access_mode RW | 1156 | access_mode RW |
1157 | count 4 | ||
1129 | field EEPROM_TF 0x80 | 1158 | field EEPROM_TF 0x80 |
1130 | mask BIOS_SEL 0x60 | 1159 | mask BIOS_SEL 0x60 |
1131 | mask ADSEL 0x1e | 1160 | mask ADSEL 0x1e |
@@ -1161,6 +1190,7 @@ register CCSGCTL { | |||
1161 | 1190 | ||
1162 | register CCSCBCNT { | 1191 | register CCSCBCNT { |
1163 | address 0xEF | 1192 | address 0xEF |
1193 | count 1 | ||
1164 | } | 1194 | } |
1165 | 1195 | ||
1166 | register CCSCBCTL { | 1196 | register CCSCBCTL { |
@@ -1187,6 +1217,7 @@ register CCSCBRAM { | |||
1187 | register SCBBADDR { | 1217 | register SCBBADDR { |
1188 | address 0x0F0 | 1218 | address 0x0F0 |
1189 | access_mode RW | 1219 | access_mode RW |
1220 | count 3 | ||
1190 | } | 1221 | } |
1191 | 1222 | ||
1192 | register CCSCBPTR { | 1223 | register CCSCBPTR { |
@@ -1195,6 +1226,7 @@ register CCSCBPTR { | |||
1195 | 1226 | ||
1196 | register HNSCB_QOFF { | 1227 | register HNSCB_QOFF { |
1197 | address 0x0F4 | 1228 | address 0x0F4 |
1229 | count 4 | ||
1198 | } | 1230 | } |
1199 | 1231 | ||
1200 | register SNSCB_QOFF { | 1232 | register SNSCB_QOFF { |
@@ -1234,6 +1266,7 @@ register DFF_THRSH { | |||
1234 | mask WR_DFTHRSH_85 0x50 | 1266 | mask WR_DFTHRSH_85 0x50 |
1235 | mask WR_DFTHRSH_90 0x60 | 1267 | mask WR_DFTHRSH_90 0x60 |
1236 | mask WR_DFTHRSH_MAX 0x70 | 1268 | mask WR_DFTHRSH_MAX 0x70 |
1269 | count 4 | ||
1237 | } | 1270 | } |
1238 | 1271 | ||
1239 | register SG_CACHE_PRE { | 1272 | register SG_CACHE_PRE { |
@@ -1287,6 +1320,7 @@ scratch_ram { | |||
1287 | ULTRA_ENB { | 1320 | ULTRA_ENB { |
1288 | alias CMDSIZE_TABLE | 1321 | alias CMDSIZE_TABLE |
1289 | size 2 | 1322 | size 2 |
1323 | count 2 | ||
1290 | } | 1324 | } |
1291 | /* | 1325 | /* |
1292 | * Bit vector of targets that have disconnection disabled as set by | 1326 | * Bit vector of targets that have disconnection disabled as set by |
@@ -1296,6 +1330,7 @@ scratch_ram { | |||
1296 | */ | 1330 | */ |
1297 | DISC_DSB { | 1331 | DISC_DSB { |
1298 | size 2 | 1332 | size 2 |
1333 | count 6 | ||
1299 | } | 1334 | } |
1300 | CMDSIZE_TABLE_TAIL { | 1335 | CMDSIZE_TABLE_TAIL { |
1301 | size 4 | 1336 | size 4 |
@@ -1323,6 +1358,7 @@ scratch_ram { | |||
1323 | /* Parameters for DMA Logic */ | 1358 | /* Parameters for DMA Logic */ |
1324 | DMAPARAMS { | 1359 | DMAPARAMS { |
1325 | size 1 | 1360 | size 1 |
1361 | count 12 | ||
1326 | field PRELOADEN 0x80 | 1362 | field PRELOADEN 0x80 |
1327 | field WIDEODD 0x40 | 1363 | field WIDEODD 0x40 |
1328 | field SCSIEN 0x20 | 1364 | field SCSIEN 0x20 |
@@ -1441,6 +1477,7 @@ scratch_ram { | |||
1441 | } | 1477 | } |
1442 | ARG_1 { | 1478 | ARG_1 { |
1443 | size 1 | 1479 | size 1 |
1480 | count 1 | ||
1444 | mask SEND_MSG 0x80 | 1481 | mask SEND_MSG 0x80 |
1445 | mask SEND_SENSE 0x40 | 1482 | mask SEND_SENSE 0x40 |
1446 | mask SEND_REJ 0x20 | 1483 | mask SEND_REJ 0x20 |
@@ -1495,6 +1532,7 @@ scratch_ram { | |||
1495 | size 1 | 1532 | size 1 |
1496 | field HA_274_EXTENDED_TRANS 0x01 | 1533 | field HA_274_EXTENDED_TRANS 0x01 |
1497 | alias INITIATOR_TAG | 1534 | alias INITIATOR_TAG |
1535 | count 1 | ||
1498 | } | 1536 | } |
1499 | 1537 | ||
1500 | SEQ_FLAGS2 { | 1538 | SEQ_FLAGS2 { |
@@ -1518,6 +1556,7 @@ scratch_ram { | |||
1518 | */ | 1556 | */ |
1519 | SCSICONF { | 1557 | SCSICONF { |
1520 | size 1 | 1558 | size 1 |
1559 | count 12 | ||
1521 | field TERM_ENB 0x80 | 1560 | field TERM_ENB 0x80 |
1522 | field RESET_SCSI 0x40 | 1561 | field RESET_SCSI 0x40 |
1523 | field ENSPCHK 0x20 | 1562 | field ENSPCHK 0x20 |
@@ -1527,16 +1566,19 @@ scratch_ram { | |||
1527 | INTDEF { | 1566 | INTDEF { |
1528 | address 0x05c | 1567 | address 0x05c |
1529 | size 1 | 1568 | size 1 |
1569 | count 1 | ||
1530 | field EDGE_TRIG 0x80 | 1570 | field EDGE_TRIG 0x80 |
1531 | mask VECTOR 0x0f | 1571 | mask VECTOR 0x0f |
1532 | } | 1572 | } |
1533 | HOSTCONF { | 1573 | HOSTCONF { |
1534 | address 0x05d | 1574 | address 0x05d |
1535 | size 1 | 1575 | size 1 |
1576 | count 1 | ||
1536 | } | 1577 | } |
1537 | HA_274_BIOSCTRL { | 1578 | HA_274_BIOSCTRL { |
1538 | address 0x05f | 1579 | address 0x05f |
1539 | size 1 | 1580 | size 1 |
1581 | count 1 | ||
1540 | mask BIOSMODE 0x30 | 1582 | mask BIOSMODE 0x30 |
1541 | mask BIOSDISABLED 0x30 | 1583 | mask BIOSDISABLED 0x30 |
1542 | field CHANNEL_B_PRIMARY 0x08 | 1584 | field CHANNEL_B_PRIMARY 0x08 |
@@ -1552,6 +1594,7 @@ scratch_ram { | |||
1552 | */ | 1594 | */ |
1553 | TARG_OFFSET { | 1595 | TARG_OFFSET { |
1554 | size 16 | 1596 | size 16 |
1597 | count 1 | ||
1555 | } | 1598 | } |
1556 | } | 1599 | } |
1557 | 1600 | ||
diff --git a/drivers/scsi/aic7xxx/aicasm/aicasm.c b/drivers/scsi/aic7xxx/aicasm/aicasm.c index 924102720b14..e4a778720301 100644 --- a/drivers/scsi/aic7xxx/aicasm/aicasm.c +++ b/drivers/scsi/aic7xxx/aicasm/aicasm.c | |||
@@ -362,7 +362,7 @@ output_code() | |||
362 | " *\n" | 362 | " *\n" |
363 | "%s */\n", versions); | 363 | "%s */\n", versions); |
364 | 364 | ||
365 | fprintf(ofile, "static uint8_t seqprog[] = {\n"); | 365 | fprintf(ofile, "static const uint8_t seqprog[] = {\n"); |
366 | for (cur_instr = STAILQ_FIRST(&seq_program); | 366 | for (cur_instr = STAILQ_FIRST(&seq_program); |
367 | cur_instr != NULL; | 367 | cur_instr != NULL; |
368 | cur_instr = STAILQ_NEXT(cur_instr, links)) { | 368 | cur_instr = STAILQ_NEXT(cur_instr, links)) { |
@@ -415,7 +415,7 @@ output_code() | |||
415 | } | 415 | } |
416 | 416 | ||
417 | fprintf(ofile, | 417 | fprintf(ofile, |
418 | "static struct patch {\n" | 418 | "static const struct patch {\n" |
419 | " %spatch_func_t *patch_func;\n" | 419 | " %spatch_func_t *patch_func;\n" |
420 | " uint32_t begin :10,\n" | 420 | " uint32_t begin :10,\n" |
421 | " skip_instr :10,\n" | 421 | " skip_instr :10,\n" |
@@ -435,7 +435,7 @@ output_code() | |||
435 | fprintf(ofile, "\n};\n\n"); | 435 | fprintf(ofile, "\n};\n\n"); |
436 | 436 | ||
437 | fprintf(ofile, | 437 | fprintf(ofile, |
438 | "static struct cs {\n" | 438 | "static const struct cs {\n" |
439 | " uint16_t begin;\n" | 439 | " uint16_t begin;\n" |
440 | " uint16_t end;\n" | 440 | " uint16_t end;\n" |
441 | "} critical_sections[] = {\n"); | 441 | "} critical_sections[] = {\n"); |
diff --git a/drivers/scsi/aic7xxx/aicasm/aicasm_gram.y b/drivers/scsi/aic7xxx/aicasm/aicasm_gram.y index e1079dd3cc28..81be6a261cc8 100644 --- a/drivers/scsi/aic7xxx/aicasm/aicasm_gram.y +++ b/drivers/scsi/aic7xxx/aicasm/aicasm_gram.y | |||
@@ -143,6 +143,8 @@ void yyerror(const char *string); | |||
143 | 143 | ||
144 | %token <value> T_ADDRESS | 144 | %token <value> T_ADDRESS |
145 | 145 | ||
146 | %token T_COUNT | ||
147 | |||
146 | %token T_ACCESS_MODE | 148 | %token T_ACCESS_MODE |
147 | 149 | ||
148 | %token T_MODES | 150 | %token T_MODES |
@@ -353,6 +355,7 @@ reg_attribute_list: | |||
353 | reg_attribute: | 355 | reg_attribute: |
354 | reg_address | 356 | reg_address |
355 | | size | 357 | | size |
358 | | count | ||
356 | | access_mode | 359 | | access_mode |
357 | | modes | 360 | | modes |
358 | | field_defn | 361 | | field_defn |
@@ -393,6 +396,13 @@ size: | |||
393 | } | 396 | } |
394 | ; | 397 | ; |
395 | 398 | ||
399 | count: | ||
400 | T_COUNT T_NUMBER | ||
401 | { | ||
402 | cur_symbol->count += $2; | ||
403 | } | ||
404 | ; | ||
405 | |||
396 | access_mode: | 406 | access_mode: |
397 | T_ACCESS_MODE T_MODE | 407 | T_ACCESS_MODE T_MODE |
398 | { | 408 | { |
@@ -801,6 +811,7 @@ scratch_ram: | |||
801 | cur_symtype = SRAMLOC; | 811 | cur_symtype = SRAMLOC; |
802 | cur_symbol->type = SRAMLOC; | 812 | cur_symbol->type = SRAMLOC; |
803 | initialize_symbol(cur_symbol); | 813 | initialize_symbol(cur_symbol); |
814 | cur_symbol->count += 1; | ||
804 | } | 815 | } |
805 | reg_address | 816 | reg_address |
806 | { | 817 | { |
@@ -832,6 +843,7 @@ scb: | |||
832 | initialize_symbol(cur_symbol); | 843 | initialize_symbol(cur_symbol); |
833 | /* 64 bytes of SCB space */ | 844 | /* 64 bytes of SCB space */ |
834 | cur_symbol->info.rinfo->size = 64; | 845 | cur_symbol->info.rinfo->size = 64; |
846 | cur_symbol->count += 1; | ||
835 | } | 847 | } |
836 | reg_address | 848 | reg_address |
837 | { | 849 | { |
diff --git a/drivers/scsi/aic7xxx/aicasm/aicasm_scan.l b/drivers/scsi/aic7xxx/aicasm/aicasm_scan.l index 62b6c1bc82c6..2c7f02daf88d 100644 --- a/drivers/scsi/aic7xxx/aicasm/aicasm_scan.l +++ b/drivers/scsi/aic7xxx/aicasm/aicasm_scan.l | |||
@@ -162,6 +162,7 @@ register { return T_REGISTER; } | |||
162 | const { yylval.value = FALSE; return T_CONST; } | 162 | const { yylval.value = FALSE; return T_CONST; } |
163 | download { return T_DOWNLOAD; } | 163 | download { return T_DOWNLOAD; } |
164 | address { return T_ADDRESS; } | 164 | address { return T_ADDRESS; } |
165 | count { return T_COUNT; } | ||
165 | access_mode { return T_ACCESS_MODE; } | 166 | access_mode { return T_ACCESS_MODE; } |
166 | modes { return T_MODES; } | 167 | modes { return T_MODES; } |
167 | RW|RO|WO { | 168 | RW|RO|WO { |
diff --git a/drivers/scsi/aic7xxx/aicasm/aicasm_symbol.c b/drivers/scsi/aic7xxx/aicasm/aicasm_symbol.c index f1f448dff569..fcd357872b43 100644 --- a/drivers/scsi/aic7xxx/aicasm/aicasm_symbol.c +++ b/drivers/scsi/aic7xxx/aicasm/aicasm_symbol.c | |||
@@ -77,6 +77,7 @@ symbol_create(char *name) | |||
77 | if (new_symbol->name == NULL) | 77 | if (new_symbol->name == NULL) |
78 | stop("Unable to strdup symbol name", EX_SOFTWARE); | 78 | stop("Unable to strdup symbol name", EX_SOFTWARE); |
79 | new_symbol->type = UNINITIALIZED; | 79 | new_symbol->type = UNINITIALIZED; |
80 | new_symbol->count = 1; | ||
80 | return (new_symbol); | 81 | return (new_symbol); |
81 | } | 82 | } |
82 | 83 | ||
@@ -198,6 +199,12 @@ symtable_get(char *name) | |||
198 | } | 199 | } |
199 | } | 200 | } |
200 | memcpy(&stored_ptr, data.data, sizeof(stored_ptr)); | 201 | memcpy(&stored_ptr, data.data, sizeof(stored_ptr)); |
202 | stored_ptr->count++; | ||
203 | data.data = &stored_ptr; | ||
204 | if (symtable->put(symtable, &key, &data, /*flags*/0) !=0) { | ||
205 | perror("Symtable put failed"); | ||
206 | exit(EX_SOFTWARE); | ||
207 | } | ||
201 | return (stored_ptr); | 208 | return (stored_ptr); |
202 | } | 209 | } |
203 | 210 | ||
@@ -256,7 +263,7 @@ symlist_add(symlist_t *symlist, symbol_t *symbol, int how) | |||
256 | && (curnode->symbol->info.finfo->value > | 263 | && (curnode->symbol->info.finfo->value > |
257 | newnode->symbol->info.finfo->value)))) | 264 | newnode->symbol->info.finfo->value)))) |
258 | || (!field && (curnode->symbol->info.rinfo->address > | 265 | || (!field && (curnode->symbol->info.rinfo->address > |
259 | newnode->symbol->info.rinfo->address))) { | 266 | newnode->symbol->info.rinfo->address))) { |
260 | SLIST_INSERT_HEAD(symlist, newnode, links); | 267 | SLIST_INSERT_HEAD(symlist, newnode, links); |
261 | return; | 268 | return; |
262 | } | 269 | } |
@@ -271,7 +278,7 @@ symlist_add(symlist_t *symlist, symbol_t *symbol, int how) | |||
271 | 278 | ||
272 | cursymbol = SLIST_NEXT(curnode, links)->symbol; | 279 | cursymbol = SLIST_NEXT(curnode, links)->symbol; |
273 | if ((field | 280 | if ((field |
274 | && (cursymbol->type > symbol->type | 281 | && (cursymbol->type > symbol->type |
275 | || (cursymbol->type == symbol->type | 282 | || (cursymbol->type == symbol->type |
276 | && (cursymbol->info.finfo->value > | 283 | && (cursymbol->info.finfo->value > |
277 | symbol->info.finfo->value)))) | 284 | symbol->info.finfo->value)))) |
@@ -351,7 +358,7 @@ aic_print_reg_dump_types(FILE *ofile) | |||
351 | { | 358 | { |
352 | if (ofile == NULL) | 359 | if (ofile == NULL) |
353 | return; | 360 | return; |
354 | 361 | ||
355 | fprintf(ofile, | 362 | fprintf(ofile, |
356 | "typedef int (%sreg_print_t)(u_int, u_int *, u_int);\n" | 363 | "typedef int (%sreg_print_t)(u_int, u_int *, u_int);\n" |
357 | "typedef struct %sreg_parse_entry {\n" | 364 | "typedef struct %sreg_parse_entry {\n" |
@@ -370,7 +377,7 @@ aic_print_reg_dump_start(FILE *dfile, symbol_node_t *regnode) | |||
370 | return; | 377 | return; |
371 | 378 | ||
372 | fprintf(dfile, | 379 | fprintf(dfile, |
373 | "static %sreg_parse_entry_t %s_parse_table[] = {\n", | 380 | "static const %sreg_parse_entry_t %s_parse_table[] = {\n", |
374 | prefix, | 381 | prefix, |
375 | regnode->symbol->name); | 382 | regnode->symbol->name); |
376 | } | 383 | } |
@@ -385,7 +392,7 @@ aic_print_reg_dump_end(FILE *ofile, FILE *dfile, | |||
385 | lower_name = strdup(regnode->symbol->name); | 392 | lower_name = strdup(regnode->symbol->name); |
386 | if (lower_name == NULL) | 393 | if (lower_name == NULL) |
387 | stop("Unable to strdup symbol name", EX_SOFTWARE); | 394 | stop("Unable to strdup symbol name", EX_SOFTWARE); |
388 | 395 | ||
389 | for (letter = lower_name; *letter != '\0'; letter++) | 396 | for (letter = lower_name; *letter != '\0'; letter++) |
390 | *letter = tolower(*letter); | 397 | *letter = tolower(*letter); |
391 | 398 | ||
@@ -472,6 +479,7 @@ symtable_dump(FILE *ofile, FILE *dfile) | |||
472 | DBT key; | 479 | DBT key; |
473 | DBT data; | 480 | DBT data; |
474 | int flag; | 481 | int flag; |
482 | int reg_count = 0, reg_used = 0; | ||
475 | u_int i; | 483 | u_int i; |
476 | 484 | ||
477 | if (symtable == NULL) | 485 | if (symtable == NULL) |
@@ -541,6 +549,9 @@ symtable_dump(FILE *ofile, FILE *dfile) | |||
541 | int num_entries; | 549 | int num_entries; |
542 | 550 | ||
543 | num_entries = 0; | 551 | num_entries = 0; |
552 | reg_count++; | ||
553 | if (curnode->symbol->count == 1) | ||
554 | break; | ||
544 | fields = &curnode->symbol->info.rinfo->fields; | 555 | fields = &curnode->symbol->info.rinfo->fields; |
545 | SLIST_FOREACH(fieldnode, fields, links) { | 556 | SLIST_FOREACH(fieldnode, fields, links) { |
546 | if (num_entries == 0) | 557 | if (num_entries == 0) |
@@ -553,11 +564,14 @@ symtable_dump(FILE *ofile, FILE *dfile) | |||
553 | } | 564 | } |
554 | aic_print_reg_dump_end(ofile, dfile, | 565 | aic_print_reg_dump_end(ofile, dfile, |
555 | curnode, num_entries); | 566 | curnode, num_entries); |
567 | reg_used++; | ||
556 | } | 568 | } |
557 | default: | 569 | default: |
558 | break; | 570 | break; |
559 | } | 571 | } |
560 | } | 572 | } |
573 | fprintf(stderr, "%s: %d of %d register definitions used\n", appname, | ||
574 | reg_used, reg_count); | ||
561 | 575 | ||
562 | /* Fold in the masks and bits */ | 576 | /* Fold in the masks and bits */ |
563 | while (SLIST_FIRST(&masks) != NULL) { | 577 | while (SLIST_FIRST(&masks) != NULL) { |
@@ -646,7 +660,6 @@ symtable_dump(FILE *ofile, FILE *dfile) | |||
646 | free(curnode); | 660 | free(curnode); |
647 | } | 661 | } |
648 | 662 | ||
649 | |||
650 | fprintf(ofile, "\n\n/* Downloaded Constant Definitions */\n"); | 663 | fprintf(ofile, "\n\n/* Downloaded Constant Definitions */\n"); |
651 | 664 | ||
652 | for (i = 0; SLIST_FIRST(&download_constants) != NULL; i++) { | 665 | for (i = 0; SLIST_FIRST(&download_constants) != NULL; i++) { |
diff --git a/drivers/scsi/aic7xxx/aicasm/aicasm_symbol.h b/drivers/scsi/aic7xxx/aicasm/aicasm_symbol.h index afc22e8b4903..05190c1a2fb7 100644 --- a/drivers/scsi/aic7xxx/aicasm/aicasm_symbol.h +++ b/drivers/scsi/aic7xxx/aicasm/aicasm_symbol.h | |||
@@ -128,6 +128,7 @@ typedef struct expression_info { | |||
128 | typedef struct symbol { | 128 | typedef struct symbol { |
129 | char *name; | 129 | char *name; |
130 | symtype type; | 130 | symtype type; |
131 | int count; | ||
131 | union { | 132 | union { |
132 | struct reg_info *rinfo; | 133 | struct reg_info *rinfo; |
133 | struct field_info *finfo; | 134 | struct field_info *finfo; |