Merge git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
[pandora-kernel.git] / sound / pci / ymfpci / ymfpci_main.c
index 6298b29..92d49aa 100644 (file)
@@ -1994,65 +1994,6 @@ static void snd_ymfpci_disable_dsp(struct snd_ymfpci *chip)
        }
 }
 
-#ifdef CONFIG_SND_YMFPCI_FIRMWARE_IN_KERNEL
-
-#include "ymfpci_image.h"
-
-static struct firmware snd_ymfpci_dsp_microcode = {
-       .size = YDSXG_DSPLENGTH,
-       .data = (u8 *)DspInst,
-};
-static struct firmware snd_ymfpci_controller_microcode = {
-       .size = YDSXG_CTRLLENGTH,
-       .data = (u8 *)CntrlInst,
-};
-static struct firmware snd_ymfpci_controller_1e_microcode = {
-       .size = YDSXG_CTRLLENGTH,
-       .data = (u8 *)CntrlInst1E,
-};
-
-#ifdef __BIG_ENDIAN
-static int microcode_swapped;
-static DEFINE_MUTEX(microcode_swap);
-
-static void snd_ymfpci_convert_to_le(const struct firmware *fw)
-{
-       int i;
-       u32 *data = (u32 *)fw->data;
-
-       for (i = 0; i < fw->size / 4; ++i)
-               cpu_to_le32s(&data[i]);
-}
-#endif
-
-static int snd_ymfpci_request_firmware(struct snd_ymfpci *chip)
-{
-#ifdef __BIG_ENDIAN
-       mutex_lock(&microcode_swap);
-       if (!microcode_swapped) {
-               snd_ymfpci_convert_to_le(&snd_ymfpci_dsp_microcode);
-               snd_ymfpci_convert_to_le(&snd_ymfpci_controller_1e_microcode);
-               snd_ymfpci_convert_to_le(&snd_ymfpci_controller_microcode);
-               microcode_swapped = 1;
-       }
-       mutex_unlock(&microcode_swap);
-#endif
-
-       chip->dsp_microcode = &snd_ymfpci_dsp_microcode;
-       if (chip->device_id == PCI_DEVICE_ID_YAMAHA_724F ||
-           chip->device_id == PCI_DEVICE_ID_YAMAHA_740C ||
-           chip->device_id == PCI_DEVICE_ID_YAMAHA_744 ||
-           chip->device_id == PCI_DEVICE_ID_YAMAHA_754)
-               chip->controller_microcode =
-                       &snd_ymfpci_controller_1e_microcode;
-       else
-               chip->controller_microcode =
-                       &snd_ymfpci_controller_microcode;
-       return 0;
-}
-
-#else /* use fw_loader */
-
 static int snd_ymfpci_request_firmware(struct snd_ymfpci *chip)
 {
        int err, is_1e;
@@ -2091,8 +2032,6 @@ MODULE_FIRMWARE("yamaha/ds1_dsp.fw");
 MODULE_FIRMWARE("yamaha/ds1_ctrl.fw");
 MODULE_FIRMWARE("yamaha/ds1e_ctrl.fw");
 
-#endif
-
 static void snd_ymfpci_download_image(struct snd_ymfpci *chip)
 {
        int i;
@@ -2214,6 +2153,7 @@ static int __devinit snd_ymfpci_memalloc(struct snd_ymfpci *chip)
        for (reg = 0x80; reg < 0xc0; reg += 4)
                snd_ymfpci_writel(chip, reg, 0);
        snd_ymfpci_writel(chip, YDSXGR_NATIVEDACOUTVOL, 0x3fff3fff);
+       snd_ymfpci_writel(chip, YDSXGR_BUF441OUTVOL, 0x3fff3fff);
        snd_ymfpci_writel(chip, YDSXGR_ZVOUTVOL, 0x3fff3fff);
        snd_ymfpci_writel(chip, YDSXGR_SPDIFOUTVOL, 0x3fff3fff);
        snd_ymfpci_writel(chip, YDSXGR_NATIVEADCINVOL, 0x3fff3fff);
@@ -2273,10 +2213,8 @@ static int snd_ymfpci_free(struct snd_ymfpci *chip)
        pci_write_config_word(chip->pci, 0x40, chip->old_legacy_ctrl);
        
        pci_disable_device(chip->pci);
-#ifndef CONFIG_SND_YMFPCI_FIRMWARE_IN_KERNEL
        release_firmware(chip->dsp_microcode);
        release_firmware(chip->controller_microcode);
-#endif
        kfree(chip);
        return 0;
 }
@@ -2333,6 +2271,7 @@ int snd_ymfpci_suspend(struct pci_dev *pci, pm_message_t state)
                chip->saved_regs[i] = snd_ymfpci_readl(chip, saved_regs_index[i]);
        chip->saved_ydsxgr_mode = snd_ymfpci_readl(chip, YDSXGR_MODE);
        snd_ymfpci_writel(chip, YDSXGR_NATIVEDACOUTVOL, 0);
+       snd_ymfpci_writel(chip, YDSXGR_BUF441OUTVOL, 0);
        snd_ymfpci_disable_dsp(chip);
        pci_disable_device(pci);
        pci_save_state(pci);