]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/commitdiff
Merge branches 'topic/fix/misc' and 'topic/fix/hda' into for-linus
authorTakashi Iwai <tiwai@suse.de>
Mon, 10 Nov 2008 16:58:46 +0000 (17:58 +0100)
committerTakashi Iwai <tiwai@suse.de>
Mon, 10 Nov 2008 16:58:46 +0000 (17:58 +0100)
include/sound/core.h
sound/isa/Kconfig
sound/pci/hda/hda_proc.c
sound/pci/hda/patch_analog.c
sound/pci/hda/patch_realtek.c
sound/pci/rme9652/hdsp.c

index 35424a971b7a68d89ab75630eac1e197ebae8619..1508c4ec1ba929162fa14651426d27dc9ab81437 100644 (file)
@@ -385,9 +385,13 @@ void snd_verbose_printd(const char *file, int line, const char *format, ...)
 
 #else /* !CONFIG_SND_DEBUG */
 
-#define snd_printd(fmt, args...)       /* nothing */
-#define snd_BUG()                      /* nothing */
-#define snd_BUG_ON(cond)       ({/*(void)(cond);*/ 0;})  /* always false */
+#define snd_printd(fmt, args...)       do { } while (0)
+#define snd_BUG()                      do { } while (0)
+static inline int __snd_bug_on(void)
+{
+       return 0;
+}
+#define snd_BUG_ON(cond)               __snd_bug_on()  /* always false */
 
 #endif /* CONFIG_SND_DEBUG */
 
index 660beb41f767f74a42373ba81bf1e0805c33da02..ce0aa044e274180abfd50c04477d9c091df95562 100644 (file)
@@ -211,7 +211,7 @@ config SND_GUSCLASSIC
 
 config SND_GUSEXTREME
        tristate "Gravis UltraSound Extreme"
-       select SND_HWDEP
+       select SND_OPL3_LIB
        select SND_MPU401_UART
        select SND_PCM
        help
index 743d77922bceda139d3c4c3498d28fec27ce2272..c39af986bff17dac41abad79090244f7f60b88a1 100644 (file)
@@ -483,6 +483,8 @@ static void print_gpio(struct snd_info_buffer *buffer,
                    (gpio & AC_GPIO_UNSOLICITED) ? 1 : 0,
                    (gpio & AC_GPIO_WAKE) ? 1 : 0);
        max = gpio & AC_GPIO_IO_COUNT;
