1*b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */ 21da177e4SLinus Torvalds #ifndef _AHA152X_H 31da177e4SLinus Torvalds #define _AHA152X_H 41da177e4SLinus Torvalds 51da177e4SLinus Torvalds /* 61da177e4SLinus Torvalds * $Id: aha152x.h,v 2.7 2004/01/24 11:39:03 fischer Exp $ 71da177e4SLinus Torvalds */ 81da177e4SLinus Torvalds 91da177e4SLinus Torvalds /* number of queueable commands 101da177e4SLinus Torvalds (unless we support more than 1 cmd_per_lun this should do) */ 111da177e4SLinus Torvalds #define AHA152X_MAXQUEUE 7 121da177e4SLinus Torvalds 131da177e4SLinus Torvalds #define AHA152X_REVID "Adaptec 152x SCSI driver; $Revision: 2.7 $" 141da177e4SLinus Torvalds 151da177e4SLinus Torvalds /* port addresses */ 161da177e4SLinus Torvalds #define SCSISEQ (HOSTIOPORT0+0x00) /* SCSI sequence control */ 171da177e4SLinus Torvalds #define SXFRCTL0 (HOSTIOPORT0+0x01) /* SCSI transfer control 0 */ 181da177e4SLinus Torvalds #define SXFRCTL1 (HOSTIOPORT0+0x02) /* SCSI transfer control 1 */ 191da177e4SLinus Torvalds #define SCSISIG (HOSTIOPORT0+0x03) /* SCSI signal in/out */ 201da177e4SLinus Torvalds #define SCSIRATE (HOSTIOPORT0+0x04) /* SCSI rate control */ 211da177e4SLinus Torvalds #define SELID (HOSTIOPORT0+0x05) /* selection/reselection ID */ 221da177e4SLinus Torvalds #define SCSIID SELID /* SCSI ID */ 231da177e4SLinus Torvalds #define SCSIDAT (HOSTIOPORT0+0x06) /* SCSI latched data */ 241da177e4SLinus Torvalds #define SCSIBUS (HOSTIOPORT0+0x07) /* SCSI data bus */ 251da177e4SLinus Torvalds #define STCNT0 (HOSTIOPORT0+0x08) /* SCSI transfer count 0 */ 261da177e4SLinus Torvalds #define STCNT1 (HOSTIOPORT0+0x09) /* SCSI transfer count 1 */ 271da177e4SLinus Torvalds #define STCNT2 (HOSTIOPORT0+0x0a) /* SCSI transfer count 2 */ 281da177e4SLinus Torvalds #define SSTAT0 (HOSTIOPORT0+0x0b) /* SCSI interrupt status 0 */ 291da177e4SLinus Torvalds #define SSTAT1 (HOSTIOPORT0+0x0c) /* SCSI interrupt status 1 */ 301da177e4SLinus Torvalds #define SSTAT2 (HOSTIOPORT0+0x0d) /* SCSI interrupt status 2 */ 311da177e4SLinus Torvalds #define SCSITEST (HOSTIOPORT0+0x0e) /* SCSI test control */ 321da177e4SLinus Torvalds #define SSTAT3 SCSITEST /* SCSI interrupt status 3 */ 331da177e4SLinus Torvalds #define SSTAT4 (HOSTIOPORT0+0x0f) /* SCSI status 4 */ 341da177e4SLinus Torvalds #define SIMODE0 (HOSTIOPORT1+0x10) /* SCSI interrupt mode 0 */ 351da177e4SLinus Torvalds #define SIMODE1 (HOSTIOPORT1+0x11) /* SCSI interrupt mode 1 */ 361da177e4SLinus Torvalds #define DMACNTRL0 (HOSTIOPORT1+0x12) /* DMA control 0 */ 371da177e4SLinus Torvalds #define DMACNTRL1 (HOSTIOPORT1+0x13) /* DMA control 1 */ 381da177e4SLinus Torvalds #define DMASTAT (HOSTIOPORT1+0x14) /* DMA status */ 391da177e4SLinus Torvalds #define FIFOSTAT (HOSTIOPORT1+0x15) /* FIFO status */ 401da177e4SLinus Torvalds #define DATAPORT (HOSTIOPORT1+0x16) /* DATA port */ 411da177e4SLinus Torvalds #define BRSTCNTRL (HOSTIOPORT1+0x18) /* burst control */ 421da177e4SLinus Torvalds #define PORTA (HOSTIOPORT1+0x1a) /* PORT A */ 431da177e4SLinus Torvalds #define PORTB (HOSTIOPORT1+0x1b) /* PORT B */ 441da177e4SLinus Torvalds #define REV (HOSTIOPORT1+0x1c) /* revision */ 451da177e4SLinus Torvalds #define STACK (HOSTIOPORT1+0x1d) /* stack */ 461da177e4SLinus Torvalds #define TEST (HOSTIOPORT1+0x1e) /* test register */ 471da177e4SLinus Torvalds 481da177e4SLinus Torvalds #define IO_RANGE 0x20 491da177e4SLinus Torvalds 501da177e4SLinus Torvalds /* used in aha152x_porttest */ 511da177e4SLinus Torvalds #define O_PORTA 0x1a /* PORT A */ 521da177e4SLinus Torvalds #define O_PORTB 0x1b /* PORT B */ 531da177e4SLinus Torvalds #define O_DMACNTRL1 0x13 /* DMA control 1 */ 541da177e4SLinus Torvalds #define O_STACK 0x1d /* stack */ 551da177e4SLinus Torvalds 561da177e4SLinus Torvalds /* used in tc1550_porttest */ 571da177e4SLinus Torvalds #define O_TC_PORTA 0x0a /* PORT A */ 581da177e4SLinus Torvalds #define O_TC_PORTB 0x0b /* PORT B */ 591da177e4SLinus Torvalds #define O_TC_DMACNTRL1 0x03 /* DMA control 1 */ 601da177e4SLinus Torvalds #define O_TC_STACK 0x0d /* stack */ 611da177e4SLinus Torvalds 621da177e4SLinus Torvalds /* bits and bitmasks to ports */ 631da177e4SLinus Torvalds 641da177e4SLinus Torvalds /* SCSI sequence control */ 651da177e4SLinus Torvalds #define TEMODEO 0x80 661da177e4SLinus Torvalds #define ENSELO 0x40 671da177e4SLinus Torvalds #define ENSELI 0x20 681da177e4SLinus Torvalds #define ENRESELI 0x10 691da177e4SLinus Torvalds #define ENAUTOATNO 0x08 701da177e4SLinus Torvalds #define ENAUTOATNI 0x04 711da177e4SLinus Torvalds #define ENAUTOATNP 0x02 721da177e4SLinus Torvalds #define SCSIRSTO 0x01 731da177e4SLinus Torvalds 741da177e4SLinus Torvalds /* SCSI transfer control 0 */ 751da177e4SLinus Torvalds #define SCSIEN 0x80 761da177e4SLinus Torvalds #define DMAEN 0x40 771da177e4SLinus Torvalds #define CH1 0x20 781da177e4SLinus Torvalds #define CLRSTCNT 0x10 791da177e4SLinus Torvalds #define SPIOEN 0x08 801da177e4SLinus Torvalds #define CLRCH1 0x02 811da177e4SLinus Torvalds 821da177e4SLinus Torvalds /* SCSI transfer control 1 */ 831da177e4SLinus Torvalds #define BITBUCKET 0x80 841da177e4SLinus Torvalds #define SWRAPEN 0x40 851da177e4SLinus Torvalds #define ENSPCHK 0x20 861da177e4SLinus Torvalds #define STIMESEL 0x18 /* mask */ 871da177e4SLinus Torvalds #define STIMESEL_ 3 881da177e4SLinus Torvalds #define ENSTIMER 0x04 891da177e4SLinus Torvalds #define BYTEALIGN 0x02 901da177e4SLinus Torvalds 911da177e4SLinus Torvalds /* SCSI signal IN */ 921da177e4SLinus Torvalds #define SIG_CDI 0x80 931da177e4SLinus Torvalds #define SIG_IOI 0x40 941da177e4SLinus Torvalds #define SIG_MSGI 0x20 951da177e4SLinus Torvalds #define SIG_ATNI 0x10 961da177e4SLinus Torvalds #define SIG_SELI 0x08 971da177e4SLinus Torvalds #define SIG_BSYI 0x04 981da177e4SLinus Torvalds #define SIG_REQI 0x02 991da177e4SLinus Torvalds #define SIG_ACKI 0x01 1001da177e4SLinus Torvalds 1011da177e4SLinus Torvalds /* SCSI Phases */ 1021da177e4SLinus Torvalds #define P_MASK (SIG_MSGI|SIG_CDI|SIG_IOI) 1031da177e4SLinus Torvalds #define P_DATAO (0) 1041da177e4SLinus Torvalds #define P_DATAI (SIG_IOI) 1051da177e4SLinus Torvalds #define P_CMD (SIG_CDI) 1061da177e4SLinus Torvalds #define P_STATUS (SIG_CDI|SIG_IOI) 1071da177e4SLinus Torvalds #define P_MSGO (SIG_MSGI|SIG_CDI) 1081da177e4SLinus Torvalds #define P_MSGI (SIG_MSGI|SIG_CDI|SIG_IOI) 1091da177e4SLinus Torvalds 1101da177e4SLinus Torvalds /* SCSI signal OUT */ 1111da177e4SLinus Torvalds #define SIG_CDO 0x80 1121da177e4SLinus Torvalds #define SIG_IOO 0x40 1131da177e4SLinus Torvalds #define SIG_MSGO 0x20 1141da177e4SLinus Torvalds #define SIG_ATNO 0x10 1151da177e4SLinus Torvalds #define SIG_SELO 0x08 1161da177e4SLinus Torvalds #define SIG_BSYO 0x04 1171da177e4SLinus Torvalds #define SIG_REQO 0x02 1181da177e4SLinus Torvalds #define SIG_ACKO 0x01 1191da177e4SLinus Torvalds 1201da177e4SLinus Torvalds /* SCSI rate control */ 1211da177e4SLinus Torvalds #define SXFR 0x70 /* mask */ 1221da177e4SLinus Torvalds #define SXFR_ 4 1231da177e4SLinus Torvalds #define SOFS 0x0f /* mask */ 1241da177e4SLinus Torvalds 1251da177e4SLinus Torvalds /* SCSI ID */ 1261da177e4SLinus Torvalds #define OID 0x70 1271da177e4SLinus Torvalds #define OID_ 4 1281da177e4SLinus Torvalds #define TID 0x07 1291da177e4SLinus Torvalds 1301da177e4SLinus Torvalds /* SCSI transfer count */ 1311da177e4SLinus Torvalds #define GETSTCNT() ( (GETPORT(STCNT2)<<16) \ 1321da177e4SLinus Torvalds + (GETPORT(STCNT1)<< 8) \ 1331da177e4SLinus Torvalds + GETPORT(STCNT0) ) 1341da177e4SLinus Torvalds 1351da177e4SLinus Torvalds #define SETSTCNT(X) { SETPORT(STCNT2, ((X) & 0xFF0000) >> 16); \ 1361da177e4SLinus Torvalds SETPORT(STCNT1, ((X) & 0x00FF00) >> 8); \ 1371da177e4SLinus Torvalds SETPORT(STCNT0, ((X) & 0x0000FF) ); } 1381da177e4SLinus Torvalds 1391da177e4SLinus Torvalds /* SCSI interrupt status */ 1401da177e4SLinus Torvalds #define TARGET 0x80 1411da177e4SLinus Torvalds #define SELDO 0x40 1421da177e4SLinus Torvalds #define SELDI 0x20 1431da177e4SLinus Torvalds #define SELINGO 0x10 1441da177e4SLinus Torvalds #define SWRAP 0x08 1451da177e4SLinus Torvalds #define SDONE 0x04 1461da177e4SLinus Torvalds #define SPIORDY 0x02 1471da177e4SLinus Torvalds #define DMADONE 0x01 1481da177e4SLinus Torvalds 1491da177e4SLinus Torvalds #define SETSDONE 0x80 1501da177e4SLinus Torvalds #define CLRSELDO 0x40 1511da177e4SLinus Torvalds #define CLRSELDI 0x20 1521da177e4SLinus Torvalds #define CLRSELINGO 0x10 1531da177e4SLinus Torvalds #define CLRSWRAP 0x08 1541da177e4SLinus Torvalds #define CLRSDONE 0x04 1551da177e4SLinus Torvalds #define CLRSPIORDY 0x02 1561da177e4SLinus Torvalds #define CLRDMADONE 0x01 1571da177e4SLinus Torvalds 1581da177e4SLinus Torvalds /* SCSI status 1 */ 1591da177e4SLinus Torvalds #define SELTO 0x80 1601da177e4SLinus Torvalds #define ATNTARG 0x40 1611da177e4SLinus Torvalds #define SCSIRSTI 0x20 1621da177e4SLinus Torvalds #define PHASEMIS 0x10 1631da177e4SLinus Torvalds #define BUSFREE 0x08 1641da177e4SLinus Torvalds #define SCSIPERR 0x04 1651da177e4SLinus Torvalds #define PHASECHG 0x02 1661da177e4SLinus Torvalds #define REQINIT 0x01 1671da177e4SLinus Torvalds 1681da177e4SLinus Torvalds #define CLRSELTIMO 0x80 1691da177e4SLinus Torvalds #define CLRATNO 0x40 1701da177e4SLinus Torvalds #define CLRSCSIRSTI 0x20 1711da177e4SLinus Torvalds #define CLRBUSFREE 0x08 1721da177e4SLinus Torvalds #define CLRSCSIPERR 0x04 1731da177e4SLinus Torvalds #define CLRPHASECHG 0x02 1741da177e4SLinus Torvalds #define CLRREQINIT 0x01 1751da177e4SLinus Torvalds 1761da177e4SLinus Torvalds /* SCSI status 2 */ 1771da177e4SLinus Torvalds #define SOFFSET 0x20 1781da177e4SLinus Torvalds #define SEMPTY 0x10 1791da177e4SLinus Torvalds #define SFULL 0x08 1801da177e4SLinus Torvalds #define SFCNT 0x07 /* mask */ 1811da177e4SLinus Torvalds 1821da177e4SLinus Torvalds /* SCSI status 3 */ 1831da177e4SLinus Torvalds #define SCSICNT 0xf0 /* mask */ 1841da177e4SLinus Torvalds #define SCSICNT_ 4 1851da177e4SLinus Torvalds #define OFFCNT 0x0f /* mask */ 1861da177e4SLinus Torvalds 1871da177e4SLinus Torvalds /* SCSI TEST control */ 1881da177e4SLinus Torvalds #define SCTESTU 0x08 1891da177e4SLinus Torvalds #define SCTESTD 0x04 1901da177e4SLinus Torvalds #define STCTEST 0x01 1911da177e4SLinus Torvalds 1921da177e4SLinus Torvalds /* SCSI status 4 */ 1931da177e4SLinus Torvalds #define SYNCERR 0x04 1941da177e4SLinus Torvalds #define FWERR 0x02 1951da177e4SLinus Torvalds #define FRERR 0x01 1961da177e4SLinus Torvalds 1971da177e4SLinus Torvalds #define CLRSYNCERR 0x04 1981da177e4SLinus Torvalds #define CLRFWERR 0x02 1991da177e4SLinus Torvalds #define CLRFRERR 0x01 2001da177e4SLinus Torvalds 2011da177e4SLinus Torvalds /* SCSI interrupt mode 0 */ 2021da177e4SLinus Torvalds #define ENSELDO 0x40 2031da177e4SLinus Torvalds #define ENSELDI 0x20 2041da177e4SLinus Torvalds #define ENSELINGO 0x10 2051da177e4SLinus Torvalds #define ENSWRAP 0x08 2061da177e4SLinus Torvalds #define ENSDONE 0x04 2071da177e4SLinus Torvalds #define ENSPIORDY 0x02 2081da177e4SLinus Torvalds #define ENDMADONE 0x01 2091da177e4SLinus Torvalds 2101da177e4SLinus Torvalds /* SCSI interrupt mode 1 */ 2111da177e4SLinus Torvalds #define ENSELTIMO 0x80 2121da177e4SLinus Torvalds #define ENATNTARG 0x40 2131da177e4SLinus Torvalds #define ENSCSIRST 0x20 2141da177e4SLinus Torvalds #define ENPHASEMIS 0x10 2151da177e4SLinus Torvalds #define ENBUSFREE 0x08 2161da177e4SLinus Torvalds #define ENSCSIPERR 0x04 2171da177e4SLinus Torvalds #define ENPHASECHG 0x02 2181da177e4SLinus Torvalds #define ENREQINIT 0x01 2191da177e4SLinus Torvalds 2201da177e4SLinus Torvalds /* DMA control 0 */ 2211da177e4SLinus Torvalds #define ENDMA 0x80 2221da177e4SLinus Torvalds #define _8BIT 0x40 2231da177e4SLinus Torvalds #define DMA 0x20 2241da177e4SLinus Torvalds #define WRITE_READ 0x08 2251da177e4SLinus Torvalds #define INTEN 0x04 2261da177e4SLinus Torvalds #define RSTFIFO 0x02 2271da177e4SLinus Torvalds #define SWINT 0x01 2281da177e4SLinus Torvalds 2291da177e4SLinus Torvalds /* DMA control 1 */ 2301da177e4SLinus Torvalds #define PWRDWN 0x80 2311da177e4SLinus Torvalds #define STK 0x07 /* mask */ 2321da177e4SLinus Torvalds 2331da177e4SLinus Torvalds /* DMA status */ 2341da177e4SLinus Torvalds #define ATDONE 0x80 2351da177e4SLinus Torvalds #define WORDRDY 0x40 2361da177e4SLinus Torvalds #define INTSTAT 0x20 2371da177e4SLinus Torvalds #define DFIFOFULL 0x10 2381da177e4SLinus Torvalds #define DFIFOEMP 0x08 2391da177e4SLinus Torvalds 2401da177e4SLinus Torvalds /* BURST control */ 2411da177e4SLinus Torvalds #define BON 0xf0 2421da177e4SLinus Torvalds #define BOFF 0x0f 2431da177e4SLinus Torvalds 2441da177e4SLinus Torvalds /* TEST REGISTER */ 2451da177e4SLinus Torvalds #define BOFFTMR 0x40 2461da177e4SLinus Torvalds #define BONTMR 0x20 2471da177e4SLinus Torvalds #define STCNTH 0x10 2481da177e4SLinus Torvalds #define STCNTM 0x08 2491da177e4SLinus Torvalds #define STCNTL 0x04 2501da177e4SLinus Torvalds #define SCSIBLK 0x02 2511da177e4SLinus Torvalds #define DMABLK 0x01 2521da177e4SLinus Torvalds 2531da177e4SLinus Torvalds /* On the AHA-152x board PORTA and PORTB contain 2541da177e4SLinus Torvalds some information about the board's configuration. */ 2551da177e4SLinus Torvalds typedef union { 2561da177e4SLinus Torvalds struct { 2571da177e4SLinus Torvalds unsigned reserved:2; /* reserved */ 2581da177e4SLinus Torvalds unsigned tardisc:1; /* Target disconnect: 0=disabled, 1=enabled */ 2591da177e4SLinus Torvalds unsigned syncneg:1; /* Initial sync neg: 0=disabled, 1=enabled */ 2601da177e4SLinus Torvalds unsigned msgclasses:2; /* Message classes 2611da177e4SLinus Torvalds 0=#4 2621da177e4SLinus Torvalds 1=#0, #1, #2, #3, #4 2631da177e4SLinus Torvalds 2=#0, #3, #4 2641da177e4SLinus Torvalds 3=#0, #4 2651da177e4SLinus Torvalds */ 2661da177e4SLinus Torvalds unsigned boot:1; /* boot: 0=disabled, 1=enabled */ 2671da177e4SLinus Torvalds unsigned dma:1; /* Transfer mode: 0=PIO; 1=DMA */ 2681da177e4SLinus Torvalds unsigned id:3; /* SCSI-id */ 2691da177e4SLinus Torvalds unsigned irq:2; /* IRQ-Channel: 0,3=12, 1=10, 2=11 */ 2701da177e4SLinus Torvalds unsigned dmachan:2; /* DMA-Channel: 0=0, 1=5, 2=6, 3=7 */ 2711da177e4SLinus Torvalds unsigned parity:1; /* SCSI-parity: 1=enabled 0=disabled */ 2721da177e4SLinus Torvalds } fields; 2731da177e4SLinus Torvalds unsigned short port; 2741da177e4SLinus Torvalds } aha152x_config ; 2751da177e4SLinus Torvalds 2761da177e4SLinus Torvalds #define cf_parity fields.parity 2771da177e4SLinus Torvalds #define cf_dmachan fields.dmachan 2781da177e4SLinus Torvalds #define cf_irq fields.irq 2791da177e4SLinus Torvalds #define cf_id fields.id 2801da177e4SLinus Torvalds #define cf_dma fields.dma 2811da177e4SLinus Torvalds #define cf_boot fields.boot 2821da177e4SLinus Torvalds #define cf_msgclasses fields.msgclasses 2831da177e4SLinus Torvalds #define cf_syncneg fields.syncneg 2841da177e4SLinus Torvalds #define cf_tardisc fields.tardisc 2851da177e4SLinus Torvalds #define cf_port port 2861da177e4SLinus Torvalds 2871da177e4SLinus Torvalds /* Some macros to manipulate ports and their bits */ 2881da177e4SLinus Torvalds 2891da177e4SLinus Torvalds #define SETPORT(PORT, VAL) outb( (VAL), (PORT) ) 2901da177e4SLinus Torvalds #define GETPORT(PORT) inb( PORT ) 2911da177e4SLinus Torvalds #define SETBITS(PORT, BITS) outb( (inb(PORT) | (BITS)), (PORT) ) 2921da177e4SLinus Torvalds #define CLRBITS(PORT, BITS) outb( (inb(PORT) & ~(BITS)), (PORT) ) 2931da177e4SLinus Torvalds #define TESTHI(PORT, BITS) ((inb(PORT) & (BITS)) == (BITS)) 2941da177e4SLinus Torvalds #define TESTLO(PORT, BITS) ((inb(PORT) & (BITS)) == 0) 2951da177e4SLinus Torvalds 2961da177e4SLinus Torvalds #define SETRATE(RATE) SETPORT(SCSIRATE,(RATE) & 0x7f) 2971da177e4SLinus Torvalds 2981da177e4SLinus Torvalds #if defined(AHA152X_DEBUG) 2991da177e4SLinus Torvalds enum { 3001da177e4SLinus Torvalds debug_procinfo = 0x0001, 3011da177e4SLinus Torvalds debug_queue = 0x0002, 30250535df3SBoaz Harrosh debug_locking = 0x0004, 3031da177e4SLinus Torvalds debug_intr = 0x0008, 3041da177e4SLinus Torvalds debug_selection = 0x0010, 3051da177e4SLinus Torvalds debug_msgo = 0x0020, 3061da177e4SLinus Torvalds debug_msgi = 0x0040, 3071da177e4SLinus Torvalds debug_status = 0x0080, 3081da177e4SLinus Torvalds debug_cmd = 0x0100, 3091da177e4SLinus Torvalds debug_datai = 0x0200, 3101da177e4SLinus Torvalds debug_datao = 0x0400, 3111da177e4SLinus Torvalds debug_eh = 0x0800, 3121da177e4SLinus Torvalds debug_done = 0x1000, 3131da177e4SLinus Torvalds debug_phases = 0x2000, 3141da177e4SLinus Torvalds }; 3151da177e4SLinus Torvalds #endif 3161da177e4SLinus Torvalds 3171da177e4SLinus Torvalds /* for the pcmcia stub */ 3181da177e4SLinus Torvalds struct aha152x_setup { 3191da177e4SLinus Torvalds int io_port; 3201da177e4SLinus Torvalds int irq; 3211da177e4SLinus Torvalds int scsiid; 3221da177e4SLinus Torvalds int reconnect; 3231da177e4SLinus Torvalds int parity; 3241da177e4SLinus Torvalds int synchronous; 3251da177e4SLinus Torvalds int delay; 3261da177e4SLinus Torvalds int ext_trans; 3271da177e4SLinus Torvalds int tc1550; 3281da177e4SLinus Torvalds #if defined(AHA152X_DEBUG) 3291da177e4SLinus Torvalds int debug; 3301da177e4SLinus Torvalds #endif 3311da177e4SLinus Torvalds char *conf; 3321da177e4SLinus Torvalds }; 3331da177e4SLinus Torvalds 3341da177e4SLinus Torvalds struct Scsi_Host *aha152x_probe_one(struct aha152x_setup *); 3351da177e4SLinus Torvalds void aha152x_release(struct Scsi_Host *); 336e2482fa1SJürgen E. Fischer int aha152x_host_reset_host(struct Scsi_Host *); 3371da177e4SLinus Torvalds 3381da177e4SLinus Torvalds #endif /* _AHA152X_H */ 339