[alsa-devel] [PATCH] sscape: drop redundant fields from soundscape struct (3rd rev)

Takashi Iwai tiwai at suse.de
Wed Feb 4 18:00:29 CET 2009


At Wed, 4 Feb 2009 17:41:32 +0100,
Krzysztof Helt wrote:
> 
> From: Krzysztof Helt <krzysztof.h1 at wp.pl>
> 
> The wss_base is disuised parameter for one function.
> It is converted to function parameter.
> 
> The code_type is only set but never read.
> It is removed.
> 
> The midi_vol is set only to 0 so it does not work
> as detection of change in midi volume. It is fixed.
> 
> The xport variable is alias to the port[dev]. Use
> the port[dev] directly to increase readability.
> 
> Signed-off-by: Krzysztof Helt <krzysztof.h1 at wp.pl>
> ---
> The sscape_midi_get() now returns the s->midi_vol value.

Great.  Applied now.

Thanks!


Takashi

> 
>  sound/isa/sscape.c |   44 ++++++++++++++++----------------------------
>  1 files changed, 16 insertions(+), 28 deletions(-)
> 
> diff --git a/sound/isa/sscape.c b/sound/isa/sscape.c
> index 681e223..33c1258 100644
> --- a/sound/isa/sscape.c
> +++ b/sound/isa/sscape.c
> @@ -135,8 +135,6 @@ enum card_type {
>  struct soundscape {
>  	spinlock_t lock;
>  	unsigned io_base;
> -	unsigned wss_base;
> -	int codec_type;
>  	int ic_type;
>  	enum card_type type;
>  	struct resource *io_res;
> @@ -726,13 +724,7 @@ static int sscape_midi_get(struct snd_kcontrol *kctl,
>  	unsigned long flags;
>  
>  	spin_lock_irqsave(&s->lock, flags);
> -	set_host_mode_unsafe(s->io_base);
> -
> -	if (host_write_ctrl_unsafe(s->io_base, CMD_GET_MIDI_VOL, 100)) {
> -		uctl->value.integer.value[0] = host_read_ctrl_unsafe(s->io_base, 100);
> -	}
> -
> -	set_midi_mode_unsafe(s->io_base);
> +	uctl->value.integer.value[0] = s->midi_vol;
>  	spin_unlock_irqrestore(&s->lock, flags);
>  	return 0;
>  }
> @@ -767,6 +759,7 @@ static int sscape_midi_put(struct snd_kcontrol *kctl,
>  	change = (host_write_ctrl_unsafe(s->io_base, CMD_SET_MIDI_VOL, 100)
>  	          && host_write_ctrl_unsafe(s->io_base, ((unsigned char) uctl->value.integer. value[0]) & 127, 100)
>  	          && host_write_ctrl_unsafe(s->io_base, CMD_XXX_MIDI_VOL, 100));
> +	s->midi_vol = (unsigned char) uctl->value.integer.value[0] & 127;
>        __skip_change:
>  
>  	/*
> @@ -809,12 +802,11 @@ static unsigned __devinit get_irq_config(int irq)
>   * Perform certain arcane port-checks to see whether there
>   * is a SoundScape board lurking behind the given ports.
>   */
> -static int __devinit detect_sscape(struct soundscape *s)
> +static int __devinit detect_sscape(struct soundscape *s, long wss_io)
>  {
>  	unsigned long flags;
>  	unsigned d;
>  	int retval = 0;
> -	int codec = s->wss_base;
>  
>  	spin_lock_irqsave(&s->lock, flags);
>  
> @@ -830,13 +822,11 @@ static int __devinit detect_sscape(struct soundscape *s)
>  	if ((d & 0x80) != 0)
>  		goto _done;
>  
> -	if (d == 0) {
> -		s->codec_type = 1;
> +	if (d == 0)
>  		s->ic_type = IC_ODIE;
> -	} else if ((d & 0x60) != 0) {
> -		s->codec_type = 2;
> +	else if ((d & 0x60) != 0)
>  		s->ic_type = IC_OPUS;
> -	} else
> +	else
>  		goto _done;
>  
>  	outb(0xfa, ODIE_ADDR_IO(s->io_base));
> @@ -856,10 +846,10 @@ static int __devinit detect_sscape(struct soundscape *s)
>  	sscape_write_unsafe(s->io_base, GA_HMCTL_REG, d | 0xc0);
>  
>  	if (s->type == SSCAPE_VIVO)
> -		codec += 4;
> +		wss_io += 4;
>  	/* wait for WSS codec */
>  	for (d = 0; d < 500; d++) {
> -		if ((inb(codec) & 0x80) == 0)
> +		if ((inb(wss_io) & 0x80) == 0)
>  			break;
>  		spin_unlock_irqrestore(&s->lock, flags);
>  		msleep(1);
> @@ -1057,7 +1047,6 @@ static int __devinit create_sscape(int dev, struct snd_card *card)
>  	unsigned dma_cfg;
>  	unsigned irq_cfg;
>  	unsigned mpu_irq_cfg;
> -	unsigned xport;
>  	struct resource *io_res;
>  	struct resource *wss_res;
>  	unsigned long flags;
> @@ -1077,15 +1066,15 @@ static int __devinit create_sscape(int dev, struct snd_card *card)
>  		printk(KERN_ERR "sscape: Invalid IRQ %d\n", mpu_irq[dev]);
>  		return -ENXIO;
>  	}
> -	xport = port[dev];
>  
>  	/*
>  	 * Grab IO ports that we will need to probe so that we
>  	 * can detect and control this hardware ...
>  	 */
> -	io_res = request_region(xport, 8, "SoundScape");
> +	io_res = request_region(port[dev], 8, "SoundScape");
>  	if (!io_res) {
> -		snd_printk(KERN_ERR "sscape: can't grab port 0x%x\n", xport);
> +		snd_printk(KERN_ERR
> +			   "sscape: can't grab port 0x%lx\n", port[dev]);
>  		return -EBUSY;
>  	}
>  	wss_res = NULL;
> @@ -1112,10 +1101,9 @@ static int __devinit create_sscape(int dev, struct snd_card *card)
>  	spin_lock_init(&sscape->fwlock);
>  	sscape->io_res = io_res;
>  	sscape->wss_res = wss_res;
> -	sscape->io_base = xport;
> -	sscape->wss_base = wss_port[dev];
> +	sscape->io_base = port[dev];
>  
> -	if (!detect_sscape(sscape)) {
> +	if (!detect_sscape(sscape, wss_port[dev])) {
>  		printk(KERN_ERR "sscape: hardware not detected at 0x%x\n", sscape->io_base);
>  		err = -ENODEV;
>  		goto _release_dma;
> @@ -1188,11 +1176,11 @@ static int __devinit create_sscape(int dev, struct snd_card *card)
>  	}
>  #define MIDI_DEVNUM  0
>  	if (sscape->type != SSCAPE_VIVO) {
> -		err = create_mpu401(card, MIDI_DEVNUM, xport, mpu_irq[dev]);
> +		err = create_mpu401(card, MIDI_DEVNUM, port[dev], mpu_irq[dev]);
>  		if (err < 0) {
>  			printk(KERN_ERR "sscape: Failed to create "
> -					"MPU-401 device at 0x%x\n",
> -					xport);
> +					"MPU-401 device at 0x%lx\n",
> +					port[dev]);
>  			goto _release_dma;
>  		}
>  
> -- 
> 1.5.2.2
> 
> 
> ----------------------------------------------------------------------
> Obdaruj swoja Walentynke ... lub siebie!
> Wygraj nagrody! Sprawdz >> http://link.interia.pl/f203a 
> 


More information about the Alsa-devel mailing list