Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 133199
b: refs/heads/master
c: 9ef344f
h: refs/heads/master
i:
  133197: 94bd505
  133195: 246ee33
  133191: dd613cd
  133183: 8cd0a13
v: v3
  • Loading branch information
Krzysztof Helt authored and Takashi Iwai committed Jan 17, 2009
1 parent c2974c6 commit 691da16
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 29 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 554b91edec1c588b889a7357ff201c0a450e31ff
refs/heads/master: 9ef344f89ac41116d4ab138b0941c784a3ab8cf4
41 changes: 13 additions & 28 deletions trunk/sound/isa/wss/wss_lib.c
Original file line number Diff line number Diff line change
Expand Up @@ -181,25 +181,6 @@ static void snd_wss_wait(struct snd_wss *chip)
udelay(100);
}

static void snd_wss_outm(struct snd_wss *chip, unsigned char reg,
unsigned char mask, unsigned char value)
{
unsigned char tmp = (chip->image[reg] & mask) | value;

snd_wss_wait(chip);
#ifdef CONFIG_SND_DEBUG
if (wss_inb(chip, CS4231P(REGSEL)) & CS4231_INIT)
snd_printk("outm: auto calibration time out - reg = 0x%x, value = 0x%x\n", reg, value);
#endif
chip->image[reg] = tmp;
if (!chip->calibrate_mute) {
wss_outb(chip, CS4231P(REGSEL), chip->mce_bit | reg);
wmb();
wss_outb(chip, CS4231P(REG), tmp);
mb();
}
}

static void snd_wss_dout(struct snd_wss *chip, unsigned char reg,
unsigned char value)
{
Expand Down Expand Up @@ -587,7 +568,15 @@ static void snd_wss_calibrate_mute(struct snd_wss *chip, int mute)
chip->image[CS4231_RIGHT_INPUT]);
snd_wss_dout(chip, CS4231_LOOPBACK,
chip->image[CS4231_LOOPBACK]);
} else {
snd_wss_dout(chip, CS4231_LEFT_INPUT,
0);
snd_wss_dout(chip, CS4231_RIGHT_INPUT,
0);
snd_wss_dout(chip, CS4231_LOOPBACK,
0xfd);
}

snd_wss_dout(chip, CS4231_AUX1_LEFT_INPUT,
mute | chip->image[CS4231_AUX1_LEFT_INPUT]);
snd_wss_dout(chip, CS4231_AUX1_RIGHT_INPUT,
Expand Down Expand Up @@ -630,7 +619,6 @@ static void snd_wss_playback_format(struct snd_wss *chip,
int full_calib = 1;

mutex_lock(&chip->mce_mutex);
snd_wss_calibrate_mute(chip, 1);
if (chip->hardware == WSS_HW_CS4231A ||
(chip->hardware & WSS_HW_CS4232_MASK)) {
spin_lock_irqsave(&chip->reg_lock, flags);
Expand Down Expand Up @@ -681,7 +669,6 @@ static void snd_wss_playback_format(struct snd_wss *chip,
udelay(100); /* this seems to help */
snd_wss_mce_down(chip);
}
snd_wss_calibrate_mute(chip, 0);
mutex_unlock(&chip->mce_mutex);
}

Expand All @@ -693,7 +680,6 @@ static void snd_wss_capture_format(struct snd_wss *chip,
int full_calib = 1;

mutex_lock(&chip->mce_mutex);
snd_wss_calibrate_mute(chip, 1);
if (chip->hardware == WSS_HW_CS4231A ||
(chip->hardware & WSS_HW_CS4232_MASK)) {
spin_lock_irqsave(&chip->reg_lock, flags);
Expand Down Expand Up @@ -750,7 +736,6 @@ static void snd_wss_capture_format(struct snd_wss *chip,
spin_unlock_irqrestore(&chip->reg_lock, flags);
snd_wss_mce_down(chip);
}
snd_wss_calibrate_mute(chip, 0);
mutex_unlock(&chip->mce_mutex);
}

Expand Down Expand Up @@ -807,6 +792,7 @@ static void snd_wss_init(struct snd_wss *chip)
{
unsigned long flags;

snd_wss_calibrate_mute(chip, 1);
snd_wss_mce_down(chip);

#ifdef SNDRV_DEBUG_MCE
Expand All @@ -830,6 +816,8 @@ static void snd_wss_init(struct snd_wss *chip)

snd_wss_mce_up(chip);
spin_lock_irqsave(&chip->reg_lock, flags);
chip->image[CS4231_IFACE_CTRL] &= ~CS4231_AUTOCALIB;
snd_wss_out(chip, CS4231_IFACE_CTRL, chip->image[CS4231_IFACE_CTRL]);
snd_wss_out(chip,
CS4231_ALT_FEATURE_1, chip->image[CS4231_ALT_FEATURE_1]);
spin_unlock_irqrestore(&chip->reg_lock, flags);
Expand Down Expand Up @@ -863,6 +851,7 @@ static void snd_wss_init(struct snd_wss *chip)
chip->image[CS4231_REC_FORMAT]);
spin_unlock_irqrestore(&chip->reg_lock, flags);
snd_wss_mce_down(chip);
snd_wss_calibrate_mute(chip, 0);

#ifdef SNDRV_DEBUG_MCE
snd_printk("init: (5)\n");
Expand Down Expand Up @@ -921,8 +910,6 @@ static void snd_wss_close(struct snd_wss *chip, unsigned int mode)
mutex_unlock(&chip->open_mutex);
return;
}
snd_wss_calibrate_mute(chip, 1);

/* disable IRQ */
spin_lock_irqsave(&chip->reg_lock, flags);
if (!(chip->hardware & WSS_HW_AD1848_MASK))
Expand Down Expand Up @@ -955,8 +942,6 @@ static void snd_wss_close(struct snd_wss *chip, unsigned int mode)
wss_outb(chip, CS4231P(STATUS), 0); /* clear IRQ */
spin_unlock_irqrestore(&chip->reg_lock, flags);

snd_wss_calibrate_mute(chip, 0);

chip->mode = 0;
mutex_unlock(&chip->open_mutex);
}
Expand Down Expand Up @@ -1149,7 +1134,7 @@ irqreturn_t snd_wss_interrupt(int irq, void *dev_id)
if (chip->hardware & WSS_HW_AD1848_MASK)
wss_outb(chip, CS4231P(STATUS), 0);
else
snd_wss_outm(chip, CS4231_IRQ_STATUS, status, 0);
snd_wss_out(chip, CS4231_IRQ_STATUS, status);
spin_unlock(&chip->reg_lock);
return IRQ_HANDLED;
}
Expand Down

0 comments on commit 691da16

Please sign in to comment.