diff options
Diffstat (limited to 'sound/drivers/vx')
| -rw-r--r-- | sound/drivers/vx/vx_core.c | 8 | ||||
| -rw-r--r-- | sound/drivers/vx/vx_hwdep.c | 140 | ||||
| -rw-r--r-- | sound/drivers/vx/vx_pcm.c | 4 | 
3 files changed, 7 insertions, 145 deletions
diff --git a/sound/drivers/vx/vx_core.c b/sound/drivers/vx/vx_core.c index 19c6e376c7c..83596891cde 100644 --- a/sound/drivers/vx/vx_core.c +++ b/sound/drivers/vx/vx_core.c @@ -26,6 +26,7 @@  #include <linux/init.h>  #include <linux/device.h>  #include <linux/firmware.h> +#include <linux/module.h>  #include <sound/core.h>  #include <sound/pcm.h>  #include <sound/asoundef.h> @@ -51,7 +52,6 @@ MODULE_LICENSE("GPL");  int snd_vx_check_reg_bit(struct vx_core *chip, int reg, int mask, int bit, int time)  {  	unsigned long end_time = jiffies + (time * HZ + 999) / 1000; -#ifdef CONFIG_SND_DEBUG  	static char *reg_names[VX_REG_MAX] = {  		"ICR", "CVR", "ISR", "IVR", "RXH", "RXM", "RXL",  		"DMA", "CDSP", "RFREQ", "RUER/V2", "DATA", "MEMIRQ", @@ -59,7 +59,7 @@ int snd_vx_check_reg_bit(struct vx_core *chip, int reg, int mask, int bit, int t  		"MIC3", "INTCSR", "CNTRL", "GPIOC",  		"LOFREQ", "HIFREQ", "CSUER", "RUER"  	}; -#endif +  	do {  		if ((snd_vx_inb(chip, reg) & mask) == bit)  			return 0; @@ -205,7 +205,7 @@ static int vx_read_status(struct vx_core *chip, struct vx_rmh *rmh)  	if (size < 1)  		return 0; -	if (snd_BUG_ON(size > SIZE_MAX_STATUS)) +	if (snd_BUG_ON(size >= SIZE_MAX_STATUS))  		return -EINVAL;  	for (i = 1; i <= size; i++) { @@ -724,7 +724,7 @@ EXPORT_SYMBOL(snd_vx_dsp_load);  /*   * suspend   */ -int snd_vx_suspend(struct vx_core *chip, pm_message_t state) +int snd_vx_suspend(struct vx_core *chip)  {  	unsigned int i; diff --git a/sound/drivers/vx/vx_hwdep.c b/sound/drivers/vx/vx_hwdep.c index f7a6fbd313e..3014b86362b 100644 --- a/sound/drivers/vx/vx_hwdep.c +++ b/sound/drivers/vx/vx_hwdep.c @@ -24,12 +24,11 @@  #include <linux/firmware.h>  #include <linux/slab.h>  #include <linux/vmalloc.h> +#include <linux/module.h>  #include <sound/core.h>  #include <sound/hwdep.h>  #include <sound/vx_core.h> -#ifdef SND_VX_FW_LOADER -  MODULE_FIRMWARE("vx/bx_1_vxp.b56");  MODULE_FIRMWARE("vx/bx_1_vp4.b56");  MODULE_FIRMWARE("vx/x1_1_vx2.xlx"); @@ -118,142 +117,5 @@ void snd_vx_free_firmware(struct vx_core *chip)  #endif  } -#else /* old style firmware loading */ - -static int vx_hwdep_dsp_status(struct snd_hwdep *hw, -			       struct snd_hwdep_dsp_status *info) -{ -	static char *type_ids[VX_TYPE_NUMS] = { -		[VX_TYPE_BOARD] = "vxboard", -		[VX_TYPE_V2] = "vx222", -		[VX_TYPE_MIC] = "vx222", -		[VX_TYPE_VXPOCKET] = "vxpocket", -		[VX_TYPE_VXP440] = "vxp440", -	}; -	struct vx_core *vx = hw->private_data; - -	if (snd_BUG_ON(!type_ids[vx->type])) -		return -EINVAL; -	strcpy(info->id, type_ids[vx->type]); -	if (vx_is_pcmcia(vx)) -		info->num_dsps = 4; -	else -		info->num_dsps = 3; -	if (vx->chip_status & VX_STAT_CHIP_INIT) -		info->chip_ready = 1; -	info->version = VX_DRIVER_VERSION; -	return 0; -} - -static void free_fw(const struct firmware *fw) -{ -	if (fw) { -		vfree(fw->data); -		kfree(fw); -	} -} - -static int vx_hwdep_dsp_load(struct snd_hwdep *hw, -			     struct snd_hwdep_dsp_image *dsp) -{ -	struct vx_core *vx = hw->private_data; -	int index, err; -	struct firmware *fw; - -	if (snd_BUG_ON(!vx->ops->load_dsp)) -		return -ENXIO; - -	fw = kmalloc(sizeof(*fw), GFP_KERNEL); -	if (! fw) { -		snd_printk(KERN_ERR "cannot allocate firmware\n"); -		return -ENOMEM; -	} -	fw->size = dsp->length; -	fw->data = vmalloc(fw->size); -	if (! fw->data) { -		snd_printk(KERN_ERR "cannot allocate firmware image (length=%d)\n", -			   (int)fw->size); -		kfree(fw); -		return -ENOMEM; -	} -	if (copy_from_user((void *)fw->data, dsp->image, dsp->length)) { -		free_fw(fw); -		return -EFAULT; -	} - -	index = dsp->index; -	if (! vx_is_pcmcia(vx)) -		index++; -	err = vx->ops->load_dsp(vx, index, fw); -	if (err < 0) { -		free_fw(fw); -		return err; -	} -#ifdef CONFIG_PM -	vx->firmware[index] = fw; -#else -	free_fw(fw); -#endif - -	if (index == 1) -		vx->chip_status |= VX_STAT_XILINX_LOADED; -	if (index < 3) -		return 0; - -	/* ok, we reached to the last one */ -	/* create the devices if not built yet */ -	if (! (vx->chip_status & VX_STAT_DEVICE_INIT)) { -		if ((err = snd_vx_pcm_new(vx)) < 0) -			return err; - -		if ((err = snd_vx_mixer_new(vx)) < 0) -			return err; - -		if (vx->ops->add_controls) -			if ((err = vx->ops->add_controls(vx)) < 0) -				return err; - -		if ((err = snd_card_register(vx->card)) < 0) -			return err; - -		vx->chip_status |= VX_STAT_DEVICE_INIT; -	} -	vx->chip_status |= VX_STAT_CHIP_INIT; -	return 0; -} - - -/* exported */ -int snd_vx_setup_firmware(struct vx_core *chip) -{ -	int err; -	struct snd_hwdep *hw; - -	if ((err = snd_hwdep_new(chip->card, SND_VX_HWDEP_ID, 0, &hw)) < 0) -		return err; - -	hw->iface = SNDRV_HWDEP_IFACE_VX; -	hw->private_data = chip; -	hw->ops.dsp_status = vx_hwdep_dsp_status; -	hw->ops.dsp_load = vx_hwdep_dsp_load; -	hw->exclusive = 1; -	sprintf(hw->name, "VX Loader (%s)", chip->card->driver); -	chip->hwdep = hw; - -	return snd_card_register(chip->card); -} - -/* exported */ -void snd_vx_free_firmware(struct vx_core *chip) -{ -#ifdef CONFIG_PM -	int i; -	for (i = 0; i < 4; i++) -		free_fw(chip->firmware[i]); -#endif -} - -#endif /* SND_VX_FW_LOADER */ -  EXPORT_SYMBOL(snd_vx_setup_firmware);  EXPORT_SYMBOL(snd_vx_free_firmware); diff --git a/sound/drivers/vx/vx_pcm.c b/sound/drivers/vx/vx_pcm.c index 35a2f71a6af..deed5efff33 100644 --- a/sound/drivers/vx/vx_pcm.c +++ b/sound/drivers/vx/vx_pcm.c @@ -184,7 +184,7 @@ static int vx_set_format(struct vx_core *chip, struct vx_pipe *pipe,  	default :   		snd_BUG();  		return -EINVAL; -        }; +	}  	return vx_set_stream_format(chip, pipe, header);  } @@ -1189,7 +1189,7 @@ void vx_pcm_update_intr(struct vx_core *chip, unsigned int events)  /* - * vx_init_audio_io - check the availabe audio i/o and allocate pipe arrays + * vx_init_audio_io - check the available audio i/o and allocate pipe arrays   */  static int vx_init_audio_io(struct vx_core *chip)  {  | 
