mirror of
https://github.com/adulau/aha.git
synced 2024-12-29 04:06:22 +00:00
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6: ALSA: snd-aica: declare MODULE_FIRMWARE ALSA: hda - Don't initialize CORB/RIRB for single_cmd mode ALSA: usb-audio: fix combine_word problem sound: Replace old style lock initializer ASoC: S3C64XX I2S: Enable audio-bus clock ASoC: OMAP: Don't try to set unsupported OMAP_DMA_DATA_BURST_16 on OMAP1 ALSA: hda, move hp_bseries_system sound: Use KERN_WARNING instead of KERN_WARN, which does not exist ALSA: intel8x0: Mute External Amplifier by default for another Sony model ALSA: hda - Add OLPC XO-1.5 PCI ID ALSA: hda - Enable GPIO control for mute LED on HP systems
This commit is contained in:
commit
d5d6eba94b
11 changed files with 99 additions and 11 deletions
|
@ -219,7 +219,9 @@ static int shared_resources_initialised;
|
|||
* Mid level stuff
|
||||
*/
|
||||
|
||||
struct sound_settings dmasound = { .lock = SPIN_LOCK_UNLOCKED };
|
||||
struct sound_settings dmasound = {
|
||||
.lock = __SPIN_LOCK_UNLOCKED(dmasound.lock)
|
||||
};
|
||||
|
||||
static inline void sound_silence(void)
|
||||
{
|
||||
|
|
|
@ -157,7 +157,7 @@ static void sb_intr (sb_devc *devc)
|
|||
break;
|
||||
|
||||
default:
|
||||
/* printk(KERN_WARN "Sound Blaster: Unexpected interrupt\n"); */
|
||||
/* printk(KERN_WARNING "Sound Blaster: Unexpected interrupt\n"); */
|
||||
;
|
||||
}
|
||||
}
|
||||
|
@ -177,7 +177,7 @@ static void sb_intr (sb_devc *devc)
|
|||
break;
|
||||
|
||||
default:
|
||||
/* printk(KERN_WARN "Sound Blaster: Unexpected interrupt\n"); */
|
||||
/* printk(KERN_WARNING "Sound Blaster: Unexpected interrupt\n"); */
|
||||
;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -782,7 +782,7 @@ printk(KERN_INFO "FKS: ess_handle_channel %s irq_mode=%d\n", channel, irq_mode);
|
|||
break;
|
||||
|
||||
default:;
|
||||
/* printk(KERN_WARN "ESS: Unexpected interrupt\n"); */
|
||||
/* printk(KERN_WARNING "ESS: Unexpected interrupt\n"); */
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -722,9 +722,10 @@ static unsigned int azx_rirb_get_response(struct hda_bus *bus,
|
|||
chip->last_cmd[addr]);
|
||||
chip->single_cmd = 1;
|
||||
bus->response_reset = 0;
|
||||
/* re-initialize CORB/RIRB */
|
||||
/* release CORB/RIRB */
|
||||
azx_free_cmd_io(chip);
|
||||
azx_init_cmd_io(chip);
|
||||
/* disable unsolicited responses */
|
||||
azx_writel(chip, GCTL, azx_readl(chip, GCTL) & ~ICH6_GCTL_UNSOL);
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
@ -865,7 +866,9 @@ static int azx_reset(struct azx *chip)
|
|||
}
|
||||
|
||||
/* Accept unsolicited responses */
|
||||
azx_writel(chip, GCTL, azx_readl(chip, GCTL) | ICH6_GCTL_UNSOL);
|
||||
if (!chip->single_cmd)
|
||||
azx_writel(chip, GCTL, azx_readl(chip, GCTL) |
|
||||
ICH6_GCTL_UNSOL);
|
||||
|
||||
/* detect codecs */
|
||||
if (!chip->codec_mask) {
|
||||
|
@ -980,7 +983,8 @@ static void azx_init_chip(struct azx *chip)
|
|||
azx_int_enable(chip);
|
||||
|
||||
/* initialize the codec command I/O */
|
||||
azx_init_cmd_io(chip);
|
||||
if (!chip->single_cmd)
|
||||
azx_init_cmd_io(chip);
|
||||
|
||||
/* program the position buffer */
|
||||
azx_writel(chip, DPLBASE, (u32)chip->posbuf.addr);
|
||||
|
|
|
@ -2325,6 +2325,7 @@ static struct snd_pci_quirk cxt5066_cfg_tbl[] = {
|
|||
CXT5066_LAPTOP),
|
||||
SND_PCI_QUIRK(0x1028, 0x02f5, "Dell",
|
||||
CXT5066_DELL_LAPTOP),
|
||||
SND_PCI_QUIRK(0x152d, 0x0833, "OLPC XO-1.5", CXT5066_OLPC_XO_1_5),
|
||||
{}
|
||||
};
|
||||
|
||||
|
|
|
@ -28,6 +28,7 @@
|
|||
#include <linux/delay.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/pci.h>
|
||||
#include <linux/dmi.h>
|
||||
#include <sound/core.h>
|
||||
#include <sound/asoundef.h>
|
||||
#include <sound/jack.h>
|
||||
|
@ -1693,6 +1694,8 @@ static struct snd_pci_quirk stac92hd71bxx_cfg_tbl[] = {
|
|||
"DFI LanParty", STAC_92HD71BXX_REF),
|
||||
SND_PCI_QUIRK(PCI_VENDOR_ID_HP, 0x30fb,
|
||||
"HP dv4-1222nr", STAC_HP_DV4_1222NR),
|
||||
SND_PCI_QUIRK_MASK(PCI_VENDOR_ID_HP, 0xfff0, 0x1720,
|
||||
"HP", STAC_HP_DV5),
|
||||
SND_PCI_QUIRK_MASK(PCI_VENDOR_ID_HP, 0xfff0, 0x3080,
|
||||
"HP", STAC_HP_DV5),
|
||||
SND_PCI_QUIRK_MASK(PCI_VENDOR_ID_HP, 0xfff0, 0x30f0,
|
||||
|
@ -4665,6 +4668,26 @@ static void stac92xx_unsol_event(struct hda_codec *codec, unsigned int res)
|
|||
}
|
||||
}
|
||||
|
||||
static int hp_bseries_system(u32 subsystem_id)
|
||||
{
|
||||
switch (subsystem_id) {
|
||||
case 0x103c307e:
|
||||
case 0x103c307f:
|
||||
case 0x103c3080:
|
||||
case 0x103c3081:
|
||||
case 0x103c1722:
|
||||
case 0x103c1723:
|
||||
case 0x103c1724:
|
||||
case 0x103c1725:
|
||||
case 0x103c1726:
|
||||
case 0x103c1727:
|
||||
case 0x103c1728:
|
||||
case 0x103c1729:
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PROC_FS
|
||||
static void stac92hd_proc_hook(struct snd_info_buffer *buffer,
|
||||
struct hda_codec *codec, hda_nid_t nid)
|
||||
|
@ -4754,6 +4777,11 @@ static int stac92xx_hp_check_power_status(struct hda_codec *codec,
|
|||
else
|
||||
spec->gpio_data |= spec->gpio_led; /* white */
|
||||
|
||||
if (hp_bseries_system(codec->subsystem_id)) {
|
||||
/* LED state is inverted on these systems */
|
||||
spec->gpio_data ^= spec->gpio_led;
|
||||
}
|
||||
|
||||
stac_gpio_set(codec, spec->gpio_mask,
|
||||
spec->gpio_dir,
|
||||
spec->gpio_data);
|
||||
|
@ -5243,6 +5271,7 @@ static int patch_stac92hd71bxx(struct hda_codec *codec)
|
|||
{
|
||||
struct sigmatel_spec *spec;
|
||||
struct hda_verb *unmute_init = stac92hd71bxx_unmute_core_init;
|
||||
unsigned int pin_cfg;
|
||||
int err = 0;
|
||||
|
||||
spec = kzalloc(sizeof(*spec), GFP_KERNEL);
|
||||
|
@ -5426,6 +5455,45 @@ again:
|
|||
break;
|
||||
}
|
||||
|
||||
if (hp_bseries_system(codec->subsystem_id)) {
|
||||
pin_cfg = snd_hda_codec_get_pincfg(codec, 0x0f);
|
||||
if (get_defcfg_device(pin_cfg) == AC_JACK_LINE_OUT ||
|
||||
get_defcfg_device(pin_cfg) == AC_JACK_SPEAKER ||
|
||||
get_defcfg_device(pin_cfg) == AC_JACK_HP_OUT) {
|
||||
/* It was changed in the BIOS to just satisfy MS DTM.
|
||||
* Lets turn it back into slaved HP
|
||||
*/
|
||||
pin_cfg = (pin_cfg & (~AC_DEFCFG_DEVICE))
|
||||
| (AC_JACK_HP_OUT <<
|
||||
AC_DEFCFG_DEVICE_SHIFT);
|
||||
pin_cfg = (pin_cfg & (~(AC_DEFCFG_DEF_ASSOC
|
||||
| AC_DEFCFG_SEQUENCE)))
|
||||
| 0x1f;
|
||||
snd_hda_codec_set_pincfg(codec, 0x0f, pin_cfg);
|
||||
}
|
||||
}
|
||||
|
||||
if ((codec->subsystem_id >> 16) == PCI_VENDOR_ID_HP) {
|
||||
const struct dmi_device *dev = NULL;
|
||||
while ((dev = dmi_find_device(DMI_DEV_TYPE_OEM_STRING,
|
||||
NULL, dev))) {
|
||||
if (strcmp(dev->name, "HP_Mute_LED_1")) {
|
||||
switch (codec->vendor_id) {
|
||||
case 0x111d7608:
|
||||
spec->gpio_led = 0x01;
|
||||
break;
|
||||
case 0x111d7600:
|
||||
case 0x111d7601:
|
||||
case 0x111d7602:
|
||||
case 0x111d7603:
|
||||
spec->gpio_led = 0x08;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SND_HDA_POWER_SAVE
|
||||
if (spec->gpio_led) {
|
||||
spec->gpio_mask |= spec->gpio_led;
|
||||
|
|
|
@ -1948,6 +1948,12 @@ static struct ac97_quirk ac97_quirks[] __devinitdata = {
|
|||
.name = "HP xw4200", /* AD1981B*/
|
||||
.type = AC97_TUNE_HP_ONLY
|
||||
},
|
||||
{
|
||||
.subvendor = 0x104d,
|
||||
.subdevice = 0x8144,
|
||||
.name = "Sony",
|
||||
.type = AC97_TUNE_INV_EAPD
|
||||
},
|
||||
{
|
||||
.subvendor = 0x104d,
|
||||
.subdevice = 0x8197,
|
||||
|
|
|
@ -49,6 +49,7 @@ MODULE_AUTHOR("Adrian McMenamin <adrian@mcmen.demon.co.uk>");
|
|||
MODULE_DESCRIPTION("Dreamcast AICA sound (pcm) driver");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_SUPPORTED_DEVICE("{{Yamaha/SEGA, AICA}}");
|
||||
MODULE_FIRMWARE("aica_firmware.bin");
|
||||
|
||||
/* module parameters */
|
||||
#define CARD_NAME "AICA"
|
||||
|
|
|
@ -195,8 +195,12 @@ static int omap_pcm_prepare(struct snd_pcm_substream *substream)
|
|||
else
|
||||
omap_enable_dma_irq(prtd->dma_ch, OMAP_DMA_FRAME_IRQ);
|
||||
|
||||
omap_set_dma_src_burst_mode(prtd->dma_ch, OMAP_DMA_DATA_BURST_16);
|
||||
omap_set_dma_dest_burst_mode(prtd->dma_ch, OMAP_DMA_DATA_BURST_16);
|
||||
if (!(cpu_class_is_omap1())) {
|
||||
omap_set_dma_src_burst_mode(prtd->dma_ch,
|
||||
OMAP_DMA_DATA_BURST_16);
|
||||
omap_set_dma_dest_burst_mode(prtd->dma_ch,
|
||||
OMAP_DMA_DATA_BURST_16);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -220,6 +220,8 @@ static __devinit int s3c64xx_iis_dev_probe(struct platform_device *pdev)
|
|||
goto err;
|
||||
}
|
||||
|
||||
clk_enable(i2s->iis_cclk);
|
||||
|
||||
ret = s3c_i2sv2_probe(pdev, dai, i2s, 0);
|
||||
if (ret)
|
||||
goto err_clk;
|
||||
|
|
|
@ -210,7 +210,7 @@ struct snd_usb_midi_endpoint_info {
|
|||
/*
|
||||
*/
|
||||
|
||||
#define combine_word(s) ((*s) | ((unsigned int)(s)[1] << 8))
|
||||
#define combine_word(s) ((*(s)) | ((unsigned int)(s)[1] << 8))
|
||||
#define combine_triple(s) (combine_word(s) | ((unsigned int)(s)[2] << 16))
|
||||
#define combine_quad(s) (combine_triple(s) | ((unsigned int)(s)[3] << 24))
|
||||
|
||||
|
|
Loading…
Reference in a new issue