Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 453e37b3 authored by Krzysztof Helt's avatar Krzysztof Helt Committed by Takashi Iwai
Browse files

ALSA: sscape: drop redundant fields from soundscape struct



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: default avatarKrzysztof Helt <krzysztof.h1@wp.pl>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 56305757
Loading
Loading
Loading
Loading
+16 −28
Original line number Diff line number Diff line
@@ -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;
		}