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

Commit 09cfd929 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/perex/alsa:
  [ALSA] version 1.0.15
  [ALSA] emu10k1 - Check value ranges in ctl callbacks
  [ALSA] emu10k1: Add mixer controls parameter checking.
  [ALSA] fix private data pointer calculation in CS4270 driver
  [ALSA] portman2x4 - Fix probe error
  [ALSA] ca0106 - Fix write proc assignment
  [ALSA] s3c2443-ac97: compilation fix
  [ALSA] hda-codec - Revert volume knob controls in STAC codecs
  [ALSA] ca0106 - Check value range in ctl callbacks
  [ALSA] hda-codec - Check PINCAP only for PIN widgets
  [ALSA] mpu401: fix recursive locking in timer
  [ALSA] cmipci: fix FLINKON/OFF bits
  [ALSA] hda-codec - Disable shared stream on AD1986A
parents 8c6531f7 7cb41c65
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
/* include/version.h.  Generated by alsa/ksync script.  */
#define CONFIG_SND_VERSION "1.0.15"
#define CONFIG_SND_DATE " (Tue Oct 23 06:09:18 2007 UTC)"
#define CONFIG_SND_DATE " (Tue Nov 20 19:16:42 2007 UTC)"
+8 −4
Original line number Diff line number Diff line
@@ -97,23 +97,27 @@ static void snd_mpu401_uart_clear_rx(struct snd_mpu401 *mpu)

static void uart_interrupt_tx(struct snd_mpu401 *mpu)
{
	unsigned long flags;

	if (test_bit(MPU401_MODE_BIT_OUTPUT, &mpu->mode) &&
	    test_bit(MPU401_MODE_BIT_OUTPUT_TRIGGER, &mpu->mode)) {
		spin_lock(&mpu->output_lock);
		spin_lock_irqsave(&mpu->output_lock, flags);
		snd_mpu401_uart_output_write(mpu);
		spin_unlock(&mpu->output_lock);
		spin_unlock_irqrestore(&mpu->output_lock, flags);
	}
}

