/* will re-acquire region in install_wavefront() */ release_region (io_base, 16); 
static int __init detect_wavefront (int irq, int io_base){	unsigned char   rbuf[4], wbuf[4];	/* TB docs say the device takes up 8 ports, but we know that	   if there is an FX device present (i.e. a Tropez+) it really	   consumes 16.	*/	if (check_region (io_base, 16)) {		printk (KERN_ERR LOGNAME "IO address range 0x%x - 0x%x "			"already in use - ignored\n", dev.base,			dev.base+15);		return -1;	}  	dev.irq = irq;	dev.base = io_base;	dev.israw = 0;	dev.debug = debug_default;	dev.interrupts_on = 0;	dev.irq_cnt = 0;	dev.rom_samples_rdonly = 1; /* XXX default lock on ROM sample slots */	if (wavefront_cmd (WFC_FIRMWARE_VERSION, rbuf, wbuf) == 0) {		dev.fw_version[0] = rbuf[0];		dev.fw_version[1] = rbuf[1];		printk (KERN_INFO LOGNAME			"firmware %d.%d already loaded.\n",			rbuf[0], rbuf[1]);		/* check that a command actually works */      		if (wavefront_cmd (WFC_HARDWARE_VERSION,				   rbuf, wbuf) == 0) {			dev.hw_version[0] = rbuf[0];			dev.hw_version[1] = rbuf[1];		} else {			printk (KERN_WARNING LOGNAME "not raw, but no "				"hardware version!\n");			return 0;		}		if (!wf_raw) {			return 1;		} else {			printk (KERN_INFO LOGNAME				"reloading firmware anyway.\n");			dev.israw = 1;		}	} else {		dev.israw = 1;		printk (KERN_INFO LOGNAME			"no response to firmware probe, assume raw.\n");	}	init_waitqueue_head (&dev.interrupt_sleeper);	if (wavefront_hw_reset ()) {		printk (KERN_WARNING LOGNAME "hardware reset failed\n");		return 0;	}	/* Check for FX device, present only on Tropez+ */	dev.has_fx = (detect_wffx () == 0);	return 1;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/d61780c0d384939ef31c46b47442854d5def4623/wavfront.c/clean/sound/oss/wavfront.c