adv_isa.c (39217) | adv_isa.c (40160) |
---|---|
1/* 2 * Device probe and attach routines for the following 3 * Advanced Systems Inc. SCSI controllers: 4 * 5 * Connectivity Products: 6 * ABP510/5150 - Bus-Master ISA (240 CDB) * 7 * ABP5140 - Bus-Master ISA PnP (16 CDB) * ** 8 * ABP5142 - Bus-Master ISA PnP with floppy (16 CDB) *** --- 30 unchanged lines hidden (view full) --- 39 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 40 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 41 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 42 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 43 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 44 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 45 * SUCH DAMAGE. 46 * | 1/* 2 * Device probe and attach routines for the following 3 * Advanced Systems Inc. SCSI controllers: 4 * 5 * Connectivity Products: 6 * ABP510/5150 - Bus-Master ISA (240 CDB) * 7 * ABP5140 - Bus-Master ISA PnP (16 CDB) * ** 8 * ABP5142 - Bus-Master ISA PnP with floppy (16 CDB) *** --- 30 unchanged lines hidden (view full) --- 39 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 40 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 41 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 42 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 43 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 44 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 45 * SUCH DAMAGE. 46 * |
47 * $Id: adv_isa.c,v 1.3 1997/02/22 09:35:51 peter Exp $ | 47 * $Id: adv_isa.c,v 1.4 1998/09/15 07:03:39 gibbs Exp $ |
48 */ 49 50#include <sys/param.h> 51#include <sys/systm.h> 52#include <sys/malloc.h> 53 54#include <machine/bus_pio.h> 55#include <machine/bus.h> --- 88 unchanged lines hidden (view full) --- 144 bus_size_t maxsegsz; 145 bus_size_t maxsize; 146 bus_addr_t lowaddr; 147 int error; 148 149 if (port_addr == 0) 150 /* Already been attached */ 151 continue; | 48 */ 49 50#include <sys/param.h> 51#include <sys/systm.h> 52#include <sys/malloc.h> 53 54#include <machine/bus_pio.h> 55#include <machine/bus.h> --- 88 unchanged lines hidden (view full) --- 144 bus_size_t maxsegsz; 145 bus_size_t maxsize; 146 bus_addr_t lowaddr; 147 int error; 148 149 if (port_addr == 0) 150 /* Already been attached */ 151 continue; |
152 /* 153 * Make sure that we do not conflict with another device's 154 * I/O address. 155 */ 156 if (haveseen_isadev(id, CC_IOADDR)) 157 continue; 158 |
|
152 if (adv_find_signature(I386_BUS_SPACE_IO, port_addr)) { 153 /* 154 * Got one. Now allocate our softc 155 * and see if we can initialize the card. 156 */ 157 struct adv_softc *adv; 158 adv = adv_alloc(id->id_unit, I386_BUS_SPACE_IO, 159 port_addr); --- 98 unchanged lines hidden (view full) --- 258 bus_dmamap_load(overrun_dmat, overrun_dmamap, 259 overrun_buf, ADV_OVERRUN_BSIZE, 260 adv_map, &overrun_physbase, 261 /*flags*/0); 262 } 263 264 adv->overrun_physbase = overrun_physbase; 265 | 159 if (adv_find_signature(I386_BUS_SPACE_IO, port_addr)) { 160 /* 161 * Got one. Now allocate our softc 162 * and see if we can initialize the card. 163 */ 164 struct adv_softc *adv; 165 adv = adv_alloc(id->id_unit, I386_BUS_SPACE_IO, 166 port_addr); --- 98 unchanged lines hidden (view full) --- 265 bus_dmamap_load(overrun_dmat, overrun_dmamap, 266 overrun_buf, ADV_OVERRUN_BSIZE, 267 adv_map, &overrun_physbase, 268 /*flags*/0); 269 } 270 271 adv->overrun_physbase = overrun_physbase; 272 |
273 /* 274 * OK, check to make sure that we're not stepping on 275 * someone else's IRQ or DRQ 276 */ 277 if (haveseen_isadev(id, CC_DRQ)) { 278 printf("advisaprobe: Aha card at I/O 0x%x's " 279 "drq %d conflicts, ignoring card.\n", 280 id->id_iobase, id->id_drq); 281 adv_free(adv); 282 return 0; 283 } 284 |
|
266 if (adv_init(adv) != 0) { 267 adv_free(adv); 268 return (0); 269 } 270 271 switch (adv->type) { 272 case ADV_ISAPNP: 273 if (adv->chip_version == ADV_CHIP_VER_ASYN_BUG){ --- 16 unchanged lines hidden (view full) --- 290 panic("advisaprobe: Invalid card type\n"); 291 } 292 293 /* Determine our IRQ */ 294 if (id->id_irq == 0 /* irq ? */) 295 id->id_irq = 1 << adv_get_chip_irq(adv); 296 else 297 adv_set_chip_irq(adv, ffs(id->id_irq) - 1); | 285 if (adv_init(adv) != 0) { 286 adv_free(adv); 287 return (0); 288 } 289 290 switch (adv->type) { 291 case ADV_ISAPNP: 292 if (adv->chip_version == ADV_CHIP_VER_ASYN_BUG){ --- 16 unchanged lines hidden (view full) --- 309 panic("advisaprobe: Invalid card type\n"); 310 } 311 312 /* Determine our IRQ */ 313 if (id->id_irq == 0 /* irq ? */) 314 id->id_irq = 1 << adv_get_chip_irq(adv); 315 else 316 adv_set_chip_irq(adv, ffs(id->id_irq) - 1); |
317 |
|
298 id->id_intr = adv_isa_intr; 299 300 /* Mark as probed */ 301 adv_isa_ioports[port_index] = 0; 302 return 1; 303 } 304 } 305 --- 73 unchanged lines hidden --- | 318 id->id_intr = adv_isa_intr; 319 320 /* Mark as probed */ 321 adv_isa_ioports[port_index] = 0; 322 return 1; 323 } 324 } 325 --- 73 unchanged lines hidden --- |