static void _snd_mpu401_uart_interrupt(struct snd_mpu401 *mpu)
{
	unsigned long flags;

	if (mpu->info_flags & MPU401_INFO_INPUT) {
		spin_lock(&mpu->input_lock);
		spin_lock_irqsave(&mpu->input_lock, flags);
		if (test_bit(MPU401_MODE_BIT_INPUT, &mpu->mode))
			snd_mpu401_uart_input_read(mpu);
		else
			snd_mpu401_uart_clear_rx(mpu);
		spin_unlock(&mpu->input_lock);
		spin_unlock_irqrestore(&mpu->input_lock, flags);
	}
	if (! (mpu->info_flags & MPU401_INFO_TX_IRQ))
		/* ok. for better Tx performance try do some output
+1 −1
Original line number Diff line number Diff line
@@ -668,7 +668,7 @@ static int __devinit snd_portman_probe_port(struct parport *p)
	parport_release(pardev);
	parport_unregister_device(pardev);

	return res;
	return res ? -EIO : 0;
}

static void __devinit snd_portman_attach(struct parport *p)
+12 −6
Original line number Diff line number Diff line
@@ -86,7 +86,7 @@ static int snd_ca0106_shared_spdif_get(struct snd_kcontrol *kcontrol,
{
	struct snd_ca0106 *emu = snd_kcontrol_chip(kcontrol);

	ucontrol->value.enumerated.item[0] = emu->spdif_enable;
	ucontrol->value.integer.value[0] = emu->spdif_enable;
	return 0;
}

@@ -98,11 +98,11 @@ static int snd_ca0106_shared_spdif_put(struct snd_kcontrol *kcontrol,
	int change = 0;
	u32 mask;

	val = ucontrol->value.enumerated.item[0] ;
	val = !!ucontrol->value.integer.value[0];
	change = (emu->spdif_enable != val);
	if (change) {
		emu->spdif_enable = val;
		if (val == 1) {
		if (val) {
			/* Digital */
			snd_ca0106_ptr_write(emu, SPDIF_SELECT1, 0, 0xf);
			snd_ca0106_ptr_write(emu, SPDIF_SELECT2, 0, 0x0b000000);
@@ -159,6 +159,8 @@ static int snd_ca0106_capture_source_put(struct snd_kcontrol *kcontrol,
	u32 source;

	val = ucontrol->value.enumerated.item[0] ;
	if (val >= 6)
		return -EINVAL;
	change = (emu->capture_source != val);
	if (change) {
		emu->capture_source = val;
@@ -207,6 +209,8 @@ static int snd_ca0106_i2c_capture_source_put(struct snd_kcontrol *kcontrol,
	 * for the particular source.
	 */
	source_id = ucontrol->value.enumerated.item[0] ;
	if (source_id >= 4)
		return -EINVAL;
	change = (emu->i2c_capture_source != source_id);
	if (change) {
		snd_ca0106_i2c_write(emu, ADC_MUX, 0); /* Mute input */
@@ -271,6 +275,8 @@ static int snd_ca0106_capture_mic_line_in_put(struct snd_kcontrol *kcontrol,
	u32 tmp;

	val = ucontrol->value.enumerated.item[0] ;
	if (val > 1)
		return -EINVAL;
	change = (emu->capture_mic_line_in != val);
	if (change) {
		emu->capture_mic_line_in = val;
@@ -443,7 +449,7 @@ static int snd_ca0106_i2c_volume_put(struct snd_kcontrol *kcontrol,
	ogain = emu->i2c_capture_volume[source_id][0]; /* Left */
	ngain = ucontrol->value.integer.value[0];
	if (ngain > 0xff)
		return 0;
		return -EINVAL;
	if (ogain != ngain) {
		if (emu->i2c_capture_source == source_id)
			snd_ca0106_i2c_write(emu, ADC_ATTEN_ADCL, ((ngain) & 0xff) );
@@ -453,7 +459,7 @@ static int snd_ca0106_i2c_volume_put(struct snd_kcontrol *kcontrol,
	ogain = emu->i2c_capture_volume[source_id][1]; /* Right */
	ngain = ucontrol->value.integer.value[1];
	if (ngain > 0xff)
		return 0;
		return -EINVAL;
	if (ogain != ngain) {
		if (emu->i2c_capture_source == source_id)
			snd_ca0106_i2c_write(emu, ADC_ATTEN_ADCR, ((ngain) & 0xff));
@@ -497,7 +503,7 @@ static int spi_mute_put(struct snd_kcontrol *kcontrol,
	}

	ret = snd_ca0106_spi_write(emu, emu->spi_dac_reg[reg]);
	return ret ? -1 : 1;
	return ret ? -EINVAL : 1;
}

#define CA_VOLUME(xname,chid,reg) \
+1 −3
Original line number Diff line number Diff line
@@ -445,13 +445,11 @@ int __devinit snd_ca0106_proc_init(struct snd_ca0106 * emu)
		snd_info_set_text_ops(entry, emu, snd_ca0106_proc_reg_read1);
		entry->c.text.write = snd_ca0106_proc_reg_write;
		entry->mode |= S_IWUSR;
//		entry->private_data = emu;
	}
	if(! snd_card_proc_new(emu->card, "ca0106_i2c", &entry)) {
		snd_info_set_text_ops(entry, emu, snd_ca0106_proc_i2c_write);
		entry->c.text.write = snd_ca0106_proc_i2c_write;
		entry->private_data = emu;
		entry->mode |= S_IWUSR;
//		entry->private_data = emu;
	}
	if(! snd_card_proc_new(emu->card, "ca0106_regs2", &entry)) 
		snd_info_set_text_ops(entry, emu, snd_ca0106_proc_reg_read2);
Loading