1/* 2 Copyright 1999, Be Incorporated. All Rights Reserved. 3 This file may be used under the terms of the Be Sample Code License. 4*/ 5 6#ifndef _SYM53C8XX_H 7#define _SYM53C8XX_H 8 9/*======================================================================*/ 10/* operating registers definitions */ 11 12#define sym_scntl0 0x00 /* scsi control 0 */ 13#define sym_scntl1 0x01 /* scsi control 1 */ 14#define sym_scntl2 0x02 /* scsi control 2 */ 15#define sym_scntl3 0x03 /* scsi control 3 */ 16#define sym_scid 0x04 /* scsi chip ID */ 17#define sym_sxfer 0x05 /* scsi transfer */ 18#define sym_sdid 0x06 /* scsi destination ID */ 19#define sym_gpreg 0x07 /* general purpose bits */ 20#define sym_sfbr 0x08 /* scsi first byte received */ 21#define sym_socl 0x09 /* scsi output control latch */ 22#define sym_ssid 0x0a /* scsi selector ID */ 23#define sym_sbcl 0x0b /* scsi bus control lines */ 24#define sym_dstat 0x0c /* dma status */ 25#define sym_sstat0 0x0d /* scsi status 0 */ 26#define sym_sstat1 0x0e /* scsi status 1 */ 27#define sym_sstat2 0x0f /* scsi status 2 */ 28#define sym_dsa 0x10 /* data structure address [4 bytes] */ 29#define sym_istat 0x14 /* interrupt status */ 30#define sym_ctest0 0x18 /* chip test 0 */ 31#define sym_ctest1 0x19 /* chip test 1 */ 32#define sym_ctest2 0x1a /* chip test 2 */ 33#define sym_ctest3 0x1b /* chip test 3 */ 34#define sym_temp 0x1c /* temporary stack [4 bytes] */ 35#define sym_dfifo 0x20 /* dma fifo */ 36#define sym_ctest4 0x21 /* chip test 4 */ 37#define sym_ctest5 0x22 /* chip test 5 */ 38#define sym_ctest6 0x23 /* chip test 6 */ 39#define sym_dbc 0x24 /* dma byte counter [3 bytes] */ 40#define sym_dcmd 0x27 /* dma command */ 41#define sym_dnad 0x28 /* dma next address for data [4 bytes] */ 42#define sym_dsp 0x2c /* dma scripts pointer [4 bytes] */ 43#define sym_dsps 0x30 /* dma scripts pointer save [4 bytes] */ 44#define sym_scratcha 0x34 /* general purpose scratch pad a [4 bytes] */ 45#define sym_dmode 0x38 /* dma mode */ 46#define sym_dien 0x39 /* dma interrupt enable */ 47#define sym_dwt 0x3a /* dma watchdog timer */ 48#define sym_dcntl 0x3b /* dma control */ 49#define sym_adder 0x3c /* sum output of internal adder [4 bytes] */ 50#define sym_sien0 0x40 /* scsi interrupt enable 0 */ 51#define sym_sien1 0x41 /* scsi interrupt enable 1 */ 52#define sym_sist0 0x42 /* scsi interrupt status 0 */ 53#define sym_sist1 0x43 /* scsi interrupt status 1 */ 54#define sym_slpar 0x44 /* scsi longitudinal parity */ 55#define sym_macntl 0x46 /* memory access control */ 56#define sym_gpcntl 0x47 /* general purpose control */ 57#define sym_stime0 0x48 /* scsi timer 0 */ 58#define sym_stime1 0x49 /* scsi timer 1 */ 59#define sym_respid 0x4a /* responce ID */ 60#define sym_stest0 0x4c /* scsi test 0 */ 61#define sym_stest1 0x4d /* scsi test 1 */ 62#define sym_stest2 0x4e /* scsi test 2 */ 63#define sym_stest3 0x4f /* scsi test 3 */ 64#define sym_sidl 0x50 /* scsi input data latch */ 65#define sym_stest4 0x52 /* new with 895/896 */ 66#define sym_sodl 0x54 /* scsi output data latch */ 67#define sym_sbdl 0x58 /* scsi bus data lines */ 68#define sym_scratchb 0x5c /* general purpose scratch pad b [4 bytes] */ 69 70 71/*----------------------------------------------------------------------*/ 72/* operating registers bit definitions */ 73 74/* 0x00 - scntl0 (scsi control 0) bit definitions */ 75 76#define sym_scntl0_trg 0x01 /* target mode [1 = target, 0 = initiator */ 77#define sym_scntl0_aap 0x02 /* assert SATN on parity */ 78#define sym_scntl0_epc 0x08 /* enable parity checking */ 79#define sym_scntl0_watn 0x10 /* select with SATN on a start sequence */ 80#define sym_scntl0_start 0x20 /* start sequence */ 81#define sym_scntl0_arb0 0x40 /* arbitration mode bit 0 */ 82#define sym_scntl0_arb1 0x80 /* arbitration mode bit 1 */ 83 84 85/* 0x01 - scntl1 (scsi control 1) bit definitions */ 86 87#define sym_scntl1_sst 0x01 /* start scsi transfer */ 88#define sym_scntl1_iarb 0x02 /* immediate arbitration */ 89#define sym_scntl1_aesp 0x04 /* assert even scsi parity (force bad parity) */ 90#define sym_scntl1_rst 0x08 /* assert scsi RST signal */ 91#define sym_scntl1_con 0x10 /* connected */ 92#define sym_scntl1_dhp 0x20 /* disable halt on parity error or ATN */ 93#define sym_scntl1_adb 0x40 /* assert scsi data bus */ 94#define sym_scntl1_exc 0x80 /* extra clock cycle of data setup */ 95 96 97/* 0x02 - scntl2 (scsi control 2) bit definitions */ 98 99#define sym_scntl2_sdu 0x80 /* scsi disconnect unexpected */ 100 101 102/* 0x03 - scntl3 (scsi control 3) bit definitions */ 103 104#define sym_scntl3_ccf 0x07 /* clock conversion factor [mask] */ 105#define sym_scntl3_scf 0x70 /* synchronous clock conversion factor [mask] */ 106 107 108/* 0x04 - scid (scsi chip id) bit definitions */ 109 110#define sym_scid_enc 0x07 /* encoded scsi id [mask] */ 111#define sym_scid_sre 0x20 /* enable responce to selection */ 112#define sym_scid_rre 0x40 /* enable responce to reselection */ 113 114 115/* 0x05 - sxfer (scsi transfer) bit definitions */ 116 117#define sym_sxfer_mo 0x0f /* max scsi synchronous offset [mask] */ 118#define sym_sxfer_tp 0xe0 /* scsi synchronous transfer period [mask] */ 119 120 121/* 0x06 - sdid (scsi destination id) bit definitions */ 122 123#define sym_sdid_enc 0x07 /* encoded destination scsi id [mask] */ 124 125 126/* 0x07 - gpreg (general purpose) bit definitions */ 127 128#define sym_gpreg_gpio0 0x01 /* general purpose */ 129#define sym_gpreg_gpio1 0x02 /* general purpose */ 130 131 132/* 0x09 - socl (scsi output control latch) bit definitions */ 133 134#define sym_socl_io 0x01 /* assert i/o signal */ 135#define sym_socl_cd 0x02 /* assert c/d signal */ 136#define sym_socl_msg 0x04 /* assert msg signal */ 137#define sym_socl_atn 0x08 /* assert atn signal */ 138#define sym_socl_sel 0x10 /* assert sel signal */ 139#define sym_socl_bsy 0x20 /* assert bsy signal */ 140#define sym_socl_ack 0x40 /* assert ack signal */ 141#define sym_socl_req 0x80 /* assert req signal */ 142 143 144/* 0x0a - ssid (scsi selector id) bit definitions */ 145 146#define sym_ssid_encid 0x07 /* encoded destination scsi id [mask] */ 147#define sym_ssid_val 0x80 /* scsi valid bit */ 148 149 150/* 0x0b - sbcl (scsi bus control lines) bit definitions */ 151 152#define sym_sbcl_io 0x01 /* i/o status */ 153#define sym_sbcl_cd 0x02 /* c/d status */ 154#define sym_sbcl_msg 0x04 /* msg status */ 155#define sym_sbcl_atn 0x08 /* atn status */ 156#define sym_sbcl_sel 0x10 /* sel status */ 157#define sym_sbcl_bsy 0x20 /* bsy status */ 158#define sym_sbcl_ack 0x40 /* ack status */ 159#define sym_sbcl_req 0x80 /* req status */ 160 161 162/* 0x0c - dstat (dma status) bit definitions */ 163 164#define sym_dstat_iid 0x01 /* illegal instruction detected */ 165#define sym_dstat_sir 0x04 /* scripts interrupt instruction received */ 166#define sym_dstat_ssi 0x08 /* single step interrupt */ 167#define sym_dstat_abrt 0x10 /* aborted */ 168#define sym_dstat_bf 0x20 /* bus fault */ 169#define sym_dstat_mdpe 0x40 /* master data parity error */ 170#define sym_dstat_dfe 0x80 /* dma fifo empty */ 171 172 173/* 0x0d - sstat0 (scsi status 0) bit definitions */ 174 175#define sym_sstat0_sdp 0x01 /* scsi parity signal */ 176#define sym_sstat0_rst 0x02 /* scsi reset signal */ 177#define sym_sstat0_woa 0x04 /* won arbitration */ 178#define sym_sstat0_loa 0x08 /* lost arbitration */ 179#define sym_sstat0_aip 0x10 /* arbitration in progress */ 180#define sym_sstat0_olf 0x20 /* scsi output data latch full */ 181#define sym_sstat0_orf 0x40 /* scsi output data register full */ 182#define sym_sstat0_ilf 0x80 /* scsi input data latch full */ 183 184 185/* 0x0e - sstat1 (scsi status 1) bit definitions */ 186 187#define sym_sstat1_io 0x01 /* scsi i/o signal */ 188#define sym_sstat1_cd 0x02 /* scsi c/d signal */ 189#define sym_sstat1_msg 0x04 /* scsi msg signal */ 190#define sym_sstat1_sdpl 0x08 /* latched scsi parity */ 191#define sym_sstat1_fifo 0xf0 /* mask for fifo flags [mask] */ 192 193 194/* 0x0f - sstat2 (scsi status 2) bit definitions */ 195 196#define sym_sstat2_ldsc 0x02 /* last disconnect */ 197 198 199/* 0x14 - istat (interrupt status) bit definitions */ 200 201#define sym_istat_dip 0x01 /* dma interrupt pending */ 202#define sym_istat_sip 0x02 /* scsi interrupt pending */ 203#define sym_istat_intf 0x04 /* interrupt on the fly */ 204#define sym_istat_con 0x08 /* connected */ 205#define sym_istat_sem 0x10 /* semaphore */ 206#define sym_istat_sigp 0x20 /* signal process */ 207#define sym_istat_srst 0x40 /* software reset */ 208#define sym_istat_abrt 0x80 /* abort operation */ 209 210 211/* 0x19 - ctest1 (chip test 1) bit definitions */ 212 213#define sym_ctest1_ffl 0x0f /* byte empty in dma fifo [mask] */ 214#define sym_ctest1_fmt 0xf0 /* byte full in dma fifo [mask] */ 215 216 217/* 0x1a - ctest2 (chip test 2) bit definitions */ 218 219#define sym_ctest2_dack 0x01 /* data acknowledge status */ 220#define sym_ctest2_dreq 0x02 /* data request status */ 221#define sym_ctest2_teop 0x04 /* scsi true end of process */ 222#define sym_ctest2_cm 0x10 /* configured as memory */ 223#define sym_ctest2_cio 0x20 /* configured as i/o */ 224#define sym_ctest2_sigp 0x40 /* signal process */ 225#define sym_ctest2_ddir 0x80 /* data transfer direction */ 226 227 228/* 0x1b - ctest3 (chip test 3) bit definitions */ 229 230#define sym_ctest3_fm 0x02 /* fetch pin mode */ 231#define sym_ctest3_clf 0x04 /* clear dma fifo */ 232#define sym_ctest3_flf 0x08 /* flush dma fifo */ 233#define sym_ctest3_v 0xf0 /* chip revision level [mask] */ 234 235 236/* 0x20 - dfifo (dma fifo) bit definitions */ 237 238#define sym_dfifo_bo 0x7f /* byte offset counter */ 239 240 241/* 0x21 - ctest4 (chip test 4) bit definitions */ 242 243#define sym_ctest4_fbl 0x07 /* fifo byte control [mask] */ 244#define sym_ctest4_mpee 0x08 /* master parity error enable */ 245#define sym_ctest4_srtm 0x10 /* shadow register test mode */ 246#define sym_ctest4_zsd 0x20 /* scsi data high impedance */ 247#define sym_ctest4_zmod 0x40 /* high impedance mode */ 248#define sym_ctest4_bdis 0x80 /* burst disable */ 249 250/* 0x22 - ctest5 (chip test 5) bit definitions */ 251 252#define sym_ctest5_ddir 0x08 /* dma direction */ 253#define sym_ctest5_masr 0x10 /* master control for set or reset pulses */ 254#define sym_ctest5_bbck 0x40 /* clock byte counter */ 255#define sym_ctest5_adck 0x80 /* clock address incrementor */ 256 257 258/* 0x38 - dmode (dma mode) bit definitions */ 259 260#define sym_dmode_man 0x01 /* manual start mode */ 261#define sym_dmode_erl 0x08 /* enable read line */ 262#define sym_dmode_diom 0x10 /* destination i/o memory enable */ 263#define sym_dmode_siom 0x20 /* source i/o memory enable */ 264#define sym_dmode_bl 0xc0 /* burst length */ 265 266 267/* 0x39 - dien (dma interrupt enable) bit definitions */ 268 269#define sym_dien_iid 0x01 /* illegal instruction detected */ 270#define sym_dien_sir 0x04 /* scripts interrupt instruction received */ 271#define sym_dien_ssi 0x08 /* single step instruction */ 272#define sym_dien_abrt 0x10 /* aborted */ 273#define sym_dien_bf 0x20 /* bus fault */ 274#define sym_dien_mdpe 0x40 /* master data parity error */ 275 276 277/* 0x3b - dcntl (dma control) bit definitions */ 278 279#define sym_dcntl_com 0x01 /* 53c700 compatibility */ 280#define sym_dcntl_std 0x04 /* start dma operation */ 281#define sym_dcntl_irqm 0x08 /* irq mode */ 282#define sym_dcntl_ssm 0x10 /* single step mode */ 283 284 285/* 0x40 - sien0 (scsi interrupt enable 0) bit definitions */ 286 287#define sym_sien0_par 0x01 /* scsi parity error */ 288#define sym_sien0_rst 0x02 /* scsi reset condition */ 289#define sym_sien0_udc 0x04 /* unexpected disconnect */ 290#define sym_sien0_sge 0x08 /* scsi gross error */ 291#define sym_sien0_rsl 0x10 /* reselected */ 292#define sym_sien0_sel 0x20 /* selected */ 293#define sym_sien0_cmp 0x40 /* function complete */ 294#define sym_sien0_ma 0x80 /* scsi phase mismatch or scsi atn condition */ 295 296 297/* 0x41 - sien1 (scsi interrupt enable 1) bit definitions */ 298 299#define sym_sien1_hth 0x01 /* handshake to handshake timer expired */ 300#define sym_sien1_gen 0x02 /* general purpose timer expired */ 301#define sym_sien1_sto 0x04 /* selection or reselection timeout */ 302#define sym_sien1_sbmc 0x10 /* SCSI Bus Mode Change */ 303 304/* 0x42 - sist0 (scsi interrupt status 0) bit definitions */ 305 306#define sym_sist0_par 0x01 /* parity error */ 307#define sym_sist0_rst 0x02 /* scsi rst/received */ 308#define sym_sist0_udc 0x04 /* unexpected disconnect */ 309#define sym_sist0_sge 0x08 /* scsi gross error */ 310#define sym_sist0_rsl 0x10 /* reselected */ 311#define sym_sist0_sel 0x20 /* selected */ 312#define sym_sist0_cmp 0x40 /* function complete */ 313#define sym_sist0_ma 0x80 /* scsi phase mismatch or scsi atn condition */ 314 315 316/* 0x43 - sist1 (scsi interrupt status 1) bit definitions */ 317 318#define sym_sist1_hth 0x01 /* handshake to handshake timer expired */ 319#define sym_sist1_gen 0x02 /* general purpose timer expired */ 320#define sym_sist1_sto 0x04 /* selection or reselection timeout */ 321#define sym_sist1_sbmc 0x10 /* SCSI Bus Mode Change */ 322 323/* 0x46 - macntl (memory access control) bit definitions */ 324 325#define sym_macntl_scpts 0x01 /* scripts */ 326#define sym_macntl_pscpt 0x02 /* pointer scripts */ 327#define sym_macntl_drd 0x04 /* data read */ 328#define sym_macntl_dwr 0x08 /* data write */ 329#define sym_macntl_typ 0xf0 /* chip type [mask] */ 330 331 332/* 0x47 - gpcntl (general purpose pin control) bit definitions */ 333 334#define sym_gpcntl_gpio0 0x01 /* gpio 0 */ 335#define sym_gpcntl_gpio1 0x02 /* gpio 1 */ 336#define sym_gpcntl_fe 0x40 /* fetch enable */ 337#define sym_gpcntl_me 0x80 /* master enable */ 338 339 340/* 0x48 - stime0 (scsi timer 0) bit definitions */ 341 342#define sym_stime0_sel 0x07 /* selection time-out [mask] */ 343#define sym_stime0_hth 0xf8 /* handshake to handshake timer period [mask] */ 344 345 346/* 0x49 - stime1 (scsi timer 1) bit definitions */ 347 348#define sym_stime1_gen 0x0f /* general purpose timer period [mask] */ 349 350 351/* 0x4c - stest0 (scsi test 0) bit definitions */ 352 353#define sym_stest0_som 0x01 /* scsi synchronous offset maximum */ 354#define sym_stest0_soz 0x02 /* scsi synchronous offset zero */ 355#define sym_stest0_art 0x04 /* arbitration priority encoder test */ 356#define sym_stest0_slt 0x08 /* selection response logic test */ 357 358 359/* 0x4d - stest1 (scsi test 1) bit definitions */ 360 361#define sym_stest1_sclk 0x80 /* sclk */ 362 363 364/* 0x4e - stest2 (scsi test 2) bit definitions */ 365 366#define sym_stest2_low 0x01 /* scsi low level mode */ 367#define sym_stest2_ext 0x02 /* extend sreq/sack filtering */ 368#define sym_stest2_szm 0x08 /* scsi high-impedance mode */ 369#define sym_stest2_slb 0x10 /* scsi loopback mode */ 370#define sym_stest2_rof 0x40 /* reset scsi offset */ 371#define sym_stest2_sce 0x80 /* scsi control enable */ 372 373 374/* 0x4f - stest3 (scsi test 3) bit definitions */ 375 376#define sym_stest3_stw 0x01 /* scsi fifo test write */ 377#define sym_stest3_csf 0x02 /* clear scsi fifo */ 378#define sym_stest3_ttm 0x04 /* timer test mode */ 379#define sym_stest3_dsi 0x10 /* disable single initiator response */ 380#define sym_stest3_hsc 0x20 /* halt scsi clock */ 381#define sym_stest3_str 0x40 /* scsi fifo test read */ 382#define sym_stest3_te 0x80 /* tolerant enable */ 383 384#define sym_stest4_hvd 0x40 /* high voltage diff */ 385#define sym_stest4_se 0x80 /* single ended */ 386#define sym_stest4_lvd 0xc0 /* low voltage diff */ 387#define sym_stest4_lock 0x20 /* clock quadrupler locker */ 388 389#endif 390