Lines Matching refs:ahc
62 static int aic7770_chip_init(struct ahc_softc *ahc);
63 static int aha2840_load_seeprom(struct ahc_softc *ahc);
125 aic7770_config(struct ahc_softc *ahc, struct aic7770_identity *entry, u_int io) in aic7770_config() argument
133 error = entry->setup(ahc); in aic7770_config()
138 error = aic7770_map_registers(ahc, io); in aic7770_config()
148 ahc_intr_enable(ahc, FALSE); in aic7770_config()
150 ahc->description = entry->name; in aic7770_config()
151 error = ahc_softc_init(ahc); in aic7770_config()
155 ahc->bus_chip_init = aic7770_chip_init; in aic7770_config()
157 error = ahc_reset(ahc, /*reinit*/FALSE); in aic7770_config()
162 intdef = ahc_inb(ahc, INTDEF); in aic7770_config()
178 ahc->flags |= AHC_EDGE_INTERRUPT; in aic7770_config()
180 switch (ahc->chip & (AHC_EISA|AHC_VL)) { in aic7770_config()
187 biosctrl = ahc_inb(ahc, HA_274_BIOSCTRL); in aic7770_config()
188 scsiconf = ahc_inb(ahc, SCSICONF); in aic7770_config()
189 scsiconf1 = ahc_inb(ahc, SCSICONF + 1); in aic7770_config()
193 ahc->flags |= 1; in aic7770_config()
196 ahc->flags |= AHC_USEDEFAULTS; in aic7770_config()
198 if ((ahc->features & AHC_WIDE) != 0) { in aic7770_config()
199 ahc->our_id = scsiconf1 & HWSCSIID; in aic7770_config()
201 ahc->flags |= AHC_TERM_ENB_A; in aic7770_config()
203 ahc->our_id = scsiconf & HSCSIID; in aic7770_config()
204 ahc->our_id_b = scsiconf1 & HSCSIID; in aic7770_config()
206 ahc->flags |= AHC_TERM_ENB_A; in aic7770_config()
208 ahc->flags |= AHC_TERM_ENB_B; in aic7770_config()
211 if ((ahc_inb(ahc, HA_274_BIOSGLOBAL) & HA_274_EXTENDED_TRANS)) in aic7770_config()
212 ahc->flags |= AHC_EXTENDED_TRANS_A|AHC_EXTENDED_TRANS_B; in aic7770_config()
217 have_seeprom = aha2840_load_seeprom(ahc); in aic7770_config()
224 kfree(ahc->seep_config); in aic7770_config()
225 ahc->seep_config = NULL; in aic7770_config()
231 ahc_outb(ahc, SBLKCTL, ahc_inb(ahc, SBLKCTL) & ~AUTOFLUSHDIS); in aic7770_config()
234 hostconf = ahc_inb(ahc, HOSTCONF); in aic7770_config()
235 ahc_outb(ahc, BUSSPD, hostconf & DFTHRSH); in aic7770_config()
236 ahc_outb(ahc, BUSTIME, (hostconf << 2) & BOFF); in aic7770_config()
238 ahc->bus_softc.aic7770_softc.busspd = hostconf & DFTHRSH; in aic7770_config()
239 ahc->bus_softc.aic7770_softc.bustime = (hostconf << 2) & BOFF; in aic7770_config()
244 error = ahc_init(ahc); in aic7770_config()
248 error = aic7770_map_int(ahc, irq); in aic7770_config()
252 ahc->init_level++; in aic7770_config()
257 ahc_outb(ahc, BCTL, ENABLE); in aic7770_config()
262 aic7770_chip_init(struct ahc_softc *ahc) in aic7770_chip_init() argument
264 ahc_outb(ahc, BUSSPD, ahc->bus_softc.aic7770_softc.busspd); in aic7770_chip_init()
265 ahc_outb(ahc, BUSTIME, ahc->bus_softc.aic7770_softc.bustime); in aic7770_chip_init()
266 ahc_outb(ahc, SBLKCTL, ahc_inb(ahc, SBLKCTL) & ~AUTOFLUSHDIS); in aic7770_chip_init()
267 ahc_outb(ahc, BCTL, ENABLE); in aic7770_chip_init()
268 return (ahc_chip_init(ahc)); in aic7770_chip_init()
275 aha2840_load_seeprom(struct ahc_softc *ahc) in aha2840_load_seeprom() argument
282 sd.sd_ahc = ahc; in aha2840_load_seeprom()
293 sc = ahc->seep_config; in aha2840_load_seeprom()
296 printk("%s: Reading SEEPROM...", ahc_name(ahc)); in aha2840_load_seeprom()
313 printk("%s: No SEEPROM available\n", ahc_name(ahc)); in aha2840_load_seeprom()
314 ahc->flags |= AHC_USEDEFAULTS; in aha2840_load_seeprom()
324 max_targ = (ahc->features & AHC_WIDE) != 0 ? 16 : 8; in aha2840_load_seeprom()
336 ahc_outb(ahc, TARG_SCSIRATE + i, target_settings); in aha2840_load_seeprom()
338 ahc_outb(ahc, DISC_DSB, ~(discenable & 0xff)); in aha2840_load_seeprom()
339 ahc_outb(ahc, DISC_DSB + 1, ~((discenable >> 8) & 0xff)); in aha2840_load_seeprom()
341 ahc->our_id = sc->brtime_id & CFSCSIID; in aha2840_load_seeprom()
343 scsi_conf = (ahc->our_id & 0x7); in aha2840_load_seeprom()
350 ahc->flags |= AHC_EXTENDED_TRANS_A; in aha2840_load_seeprom()
352 ahc_outb(ahc, SCSICONF, scsi_conf); in aha2840_load_seeprom()
355 ahc->flags |= AHC_TERM_ENB_A; in aha2840_load_seeprom()
361 ahc_aic7770_VL_setup(struct ahc_softc *ahc) in ahc_aic7770_VL_setup() argument
365 error = ahc_aic7770_setup(ahc); in ahc_aic7770_VL_setup()
366 ahc->chip |= AHC_VL; in ahc_aic7770_VL_setup()
371 ahc_aic7770_EISA_setup(struct ahc_softc *ahc) in ahc_aic7770_EISA_setup() argument
375 error = ahc_aic7770_setup(ahc); in ahc_aic7770_EISA_setup()
376 ahc->chip |= AHC_EISA; in ahc_aic7770_EISA_setup()
381 ahc_aic7770_setup(struct ahc_softc *ahc) in ahc_aic7770_setup() argument
383 ahc->channel = 'A'; in ahc_aic7770_setup()
384 ahc->channel_b = 'B'; in ahc_aic7770_setup()
385 ahc->chip = AHC_AIC7770; in ahc_aic7770_setup()
386 ahc->features = AHC_AIC7770_FE; in ahc_aic7770_setup()
387 ahc->bugs |= AHC_TMODE_WIDEODD_BUG; in ahc_aic7770_setup()
388 ahc->flags |= AHC_PAGESCBS; in ahc_aic7770_setup()
389 ahc->instruction_ram_size = 448; in ahc_aic7770_setup()