diff options
Diffstat (limited to 'sound/pci/emu10k1/emufx.c')
| -rw-r--r-- | sound/pci/emu10k1/emufx.c | 88 | 
1 files changed, 52 insertions, 36 deletions
diff --git a/sound/pci/emu10k1/emufx.c b/sound/pci/emu10k1/emufx.c index 0275209ca82..745f0627c63 100644 --- a/sound/pci/emu10k1/emufx.c +++ b/sound/pci/emu10k1/emufx.c @@ -1182,15 +1182,20 @@ static int _snd_emu10k1_audigy_init_efx(struct snd_emu10k1 *emu)  	u32 *gpr_map;  	mm_segment_t seg; -	if ((icode = kzalloc(sizeof(*icode), GFP_KERNEL)) == NULL || -	    (icode->gpr_map = (u_int32_t __user *) -	     kcalloc(512 + 256 + 256 + 2 * 1024, sizeof(u_int32_t), -		     GFP_KERNEL)) == NULL || -	    (controls = kcalloc(SND_EMU10K1_GPR_CONTROLS, -				sizeof(*controls), GFP_KERNEL)) == NULL) { -		err = -ENOMEM; -		goto __err; -	} +	err = -ENOMEM; +	icode = kzalloc(sizeof(*icode), GFP_KERNEL); +	if (!icode) +		return err; + +	icode->gpr_map = (u_int32_t __user *) kcalloc(512 + 256 + 256 + 2 * 1024, +						      sizeof(u_int32_t), GFP_KERNEL); +	if (!icode->gpr_map) +		goto __err_gpr; +	controls = kcalloc(SND_EMU10K1_GPR_CONTROLS, +			   sizeof(*controls), GFP_KERNEL); +	if (!controls) +		goto __err_ctrls; +  	gpr_map = (u32 __force *)icode->gpr_map;  	icode->tram_data_map = icode->gpr_map + 512; @@ -1542,7 +1547,7 @@ A_OP(icode, &ptr, iMAC0, A_GPR(var), A_GPR(var), A_GPR(vol), A_EXTIN(input))  	/* A_PUT_STEREO_OUTPUT(A_EXTOUT_FRONT_L, A_EXTOUT_FRONT_R, playback + SND_EMU10K1_PLAYBACK_CHANNELS); */  	if (emu->card_capabilities->emu_model) {  		/* EMU1010 Outputs from PCM Front, Rear, Center, LFE, Side */ -		snd_printk(KERN_INFO "EMU outputs on\n"); +		dev_info(emu->card->dev, "EMU outputs on\n");  		for (z = 0; z < 8; z++) {  			if (emu->card_capabilities->ca0108_chip) {  				A_OP(icode, &ptr, iACC3, A3_EMU32OUT(z), A_GPR(playback + SND_EMU10K1_PLAYBACK_CHANNELS + z), A_C_00000000, A_C_00000000); @@ -1566,7 +1571,9 @@ A_OP(icode, &ptr, iMAC0, A_GPR(var), A_GPR(var), A_GPR(vol), A_EXTIN(input))  		A_SWITCH(icode, &ptr, tmp + 1, playback + SND_EMU10K1_PLAYBACK_CHANNELS + z, tmp + 1);  		if ((z==1) && (emu->card_capabilities->spdif_bug)) {  			/* Due to a SPDIF output bug on some Audigy cards, this code delays the Right channel by 1 sample */ -			snd_printk(KERN_INFO "Installing spdif_bug patch: %s\n", emu->card_capabilities->name); +			dev_info(emu->card->dev, +				 "Installing spdif_bug patch: %s\n", +				 emu->card_capabilities->name);  			A_OP(icode, &ptr, iACC3, A_EXTOUT(A_EXTOUT_FRONT_L + z), A_GPR(gpr - 3), A_C_00000000, A_C_00000000);  			A_OP(icode, &ptr, iACC3, A_GPR(gpr - 3), A_GPR(tmp + 0), A_GPR(tmp + 1), A_C_00000000);  		} else { @@ -1590,7 +1597,7 @@ A_OP(icode, &ptr, iMAC0, A_GPR(var), A_GPR(var), A_GPR(vol), A_EXTIN(input))  	if (emu->card_capabilities->emu_model) {  		if (emu->card_capabilities->ca0108_chip) { -			snd_printk(KERN_INFO "EMU2 inputs on\n"); +			dev_info(emu->card->dev, "EMU2 inputs on\n");  			for (z = 0; z < 0x10; z++) {  				snd_emu10k1_audigy_dsp_convert_32_to_2x16( icode, &ptr, tmp,   									bit_shifter16, @@ -1598,11 +1605,11 @@ A_OP(icode, &ptr, iMAC0, A_GPR(var), A_GPR(var), A_GPR(vol), A_EXTIN(input))  									A_FXBUS2(z*2) );  			}  		} else { -			snd_printk(KERN_INFO "EMU inputs on\n"); +			dev_info(emu->card->dev, "EMU inputs on\n");  			/* Capture 16 (originally 8) channels of S32_LE sound */  			/* -			printk(KERN_DEBUG "emufx.c: gpr=0x%x, tmp=0x%x\n", +			dev_dbg(emu->card->dev, "emufx.c: gpr=0x%x, tmp=0x%x\n",  			       gpr, tmp);  			*/  			/* For the EMU1010: How to get 32bit values from the DSP. High 16bits into L, low 16bits into R. */ @@ -1741,12 +1748,12 @@ A_OP(icode, &ptr, iMAC0, A_GPR(var), A_GPR(var), A_GPR(vol), A_EXTIN(input))  	emu->support_tlv = 0; /* clear again */  	snd_leave_user(seg); - __err: +__err:  	kfree(controls); -	if (icode != NULL) { -		kfree((void __force *)icode->gpr_map); -		kfree(icode); -	} +__err_ctrls: +	kfree((void __force *)icode->gpr_map); +__err_gpr: +	kfree(icode);  	return err;  } @@ -1813,18 +1820,26 @@ static int _snd_emu10k1_init_efx(struct snd_emu10k1 *emu)  	u32 *gpr_map;  	mm_segment_t seg; -	if ((icode = kzalloc(sizeof(*icode), GFP_KERNEL)) == NULL) -		return -ENOMEM; -	if ((icode->gpr_map = (u_int32_t __user *) -	     kcalloc(256 + 160 + 160 + 2 * 512, sizeof(u_int32_t), -		     GFP_KERNEL)) == NULL || -            (controls = kcalloc(SND_EMU10K1_GPR_CONTROLS, -				sizeof(struct snd_emu10k1_fx8010_control_gpr), -				GFP_KERNEL)) == NULL || -	    (ipcm = kzalloc(sizeof(*ipcm), GFP_KERNEL)) == NULL) { -		err = -ENOMEM; -		goto __err; -	} +	err = -ENOMEM; +	icode = kzalloc(sizeof(*icode), GFP_KERNEL); +	if (!icode) +		return err; + +	icode->gpr_map = (u_int32_t __user *) kcalloc(256 + 160 + 160 + 2 * 512, +						      sizeof(u_int32_t), GFP_KERNEL); +	if (!icode->gpr_map) +		goto __err_gpr; + +	controls = kcalloc(SND_EMU10K1_GPR_CONTROLS, +			   sizeof(struct snd_emu10k1_fx8010_control_gpr), +			   GFP_KERNEL); +	if (!controls) +		goto __err_ctrls; + +	ipcm = kzalloc(sizeof(*ipcm), GFP_KERNEL); +	if (!ipcm) +		goto __err_ipcm; +  	gpr_map = (u32 __force *)icode->gpr_map;  	icode->tram_data_map = icode->gpr_map + 256; @@ -2363,13 +2378,14 @@ static int _snd_emu10k1_init_efx(struct snd_emu10k1 *emu)  	snd_leave_user(seg);  	if (err >= 0)  		err = snd_emu10k1_ipcm_poke(emu, ipcm); -      __err: +__err:  	kfree(ipcm); +__err_ipcm:  	kfree(controls); -	if (icode != NULL) { -		kfree((void __force *)icode->gpr_map); -		kfree(icode); -	} +__err_ctrls: +	kfree((void __force *)icode->gpr_map); +__err_gpr: +	kfree(icode);  	return err;  }  | 
