Skip to content

Commit

Permalink
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel…
Browse files Browse the repository at this point in the history
…/git/tiwai/sound-2.6

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6:
  sound: pss - don't use the deprecated function check_region
  ALSA: timer - Add NULL-check for invalid slave timer
  ALSA: timer - Fix Oops at closing slave timer
  ASoC: Acknowledge WM8996 interrupts before acting on them
  ASoC: Rename WM8915 to WM8996
  ALSA: Fix dependency of CONFIG_SND_TEA575X
  ALSA: asihpi - use kzalloc()
  ALSA: snd-usb-caiaq: Fix keymap for RigKontrol3
  ALSA: snd-usb: Fix uninitialized variable usage
  ALSA: hda - Fix a complile warning in patch_via.c
  ALSA: hdspm - Fix uninitialized compile warnings
  ALSA: usb-audio - add quirk for Keith McMillen StringPort
  ALSA: snd-usb: operate on given mixer interface only
  ALSA: snd-usb: avoid dividing by zero on invalid input
  ALSA: snd-usb: Accept UAC2 FORMAT_TYPE descriptors with bLength > 6
  sound: oss/pas2: Remove CLOCK_TICK_RATE dependency from PAS16 driver
  ALSA: hda - Use auto-parser for ASUS UX50, Eee PC P901, S101 and P1005
  ALSA: hda - Fix digital-mic mono recording on ASUS Eee PC
  ASoC: sgtl5000: fix cache handling
  ASoC: Disable wm_hubs periodic DC servo update
  • Loading branch information
Linus Torvalds committed Aug 9, 2011
2 parents ab04fc5 + 60b1ae0 commit 6bb615b
Show file tree
Hide file tree
Showing 27 changed files with 6,876 additions and 6,896 deletions.
18 changes: 9 additions & 9 deletions arch/arm/mach-s3c64xx/mach-crag6410.c
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@
#include <plat/iic.h>
#include <plat/pm.h>

#include <sound/wm8915.h>
#include <sound/wm8996.h>
#include <sound/wm8962.h>
#include <sound/wm9081.h>

Expand Down Expand Up @@ -614,7 +614,7 @@ static struct wm831x_pdata glenfarclas_pmic_pdata __initdata = {
.disable_touch = true,
};

