/* Return values: 0: Failed 1: Succeeded or doesn't apply (not SUBMDL_ES1887)  */
int ess_dsp_init(sb_devc *devc, struct address_info *hw_config)
/* Return values: 0: Failed 1: Succeeded or doesn't apply (not SUBMDL_ES1887)  */
int ess_dsp_init(sb_devc *devc, struct address_info *hw_config)
{
	if (devc->model != MDL_ESS) {
		printk (KERN_INFO "ess_dsp_init for non ESS chip\n");
		return 1;
	}
	if (devc->submodel == SUBMDL_ES1887) {
		if (hw_config->dma2 != -1) {
			devc->dma16 = hw_config->dma2;
		}
		if (devc->dma8 != devc->dma16 && devc->dma16 != -1) {
			devc->duplex = 1;
		}
	}
	if (!ess_set_dma_hw (devc)) {
		free_irq(devc->irq, devc);
		return 0;
	}
	return 1;
}