+       if (!max || max > 8)
+               return;
        enable = snd_hda_codec_read(codec, nid, 0,
                                    AC_VERB_GET_GPIO_MASK, 0);
        direction = snd_hda_codec_read(codec, nid, 0,
index d3fd432cb3eaa243249a0785e162d98210ac1509..686c77491dea7cffb5333562c2986f7640ac21e0 100644 (file)
@@ -3861,6 +3861,8 @@ static const char *ad1884a_models[AD1884A_MODELS] = {
 static struct snd_pci_quirk ad1884a_cfg_tbl[] = {
        SND_PCI_QUIRK(0x103c, 0x3030, "HP", AD1884A_MOBILE),
        SND_PCI_QUIRK(0x103c, 0x3056, "HP", AD1884A_MOBILE),
+       SND_PCI_QUIRK(0x103c, 0x30e7, "HP EliteBook 8530p", AD1884A_LAPTOP),
+       SND_PCI_QUIRK(0x103c, 0x3614, "HP 6730s", AD1884A_LAPTOP),
        SND_PCI_QUIRK(0x17aa, 0x20ac, "Thinkpad X300", AD1884A_THINKPAD),
        {}
 };
index a4666c96a44fbea80d021c0f8b57756fcb9b0b19..a378c014512555ce90f06a0201a49ac172e73564 100644 (file)
@@ -8469,6 +8469,7 @@ static struct snd_pci_quirk alc883_cfg_tbl[] = {
        SND_PCI_QUIRK(0x17aa, 0x3bfd, "Lenovo NB0763", ALC883_LENOVO_NB0763),
        SND_PCI_QUIRK(0x17aa, 0x101d, "Lenovo Sky", ALC888_LENOVO_SKY),
        SND_PCI_QUIRK(0x17c0, 0x4071, "MEDION MD2", ALC883_MEDION_MD2),
+       SND_PCI_QUIRK(0x17c0, 0x4085, "MEDION MD96630", ALC888_LENOVO_MS7195_DIG),
        SND_PCI_QUIRK(0x17f2, 0x5000, "Albatron KI690-AM2", ALC883_6ST_DIG),
        SND_PCI_QUIRK(0x1991, 0x5625, "Haier W66", ALC883_HAIER_W66),
        SND_PCI_QUIRK(0x8086, 0x0001, "DG33BUC", ALC883_3ST_6ch_INTEL),
index d723543beadd68af5fb9f88540412210c7e819be..736246f98accb3e7e3d724da1d74c2ef17b34c4f 100644 (file)
@@ -4548,11 +4548,20 @@ static int snd_hdsp_hwdep_ioctl(struct snd_hwdep *hw, struct file *file, unsigne
 {
        struct hdsp *hdsp = (struct hdsp *)hw->private_data;    
        void __user *argp = (void __user *)arg;
+       int err;
 
        switch (cmd) {
        case SNDRV_HDSP_IOCTL_GET_PEAK_RMS: {
                struct hdsp_peak_rms __user *peak_rms = (struct hdsp_peak_rms __user *)arg;
 
+               err = hdsp_check_for_iobox(hdsp);
+               if (err < 0)
+                       return err;
+
+               err = hdsp_check_for_firmware(hdsp, 1);
+               if (err < 0)
+                       return err;
+
                if (!(hdsp->state & HDSP_FirmwareLoaded)) {
                        snd_printk(KERN_ERR "Hammerfall-DSP: firmware needs to be uploaded to the card.\n");
                        return -EINVAL;
@@ -4572,10 +4581,14 @@ static int snd_hdsp_hwdep_ioctl(struct snd_hwdep *hw, struct file *file, unsigne
                unsigned long flags;
                int i;
                
-               if (!(hdsp->state & HDSP_FirmwareLoaded)) {
-                       snd_printk(KERN_ERR "Hammerfall-DSP: Firmware needs to be uploaded to the card.\n");    
-                       return -EINVAL;
-               }
+               err = hdsp_check_for_iobox(hdsp);
+               if (err < 0)
+                       return err;
+
+               err = hdsp_check_for_firmware(hdsp, 1);
+               if (err < 0)
+                       return err;
+
                spin_lock_irqsave(&hdsp->lock, flags);
                info.pref_sync_ref = (unsigned char)hdsp_pref_sync_ref(hdsp);
                info.wordclock_sync_check = (unsigned char)hdsp_wc_sync_check(hdsp);
@@ -5045,6 +5058,10 @@ static int __devinit snd_hdsp_create(struct snd_card *card,
                /* we wait 2 seconds to let freshly inserted cardbus cards do their hardware init */
                ssleep(2);
 
+               err = hdsp_check_for_iobox(hdsp);
+               if (err < 0)
+                       return err;
+
                if ((hdsp_read (hdsp, HDSP_statusRegister) & HDSP_DllError) != 0) {
 #ifdef HDSP_FW_LOADER
                        if ((err = hdsp_request_fw_loader(hdsp)) < 0)
@@ -5057,7 +5074,7 @@ static int __devinit snd_hdsp_create(struct snd_card *card,
                                /* init is complete, we return */
                                return 0;
 #endif
-                       /* no iobox connected, we defer initialization */
+                       /* we defer initialization */
                        snd_printk(KERN_INFO "Hammerfall-DSP: card initialization pending : waiting for firmware\n");
                        if ((err = snd_hdsp_create_hwdep(card, hdsp)) < 0)
                                return err;