static struct wm8915_retune_mobile_config wm8915_retune[] = {
static struct wm8996_retune_mobile_config wm8996_retune[] = {
{
.name = "Sub LPF",
.rate = 48000,
Expand All @@ -635,12 +635,12 @@ static struct wm8915_retune_mobile_config wm8915_retune[] = {
},
};

static struct wm8915_pdata wm8915_pdata __initdata = {
static struct wm8996_pdata wm8996_pdata __initdata = {
.ldo_ena = S3C64XX_GPN(7),
.gpio_base = CODEC_GPIO_BASE,
.micdet_def = 1,
.inl_mode = WM8915_DIFFERRENTIAL_1,
.inr_mode = WM8915_DIFFERRENTIAL_1,
.inl_mode = WM8996_DIFFERRENTIAL_1,
.inr_mode = WM8996_DIFFERRENTIAL_1,

.irq_flags = IRQF_TRIGGER_RISING,

Expand All @@ -652,8 +652,8 @@ static struct wm8915_pdata wm8915_pdata __initdata = {
0x020e, /* GPIO5 == CLKOUT */
},

.retune_mobile_cfgs = wm8915_retune,
.num_retune_mobile_cfgs = ARRAY_SIZE(wm8915_retune),
.retune_mobile_cfgs = wm8996_retune,
.num_retune_mobile_cfgs = ARRAY_SIZE(wm8996_retune),
};

static struct wm8962_pdata wm8962_pdata __initdata = {
Expand All @@ -679,8 +679,8 @@ static struct i2c_board_info i2c_devs1[] __initdata = {
.platform_data = &glenfarclas_pmic_pdata },

{ I2C_BOARD_INFO("wm1250-ev1", 0x27) },
{ I2C_BOARD_INFO("wm8915", 0x1a),
.platform_data = &wm8915_pdata,
{ I2C_BOARD_INFO("wm8996", 0x1a),
.platform_data = &wm8996_pdata,
.irq = GLENFARCLAS_PMIC_IRQ_BASE + WM831X_IRQ_GPIO_2,
},
{ I2C_BOARD_INFO("wm9081", 0x6c),
Expand Down
28 changes: 14 additions & 14 deletions include/sound/wm8915.h → include/sound/wm8996.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* linux/sound/wm8915.h -- Platform data for WM8915
* linux/sound/wm8996.h -- Platform data for WM8996
*
* Copyright 2011 Wolfson Microelectronics. PLC.
*
Expand All @@ -8,14 +8,14 @@
* published by the Free Software Foundation.
*/

#ifndef __LINUX_SND_WM8903_H
#define __LINUX_SND_WM8903_H
#ifndef __LINUX_SND_WM8996_H
#define __LINUX_SND_WM8996_H

enum wm8915_inmode {
WM8915_DIFFERRENTIAL_1 = 0, /* IN1xP - IN1xN */
WM8915_INVERTING = 1, /* IN1xN */
WM8915_NON_INVERTING = 2, /* IN1xP */
WM8915_DIFFERENTIAL_2 = 3, /* IN2xP - IN2xP */
enum wm8996_inmode {
WM8996_DIFFERRENTIAL_1 = 0, /* IN1xP - IN1xN */
WM8996_INVERTING = 1, /* IN1xN */
WM8996_NON_INVERTING = 2, /* IN1xP */
WM8996_DIFFERENTIAL_2 = 3, /* IN2xP - IN2xP */
};

/**
Expand All @@ -25,31 +25,31 @@ enum wm8915_inmode {
* Configurations are expected to be generated using the ReTune Mobile
* control panel in WISCE - see http://www.wolfsonmicro.com/wisce/
*/
struct wm8915_retune_mobile_config {
struct wm8996_retune_mobile_config {
const char *name;
int rate;
u16 regs[20];
};

#define WM8915_SET_DEFAULT 0x10000
#define WM8996_SET_DEFAULT 0x10000

struct wm8915_pdata {
struct wm8996_pdata {
int irq_flags; /** Set IRQ trigger flags; default active low */

int ldo_ena; /** GPIO for LDO1; -1 for none */

int micdet_def; /** Default MICDET_SRC/HP1FB_SRC/MICD_BIAS */

enum wm8915_inmode inl_mode;
enum wm8915_inmode inr_mode;
enum wm8996_inmode inl_mode;
enum wm8996_inmode inr_mode;

u32 spkmute_seq; /** Value for register 0x802 */

int gpio_base;
u32 gpio_default[5];

int num_retune_mobile_cfgs;
struct wm8915_retune_mobile_config *retune_mobile_cfgs;
struct wm8996_retune_mobile_config *retune_mobile_cfgs;
};

#endif
5 changes: 5 additions & 0 deletions sound/core/timer.c
Original file line number Diff line number Diff line change
Expand Up @@ -328,6 +328,8 @@ int snd_timer_close(struct snd_timer_instance *timeri)
mutex_unlock(&register_mutex);
} else {
timer = timeri->timer;
if (snd_BUG_ON(!timer))
goto out;
/* wait, until the active callback is finished */
spin_lock_irq(&timer->lock);
while (timeri->flags & SNDRV_TIMER_IFLG_CALLBACK) {
Expand All @@ -353,6 +355,7 @@ int snd_timer_close(struct snd_timer_instance *timeri)
}
mutex_unlock(&register_mutex);
}
out:
if (timeri->private_free)
timeri->private_free(timeri);
kfree(timeri->owner);
Expand Down Expand Up @@ -531,6 +534,8 @@ int snd_timer_stop(struct snd_timer_instance *timeri)
if (err < 0)
return err;
timer = timeri->timer;
if (!timer)
return -EINVAL;
spin_lock_irqsave(&timer->lock, flags);
timeri->cticks = timeri->ticks;
timeri->pticks = 0;
Expand Down
8 changes: 4 additions & 4 deletions sound/oss/pas2_pcm.c
Original file line number Diff line number Diff line change
Expand Up @@ -63,13 +63,13 @@ static int pcm_set_speed(int arg)

if (pcm_channels & 2)
{
foo = ((CLOCK_TICK_RATE / 2) + (arg / 2)) / arg;
arg = ((CLOCK_TICK_RATE / 2) + (foo / 2)) / foo;
foo = ((PIT_TICK_RATE / 2) + (arg / 2)) / arg;
arg = ((PIT_TICK_RATE / 2) + (foo / 2)) / foo;
}
else
{
foo = (CLOCK_TICK_RATE + (arg / 2)) / arg;
arg = (CLOCK_TICK_RATE + (foo / 2)) / foo;
foo = (PIT_TICK_RATE + (arg / 2)) / arg;
arg = (PIT_TICK_RATE + (foo / 2)) / foo;
}

pcm_speed = arg;
Expand Down
6 changes: 4 additions & 2 deletions sound/oss/pss.c
Original file line number Diff line number Diff line change
Expand Up @@ -673,7 +673,8 @@ static void configure_nonsound_components(void)

if (pss_cdrom_port == -1) { /* If cdrom port enablation wasn't requested */
printk(KERN_INFO "PSS: CDROM port not enabled.\n");
} else if (check_region(pss_cdrom_port, 2)) {
} else if (!request_region(pss_cdrom_port, 2, "PSS CDROM")) {
pss_cdrom_port = -1;
printk(KERN_ERR "PSS: CDROM I/O port conflict.\n");
} else {
set_io_base(devc, CONF_CDROM, pss_cdrom_port);
Expand Down Expand Up @@ -1232,7 +1233,8 @@ static void __exit cleanup_pss(void)
if(pssmpu)
unload_pss_mpu(&cfg_mpu);
unload_pss(&cfg);
}
} else if (pss_cdrom_port != -1)
release_region(pss_cdrom_port, 2);

if(!pss_keep_settings) /* Keep hardware settings if asked */
{
Expand Down
10 changes: 5 additions & 5 deletions sound/pci/Kconfig
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
# ALSA PCI drivers

config SND_TEA575X
tristate
depends on SND_FM801_TEA575X_BOOL || SND_ES1968_RADIO || RADIO_SF16FMR2
default SND_FM801 || SND_ES1968 || RADIO_SF16FMR2

menuconfig SND_PCI
bool "PCI sound devices"
depends on PCI
Expand Down Expand Up @@ -563,11 +568,6 @@ config SND_FM801_TEA575X_BOOL
FM801 chip with a TEA5757 tuner (MediaForte SF256-PCS, SF256-PCP and
SF64-PCR) into the snd-fm801 driver.

config SND_TEA575X
tristate
depends on SND_FM801_TEA575X_BOOL || SND_ES1968_RADIO || RADIO_SF16FMR2
default SND_FM801 || SND_ES1968 || RADIO_SF16FMR2

source "sound/pci/hda/Kconfig"

config SND_HDSP
Expand Down
5 changes: 2 additions & 3 deletions sound/pci/asihpi/hpicmn.c
Original file line number Diff line number Diff line change
Expand Up @@ -631,13 +631,12 @@ struct hpi_control_cache *hpi_alloc_control_cache(const u32 control_count,
if (!p_cache)
return NULL;

p_cache->p_info =
kmalloc(sizeof(*p_cache->p_info) * control_count, GFP_KERNEL);
p_cache->p_info = kzalloc(sizeof(*p_cache->p_info) * control_count,
GFP_KERNEL);
if (!p_cache->p_info) {
kfree(p_cache);
return NULL;
}
memset(p_cache->p_info, 0, sizeof(*p_cache->p_info) * control_count);
p_cache->cache_size_in_bytes = size_in_bytes;
p_cache->control_count = control_count;
p_cache->p_cache = p_dsp_control_buffer;
Expand Down
7 changes: 0 additions & 7 deletions sound/pci/hda/alc269_quirks.c
Original file line number Diff line number Diff line change
Expand Up @@ -531,17 +531,10 @@ static const struct snd_pci_quirk alc269_cfg_tbl[] = {
SND_PCI_QUIRK(0x1043, 0x1653, "ASUS U50", ALC269_AMIC),
SND_PCI_QUIRK(0x1043, 0x1693, "ASUS F50N", ALC269_AMIC),
SND_PCI_QUIRK(0x1043, 0x16a3, "ASUS F5Q", ALC269_AMIC),
SND_PCI_QUIRK(0x1043, 0x16e3, "ASUS UX50", ALC269_DMIC),
SND_PCI_QUIRK(0x1043, 0x1723, "ASUS P80", ALC269_AMIC),
SND_PCI_QUIRK(0x1043, 0x1743, "ASUS U80", ALC269_AMIC),
SND_PCI_QUIRK(0x1043, 0x1773, "ASUS U20A", ALC269_AMIC),
SND_PCI_QUIRK(0x1043, 0x1883, "ASUS F81Se", ALC269_AMIC),
SND_PCI_QUIRK(0x1043, 0x831a, "ASUS Eeepc P901",
ALC269_DMIC),
SND_PCI_QUIRK(0x1043, 0x834a, "ASUS Eeepc S101",
ALC269_DMIC),
SND_PCI_QUIRK(0x1043, 0x8398, "ASUS P1005HA", ALC269_DMIC),
SND_PCI_QUIRK(0x1043, 0x83ce, "ASUS P1005HA", ALC269_DMIC),
SND_PCI_QUIRK(0x104d, 0x9071, "Sony VAIO", ALC269_AUTO),
SND_PCI_QUIRK(0x10cf, 0x1475, "Lifebook ICH9M-based", ALC269_LIFEBOOK),
SND_PCI_QUIRK(0x152d, 0x1778, "Quanta ON1", ALC269_DMIC),
Expand Down
26 changes: 26 additions & 0 deletions sound/pci/hda/patch_realtek.c
Original file line number Diff line number Diff line change
Expand Up @@ -4484,6 +4484,22 @@ static void alc269_fixup_pcm_44k(struct hda_codec *codec,
spec->stream_analog_capture = &alc269_44k_pcm_analog_capture;
}

static void alc269_fixup_stereo_dmic(struct hda_codec *codec,
const struct alc_fixup *fix, int action)
{
int coef;

if (action != ALC_FIXUP_ACT_INIT)
return;
/* The digital-mic unit sends PDM (differential signal) instead of
* the standard PCM, thus you can't record a valid mono stream as is.
* Below is a workaround specific to ALC269 to control the dmic
* signal source as mono.
*/
coef = alc_read_coef_idx(codec, 0x07);
alc_write_coef_idx(codec, 0x07, coef | 0x80);
}

enum {
ALC269_FIXUP_SONY_VAIO,
ALC275_FIXUP_SONY_VAIO_GPIO2,
Expand All @@ -4494,6 +4510,7 @@ enum {
ALC275_FIXUP_SONY_HWEQ,
ALC271_FIXUP_DMIC,
ALC269_FIXUP_PCM_44K,
ALC269_FIXUP_STEREO_DMIC,
};

static const struct alc_fixup alc269_fixups[] = {
Expand Down Expand Up @@ -4556,10 +4573,19 @@ static const struct alc_fixup alc269_fixups[] = {
.type = ALC_FIXUP_FUNC,
.v.func = alc269_fixup_pcm_44k,
},
[ALC269_FIXUP_STEREO_DMIC] = {
.type = ALC_FIXUP_FUNC,
.v.func = alc269_fixup_stereo_dmic,
},
};

static const struct snd_pci_quirk alc269_fixup_tbl[] = {
SND_PCI_QUIRK(0x1043, 0x1a13, "Asus G73Jw", ALC269_FIXUP_ASUS_G73JW),
SND_PCI_QUIRK(0x1043, 0x16e3, "ASUS UX50", ALC269_FIXUP_STEREO_DMIC),
SND_PCI_QUIRK(0x1043, 0x831a, "ASUS P901", ALC269_FIXUP_STEREO_DMIC),
SND_PCI_QUIRK(0x1043, 0x834a, "ASUS S101", ALC269_FIXUP_STEREO_DMIC),
SND_PCI_QUIRK(0x1043, 0x8398, "ASUS P1005", ALC269_FIXUP_STEREO_DMIC),
SND_PCI_QUIRK(0x1043, 0x83ce, "ASUS P1005", ALC269_FIXUP_STEREO_DMIC),
SND_PCI_QUIRK(0x104d, 0x9073, "Sony VAIO", ALC275_FIXUP_SONY_VAIO_GPIO2),
SND_PCI_QUIRK(0x104d, 0x907b, "Sony VAIO", ALC275_FIXUP_SONY_HWEQ),
SND_PCI_QUIRK(0x104d, 0x9084, "Sony VAIO", ALC275_FIXUP_SONY_HWEQ),
Expand Down
2 changes: 1 addition & 1 deletion sound/pci/hda/patch_via.c
Original file line number Diff line number Diff line change
Expand Up @@ -2084,7 +2084,7 @@ static int via_auto_create_speaker_ctls(struct hda_codec *codec)
struct via_spec *spec = codec->spec;
struct nid_path *path;
bool check_dac;
hda_nid_t pin, dac;
hda_nid_t pin, dac = 0;
int err;

pin = spec->autocfg.speaker_pins[0];
Expand Down
19 changes: 13 additions & 6 deletions sound/pci/rme9652/hdspm.c
Original file line number Diff line number Diff line change
Expand Up @@ -1339,6 +1339,10 @@ static u64 hdspm_calc_dds_value(struct hdspm *hdspm, u64 period)
break;
case MADIface:
freq_const = 131072000000000ULL;
break;
default:
snd_BUG();
return 0;
}

return div_u64(freq_const, period);
Expand All @@ -1356,16 +1360,19 @@ static void hdspm_set_dds_value(struct hdspm *hdspm, int rate)

switch (hdspm->io_type) {
case MADIface:
n = 131072000000000ULL; /* 125 MHz */
break;
n = 131072000000000ULL; /* 125 MHz */
break;
case MADI:
case AES32:
n = 110069313433624ULL; /* 105 MHz */
break;
n = 110069313433624ULL; /* 105 MHz */
break;
case RayDAT:
case AIO:
n = 104857600000000ULL; /* 100 MHz */
break;
n = 104857600000000ULL; /* 100 MHz */
break;
default:
snd_BUG();
return;
}

n = div_u64(n, rate);
Expand Down
8 changes: 4 additions & 4 deletions sound/soc/codecs/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,6 @@ config SND_SOC_ALL_CODECS
select SND_SOC_WM8900 if I2C
select SND_SOC_WM8903 if I2C
select SND_SOC_WM8904 if I2C
select SND_SOC_WM8915 if I2C
select SND_SOC_WM8940 if I2C
select SND_SOC_WM8955 if I2C
select SND_SOC_WM8960 if I2C
Expand All @@ -95,6 +94,7 @@ config SND_SOC_ALL_CODECS
select SND_SOC_WM8993 if I2C
select SND_SOC_WM8994 if MFD_WM8994
select SND_SOC_WM8995 if SND_SOC_I2C_AND_SPI
select SND_SOC_WM8996 if I2C
select SND_SOC_WM9081 if I2C
select SND_SOC_WM9090 if I2C
select SND_SOC_WM9705 if SND_SOC_AC97_BUS
Expand Down Expand Up @@ -329,9 +329,6 @@ config SND_SOC_WM8903
config SND_SOC_WM8904
tristate

config SND_SOC_WM8915
tristate

config SND_SOC_WM8940
tristate

Expand Down Expand Up @@ -380,6 +377,9 @@ config SND_SOC_WM8994
config SND_SOC_WM8995
tristate

config SND_SOC_WM8996
tristate

config SND_SOC_WM9081
tristate

Expand Down
4 changes: 2 additions & 2 deletions sound/soc/codecs/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ snd-soc-wm8804-objs := wm8804.o
snd-soc-wm8900-objs := wm8900.o
snd-soc-wm8903-objs := wm8903.o
snd-soc-wm8904-objs := wm8904.o
snd-soc-wm8915-objs := wm8915.o
snd-soc-wm8996-objs := wm8996.o
snd-soc-wm8940-objs := wm8940.o
snd-soc-wm8955-objs := wm8955.o
snd-soc-wm8960-objs := wm8960.o
Expand Down Expand Up @@ -160,7 +160,7 @@ obj-$(CONFIG_SND_SOC_WM8804) += snd-soc-wm8804.o
obj-$(CONFIG_SND_SOC_WM8900) += snd-soc-wm8900.o
obj-$(CONFIG_SND_SOC_WM8903) += snd-soc-wm8903.o
obj-$(CONFIG_SND_SOC_WM8904) += snd-soc-wm8904.o
obj-$(CONFIG_SND_SOC_WM8915) += snd-soc-wm8915.o
obj-$(CONFIG_SND_SOC_WM8996) += snd-soc-wm8996.o
obj-$(CONFIG_SND_SOC_WM8940) += snd-soc-wm8940.o
obj-$(CONFIG_SND_SOC_WM8955) += snd-soc-wm8955.o
obj-$(CONFIG_SND_SOC_WM8960) += snd-soc-wm8960.o
Expand Down
Loading

0 comments on commit 6bb615b

Please sign in to comment.