You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
Conflicts: sound/pci/Kconfig
This commit is contained in:
@@ -453,7 +453,7 @@ int snd_vx_load_boot_image(struct vx_core *chip, const struct firmware *boot)
|
||||
vx_outb(chip, TXM, 0);
|
||||
vx_outb(chip, TXL, 0);
|
||||
} else {
|
||||
unsigned char *image = boot->data + i;
|
||||
const unsigned char *image = boot->data + i;
|
||||
if (vx_wait_isr_bit(chip, ISR_TX_EMPTY) < 0) {
|
||||
snd_printk(KERN_ERR "dsp boot failed at %d\n", i);
|
||||
return -EIO;
|
||||
@@ -671,7 +671,7 @@ int snd_vx_dsp_load(struct vx_core *chip, const struct firmware *dsp)
|
||||
unsigned int i;
|
||||
int err;
|
||||
unsigned int csum = 0;
|
||||
unsigned char *image, *cptr;
|
||||
const unsigned char *image, *cptr;
|
||||
|
||||
snd_assert(dsp->size % 3 == 0, return -EINVAL);
|
||||
|
||||
|
||||
@@ -370,15 +370,6 @@ config SND_SB16_CSP
|
||||
coprocessor can do variable tasks like various compression and
|
||||
decompression algorithms.
|
||||
|
||||
config SND_SB16_CSP_FIRMWARE_IN_KERNEL
|
||||
bool "In-kernel firmware for SB16 CSP"
|
||||
depends on SND_SB16_CSP
|
||||
default y
|
||||
help
|
||||
Say Y here to include the static firmware built in the kernel
|
||||
for the SB16 CSP controller. If you choose N here, you need
|
||||
to install the firmware files from the alsa-firmware package.
|
||||
|
||||
config SND_SGALAXY
|
||||
tristate "Aztech Sound Galaxy"
|
||||
select SND_AD1848_LIB
|
||||
|
||||
@@ -35,13 +35,11 @@
|
||||
MODULE_AUTHOR("Uros Bizjak <uros@kss-loka.si>");
|
||||
MODULE_DESCRIPTION("ALSA driver for SB16 Creative Signal Processor");
|
||||
MODULE_LICENSE("GPL");
|
||||
#ifndef CONFIG_SND_SB16_CSP_FIRMWARE_IN_KERNEL
|
||||
MODULE_FIRMWARE("sb16/mulaw_main.csp");
|
||||
MODULE_FIRMWARE("sb16/alaw_main.csp");
|
||||
MODULE_FIRMWARE("sb16/ima_adpcm_init.csp");
|
||||
MODULE_FIRMWARE("sb16/ima_adpcm_playback.csp");
|
||||
MODULE_FIRMWARE("sb16/ima_adpcm_capture.csp");
|
||||
#endif
|
||||
|
||||
#ifdef SNDRV_LITTLE_ENDIAN
|
||||
#define CSP_HDR_VALUE(a,b,c,d) ((a) | ((b)<<8) | ((c)<<16) | ((d)<<24))
|
||||
@@ -168,17 +166,13 @@ int snd_sb_csp_new(struct snd_sb *chip, int device, struct snd_hwdep ** rhwdep)
|
||||
*/
|
||||
static void snd_sb_csp_free(struct snd_hwdep *hwdep)
|
||||
{
|
||||
#ifndef CONFIG_SND_SB16_CSP_FIRMWARE_IN_KERNEL
|
||||
int i;
|
||||
#endif
|
||||
struct snd_sb_csp *p = hwdep->private_data;
|
||||
if (p) {
|
||||
if (p->running & SNDRV_SB_CSP_ST_RUNNING)
|
||||
snd_sb_csp_stop(p);
|
||||
#ifndef CONFIG_SND_SB16_CSP_FIRMWARE_IN_KERNEL
|
||||
for (i = 0; i < ARRAY_SIZE(p->csp_programs); ++i)
|
||||
release_firmware(p->csp_programs[i]);
|
||||
#endif
|
||||
kfree(p);
|
||||
}
|
||||
}
|
||||
@@ -701,18 +695,6 @@ static int snd_sb_csp_load_user(struct snd_sb_csp * p, const unsigned char __use
|
||||
return err;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SND_SB16_CSP_FIRMWARE_IN_KERNEL
|
||||
#include "sb16_csp_codecs.h"
|
||||
|
||||
static const struct firmware snd_sb_csp_static_programs[] = {
|
||||
{ .data = mulaw_main, .size = sizeof mulaw_main },
|
||||
{ .data = alaw_main, .size = sizeof alaw_main },
|
||||
{ .data = ima_adpcm_init, .size = sizeof ima_adpcm_init },
|
||||
{ .data = ima_adpcm_playback, .size = sizeof ima_adpcm_playback },
|
||||
{ .data = ima_adpcm_capture, .size = sizeof ima_adpcm_capture },
|
||||
};
|
||||
#endif
|
||||
|
||||
static int snd_sb_csp_firmware_load(struct snd_sb_csp *p, int index, int flags)
|
||||
{
|
||||
static const char *const names[] = {
|
||||
@@ -727,14 +709,10 @@ static int snd_sb_csp_firmware_load(struct snd_sb_csp *p, int index, int flags)
|
||||
BUILD_BUG_ON(ARRAY_SIZE(names) != CSP_PROGRAM_COUNT);
|
||||
program = p->csp_programs[index];
|
||||
if (!program) {
|
||||
#ifdef CONFIG_SND_SB16_CSP_FIRMWARE_IN_KERNEL
|
||||
program = &snd_sb_csp_static_programs[index];
|
||||
#else
|
||||
int err = request_firmware(&program, names[index],
|
||||
p->chip->card->dev);
|
||||
if (err < 0)
|
||||
return err;
|
||||
#endif
|
||||
p->csp_programs[index] = program;
|
||||
}
|
||||
return snd_sb_csp_load(p, program->data, program->size, flags);
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -696,7 +696,6 @@ config SND_INTEL8X0M
|
||||
|
||||
config SND_KORG1212
|
||||
tristate "Korg 1212 IO"
|
||||
select FW_LOADER if !SND_KORG1212_FIRMWARE_IN_KERNEL
|
||||
select SND_PCM
|
||||
help
|
||||
Say Y here to include support for Korg 1212IO soundcards.
|
||||
@@ -704,18 +703,8 @@ config SND_KORG1212
|
||||
To compile this driver as a module, choose M here: the module
|
||||
will be called snd-korg1212.
|
||||
|
||||
config SND_KORG1212_FIRMWARE_IN_KERNEL
|
||||
bool "In-kernel firmware for Korg1212 driver"
|
||||
depends on SND_KORG1212
|
||||
default y
|
||||
help
|
||||
Say Y here to include the static firmware built in the kernel
|
||||
for the Korg1212 driver. If you choose N here, you need to
|
||||
install the firmware files from the alsa-firmware package.
|
||||
|
||||
config SND_MAESTRO3
|
||||
tristate "ESS Allegro/Maestro3"
|
||||
select FW_LOADER if !SND_MAESTRO3_FIRMWARE_IN_KERNEL
|
||||
select SND_AC97_CODEC
|
||||
help
|
||||
Say Y here to include support for soundcards based on ESS Maestro 3
|
||||
@@ -724,15 +713,6 @@ config SND_MAESTRO3
|
||||
To compile this driver as a module, choose M here: the module
|
||||
will be called snd-maestro3.
|
||||
|
||||
config SND_MAESTRO3_FIRMWARE_IN_KERNEL
|
||||
bool "In-kernel firmware for Maestro3 driver"
|
||||
depends on SND_MAESTRO3
|
||||
default y
|
||||
help
|
||||
Say Y here to include the static firmware built in the kernel
|
||||
for the Maestro3 driver. If you choose N here, you need to
|
||||
install the firmware files from the alsa-firmware package.
|
||||
|
||||
config SND_MIXART
|
||||
tristate "Digigram miXart"
|
||||
select SND_HWDEP
|
||||
@@ -881,7 +861,6 @@ config SND_VX222
|
||||
|
||||
config SND_YMFPCI
|
||||
tristate "Yamaha YMF724/740/744/754"
|
||||
select FW_LOADER if !SND_YMFPCI_FIRMWARE_IN_KERNEL
|
||||
select SND_OPL3_LIB
|
||||
select SND_MPU401_UART
|
||||
select SND_AC97_CODEC
|
||||
@@ -892,13 +871,4 @@ config SND_YMFPCI
|
||||
To compile this driver as a module, choose M here: the module
|
||||
will be called snd-ymfpci.
|
||||
|
||||
config SND_YMFPCI_FIRMWARE_IN_KERNEL
|
||||
bool "In-kernel firmware for YMFPCI driver"
|
||||
depends on SND_YMFPCI
|
||||
default y
|
||||
help
|
||||
Say Y here to include the static firmware built in the kernel
|
||||
for the YMFPCI driver. If you choose N here, you need to
|
||||
install the firmware files from the alsa-firmware package.
|
||||
|
||||
endif # SND_PCI
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -260,14 +260,6 @@ enum MonitorModeSelector {
|
||||
#define COMMAND_ACK_DELAY 13 // number of RTC ticks to wait for an acknowledgement
|
||||
// from the card after sending a command.
|
||||
|
||||
#ifdef CONFIG_SND_KORG1212_FIRMWARE_IN_KERNEL
|
||||
#include "korg1212-firmware.h"
|
||||
static const struct firmware static_dsp_code = {
|
||||
.data = (u8 *)dspCode,
|
||||
.size = sizeof dspCode
|
||||
};
|
||||
#endif
|
||||
|
||||
enum ClockSourceIndex {
|
||||
K1212_CLKIDX_AdatAt44_1K = 0, // selects source as ADAT at 44.1 kHz
|
||||
K1212_CLKIDX_AdatAt48K, // selects source as ADAT at 48 kHz
|
||||
@@ -412,9 +404,7 @@ struct snd_korg1212 {
|
||||
MODULE_DESCRIPTION("korg1212");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_SUPPORTED_DEVICE("{{KORG,korg1212}}");
|
||||
#ifndef CONFIG_SND_KORG1212_FIRMWARE_IN_KERNEL
|
||||
MODULE_FIRMWARE("korg/k1212.dsp");
|
||||
#endif
|
||||
|
||||
static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX; /* Index 0-MAX */
|
||||
static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR; /* ID for this card */
|
||||
@@ -2348,9 +2338,6 @@ static int __devinit snd_korg1212_create(struct snd_card *card, struct pci_dev *
|
||||
korg1212->AdatTimeCodePhy = korg1212->sharedBufferPhy +
|
||||
offsetof(struct KorgSharedBuffer, AdatTimeCode);
|
||||
|
||||
#ifdef CONFIG_SND_KORG1212_FIRMWARE_IN_KERNEL
|
||||
dsp_code = &static_dsp_code;
|
||||
#else
|
||||
err = request_firmware(&dsp_code, "korg/k1212.dsp", &pci->dev);
|
||||
if (err < 0) {
|
||||
release_firmware(dsp_code);
|
||||
@@ -2358,15 +2345,12 @@ static int __devinit snd_korg1212_create(struct snd_card *card, struct pci_dev *
|
||||
snd_korg1212_free(korg1212);
|
||||
return err;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (snd_dma_alloc_pages(SNDRV_DMA_TYPE_DEV, snd_dma_pci_data(pci),
|
||||
dsp_code->size, &korg1212->dma_dsp) < 0) {
|
||||
snd_printk(KERN_ERR "korg1212: cannot allocate dsp code memory (%zd bytes)\n", dsp_code->size);
|
||||
snd_korg1212_free(korg1212);
|
||||
#ifndef CONFIG_SND_KORG1212_FIRMWARE_IN_KERNEL
|
||||
release_firmware(dsp_code);
|
||||
#endif
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
@@ -2376,9 +2360,7 @@ static int __devinit snd_korg1212_create(struct snd_card *card, struct pci_dev *
|
||||
|
||||
memcpy(korg1212->dma_dsp.area, dsp_code->data, dsp_code->size);
|
||||
|
||||
#ifndef CONFIG_SND_KORG1212_FIRMWARE_IN_KERNEL
|
||||
release_firmware(dsp_code);
|
||||
#endif
|
||||
|
||||
rc = snd_korg1212_Send1212Command(korg1212, K1212_DB_RebootCard, 0, 0, 0, 0);
|
||||
|
||||
|
||||
+8
-178
@@ -58,10 +58,8 @@ MODULE_SUPPORTED_DEVICE("{{ESS,Maestro3 PCI},"
|
||||
"{ESS,Allegro PCI},"
|
||||
"{ESS,Allegro-1 PCI},"
|
||||
"{ESS,Canyon3D-2/LE PCI}}");
|
||||
#ifndef CONFIG_SND_MAESTRO3_FIRMWARE_IN_KERNEL
|
||||
MODULE_FIRMWARE("ess/maestro3_assp_kernel.fw");
|
||||
MODULE_FIRMWARE("ess/maestro3_assp_minisrc.fw");
|
||||
#endif
|
||||
|
||||
static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX; /* Index 0-MAX */
|
||||
static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR; /* ID for this card */
|
||||
@@ -2101,163 +2099,6 @@ static int __devinit snd_m3_mixer(struct snd_m3 *chip)
|
||||
}
|
||||
|
||||
|
||||
#ifdef CONFIG_SND_MAESTRO3_FIRMWARE_IN_KERNEL
|
||||
|
||||
/*
|
||||
* DSP Code images
|
||||
*/
|
||||
|
||||
static const u16 assp_kernel_image[] = {
|
||||
0x7980, 0x0030, 0x7980, 0x03B4, 0x7980, 0x03B4, 0x7980, 0x00FB, 0x7980, 0x00DD, 0x7980, 0x03B4,
|
||||
0x7980, 0x0332, 0x7980, 0x0287, 0x7980, 0x03B4, 0x7980, 0x03B4, 0x7980, 0x03B4, 0x7980, 0x03B4,
|
||||
0x7980, 0x031A, 0x7980, 0x03B4, 0x7980, 0x022F, 0x7980, 0x03B4, 0x7980, 0x03B4, 0x7980, 0x03B4,
|
||||
0x7980, 0x03B4, 0x7980, 0x03B4, 0x7980, 0x0063, 0x7980, 0x006B, 0x7980, 0x03B4, 0x7980, 0x03B4,
|
||||
0xBF80, 0x2C7C, 0x8806, 0x8804, 0xBE40, 0xBC20, 0xAE09, 0x1000, 0xAE0A, 0x0001, 0x6938, 0xEB08,
|
||||
0x0053, 0x695A, 0xEB08, 0x00D6, 0x0009, 0x8B88, 0x6980, 0xE388, 0x0036, 0xBE30, 0xBC20, 0x6909,
|
||||
0xB801, 0x9009, 0xBE41, 0xBE41, 0x6928, 0xEB88, 0x0078, 0xBE41, 0xBE40, 0x7980, 0x0038, 0xBE41,
|
||||
0xBE41, 0x903A, 0x6938, 0xE308, 0x0056, 0x903A, 0xBE41, 0xBE40, 0xEF00, 0x903A, 0x6939, 0xE308,
|
||||
0x005E, 0x903A, 0xEF00, 0x690B, 0x660C, 0xEF8C, 0x690A, 0x660C, 0x620B, 0x6609, 0xEF00, 0x6910,
|
||||
0x660F, 0xEF04, 0xE388, 0x0075, 0x690E, 0x660F, 0x6210, 0x660D, 0xEF00, 0x690E, 0x660D, 0xEF00,
|
||||
0xAE70, 0x0001, 0xBC20, 0xAE27, 0x0001, 0x6939, 0xEB08, 0x005D, 0x6926, 0xB801, 0x9026, 0x0026,
|
||||
0x8B88, 0x6980, 0xE388, 0x00CB, 0x9028, 0x0D28, 0x4211, 0xE100, 0x007A, 0x4711, 0xE100, 0x00A0,
|
||||
0x7A80, 0x0063, 0xB811, 0x660A, 0x6209, 0xE304, 0x007A, 0x0C0B, 0x4005, 0x100A, 0xBA01, 0x9012,
|
||||
0x0C12, 0x4002, 0x7980, 0x00AF, 0x7A80, 0x006B, 0xBE02, 0x620E, 0x660D, 0xBA10, 0xE344, 0x007A,
|
||||
0x0C10, 0x4005, 0x100E, 0xBA01, 0x9012, 0x0C12, 0x4002, 0x1003, 0xBA02, 0x9012, 0x0C12, 0x4000,
|
||||
0x1003, 0xE388, 0x00BA, 0x1004, 0x7980, 0x00BC, 0x1004, 0xBA01, 0x9012, 0x0C12, 0x4001, 0x0C05,
|
||||
0x4003, 0x0C06, 0x4004, 0x1011, 0xBFB0, 0x01FF, 0x9012, 0x0C12, 0x4006, 0xBC20, 0xEF00, 0xAE26,
|
||||
0x1028, 0x6970, 0xBFD0, 0x0001, 0x9070, 0xE388, 0x007A, 0xAE28, 0x0000, 0xEF00, 0xAE70, 0x0300,
|
||||
0x0C70, 0xB00C, 0xAE5A, 0x0000, 0xEF00, 0x7A80, 0x038A, 0x697F, 0xB801, 0x907F, 0x0056, 0x8B88,
|
||||
0x0CA0, 0xB008, 0xAF71, 0xB000, 0x4E71, 0xE200, 0x00F3, 0xAE56, 0x1057, 0x0056, 0x0CA0, 0xB008,
|
||||
0x8056, 0x7980, 0x03A1, 0x0810, 0xBFA0, 0x1059, 0xE304, 0x03A1, 0x8056, 0x7980, 0x03A1, 0x7A80,
|
||||
0x038A, 0xBF01, 0xBE43, 0xBE59, 0x907C, 0x6937, 0xE388, 0x010D, 0xBA01, 0xE308, 0x010C, 0xAE71,
|
||||
0x0004, 0x0C71, 0x5000, 0x6936, 0x9037, 0xBF0A, 0x109E, 0x8B8A, 0xAF80, 0x8014, 0x4C80, 0xBF0A,
|
||||
0x0560, 0xF500, 0xBF0A, 0x0520, 0xB900, 0xBB17, 0x90A0, 0x6917, 0xE388, 0x0148, 0x0D17, 0xE100,
|
||||
0x0127, 0xBF0C, 0x0578, 0xBF0D, 0x057C, 0x7980, 0x012B, 0xBF0C, 0x0538, 0xBF0D, 0x053C, 0x6900,
|
||||
0xE308, 0x0135, 0x8B8C, 0xBE59, 0xBB07, 0x90A0, 0xBC20, 0x7980, 0x0157, 0x030C, 0x8B8B, 0xB903,
|
||||
0x8809, 0xBEC6, 0x013E, 0x69AC, 0x90AB, 0x69AD, 0x90AB, 0x0813, 0x660A, 0xE344, 0x0144, 0x0309,
|
||||
0x830C, 0xBC20, 0x7980, 0x0157, 0x6955, 0xE388, 0x0157, 0x7C38, 0xBF0B, 0x0578, 0xF500, 0xBF0B,
|
||||
0x0538, 0xB907, 0x8809, 0xBEC6, 0x0156, 0x10AB, 0x90AA, 0x6974, 0xE388, 0x0163, 0xAE72, 0x0540,
|
||||
0xF500, 0xAE72, 0x0500, 0xAE61, 0x103B, 0x7A80, 0x02F6, 0x6978, 0xE388, 0x0182, 0x8B8C, 0xBF0C,
|
||||
0x0560, 0xE500, 0x7C40, 0x0814, 0xBA20, 0x8812, 0x733D, 0x7A80, 0x0380, 0x733E, 0x7A80, 0x0380,
|
||||
0x8B8C, 0xBF0C, 0x056C, 0xE500, 0x7C40, 0x0814, 0xBA2C, 0x8812, 0x733F, 0x7A80, 0x0380, 0x7340,
|
||||
0x7A80, 0x0380, 0x6975, 0xE388, 0x018E, 0xAE72, 0x0548, 0xF500, 0xAE72, 0x0508, 0xAE61, 0x1041,
|
||||
0x7A80, 0x02F6, 0x6979, 0xE388, 0x01AD, 0x8B8C, 0xBF0C, 0x0560, 0xE500, 0x7C40, 0x0814, 0xBA18,
|
||||
0x8812, 0x7343, 0x7A80, 0x0380, 0x7344, 0x7A80, 0x0380, 0x8B8C, 0xBF0C, 0x056C, 0xE500, 0x7C40,
|
||||
0x0814, 0xBA24, 0x8812, 0x7345, 0x7A80, 0x0380, 0x7346, 0x7A80, 0x0380, 0x6976, 0xE388, 0x01B9,
|
||||
0xAE72, 0x0558, 0xF500, 0xAE72, 0x0518, 0xAE61, 0x1047, 0x7A80, 0x02F6, 0x697A, 0xE388, 0x01D8,
|
||||
0x8B8C, 0xBF0C, 0x0560, 0xE500, 0x7C40, 0x0814, 0xBA08, 0x8812, 0x7349, 0x7A80, 0x0380, 0x734A,
|
||||
0x7A80, 0x0380, 0x8B8C, 0xBF0C, 0x056C, 0xE500, 0x7C40, 0x0814, 0xBA14, 0x8812, 0x734B, 0x7A80,
|
||||
0x0380, 0x734C, 0x7A80, 0x0380, 0xBC21, 0xAE1C, 0x1090, 0x8B8A, 0xBF0A, 0x0560, 0xE500, 0x7C40,
|
||||
0x0812, 0xB804, 0x8813, 0x8B8D, 0xBF0D, 0x056C, 0xE500, 0x7C40, 0x0815, 0xB804, 0x8811, 0x7A80,
|
||||
0x034A, 0x8B8A, 0xBF0A, 0x0560, 0xE500, 0x7C40, 0x731F, 0xB903, 0x8809, 0xBEC6, 0x01F9, 0x548A,
|
||||
0xBE03, 0x98A0, 0x7320, 0xB903, 0x8809, 0xBEC6, 0x0201, 0x548A, 0xBE03, 0x98A0, 0x1F20, 0x2F1F,
|
||||
0x9826, 0xBC20, 0x6935, 0xE388, 0x03A1, 0x6933, 0xB801, 0x9033, 0xBFA0, 0x02EE, 0xE308, 0x03A1,
|
||||
0x9033, 0xBF00, 0x6951, 0xE388, 0x021F, 0x7334, 0xBE80, 0x5760, 0xBE03, 0x9F7E, 0xBE59, 0x9034,
|
||||
0x697E, 0x0D51, 0x9013, 0xBC20, 0x695C, 0xE388, 0x03A1, 0x735E, 0xBE80, 0x5760, 0xBE03, 0x9F7E,
|
||||
0xBE59, 0x905E, 0x697E, 0x0D5C, 0x9013, 0x7980, 0x03A1, 0x7A80, 0x038A, 0xBF01, 0xBE43, 0x6977,
|
||||
0xE388, 0x024E, 0xAE61, 0x104D, 0x0061, 0x8B88, 0x6980, 0xE388, 0x024E, 0x9071, 0x0D71, 0x000B,
|
||||
0xAFA0, 0x8010, 0xAFA0, 0x8010, 0x0810, 0x660A, 0xE308, 0x0249, 0x0009, 0x0810, 0x660C, 0xE388,
|
||||
0x024E, 0x800B, 0xBC20, 0x697B, 0xE388, 0x03A1, 0xBF0A, 0x109E, 0x8B8A, 0xAF80, 0x8014, 0x4C80,
|
||||
0xE100, 0x0266, 0x697C, 0xBF90, 0x0560, 0x9072, 0x0372, 0x697C, 0xBF90, 0x0564, 0x9073, 0x0473,
|
||||
0x7980, 0x0270, 0x697C, 0xBF90, 0x0520, 0x9072, 0x0372, 0x697C, 0xBF90, 0x0524, 0x9073, 0x0473,
|
||||
0x697C, 0xB801, 0x907C, 0xBF0A, 0x10FD, 0x8B8A, 0xAF80, 0x8010, 0x734F, 0x548A, 0xBE03, 0x9880,
|
||||
0xBC21, 0x7326, 0x548B, 0xBE03, 0x618B, 0x988C, 0xBE03, 0x6180, 0x9880, 0x7980, 0x03A1, 0x7A80,
|
||||
0x038A, 0x0D28, 0x4711, 0xE100, 0x02BE, 0xAF12, 0x4006, 0x6912, 0xBFB0, 0x0C00, 0xE388, 0x02B6,
|
||||
0xBFA0, 0x0800, 0xE388, 0x02B2, 0x6912, 0xBFB0, 0x0C00, 0xBFA0, 0x0400, 0xE388, 0x02A3, 0x6909,
|
||||
0x900B, 0x7980, 0x02A5, 0xAF0B, 0x4005, 0x6901, 0x9005, 0x6902, 0x9006, 0x4311, 0xE100, 0x02ED,
|
||||
0x6911, 0xBFC0, 0x2000, 0x9011, 0x7980, 0x02ED, 0x6909, 0x900B, 0x7980, 0x02B8, 0xAF0B, 0x4005,
|
||||
0xAF05, 0x4003, 0xAF06, 0x4004, 0x7980, 0x02ED, 0xAF12, 0x4006, 0x6912, 0xBFB0, 0x0C00, 0xE388,
|
||||
0x02E7, 0xBFA0, 0x0800, 0xE388, 0x02E3, 0x6912, 0xBFB0, 0x0C00, 0xBFA0, 0x0400, 0xE388, 0x02D4,
|
||||
0x690D, 0x9010, 0x7980, 0x02D6, 0xAF10, 0x4005, 0x6901, 0x9005, 0x6902, 0x9006, 0x4311, 0xE100,
|
||||
0x02ED, 0x6911, 0xBFC0, 0x2000, 0x9011, 0x7980, 0x02ED, 0x690D, 0x9010, 0x7980, 0x02E9, 0xAF10,
|
||||
0x4005, 0xAF05, 0x4003, 0xAF06, 0x4004, 0xBC20, 0x6970, 0x9071, 0x7A80, 0x0078, 0x6971, 0x9070,
|
||||
0x7980, 0x03A1, 0xBC20, 0x0361, 0x8B8B, 0x6980, 0xEF88, 0x0272, 0x0372, 0x7804, 0x9071, 0x0D71,
|
||||
0x8B8A, 0x000B, 0xB903, 0x8809, 0xBEC6, 0x0309, 0x69A8, 0x90AB, 0x69A8, 0x90AA, 0x0810, 0x660A,
|
||||
0xE344, 0x030F, 0x0009, 0x0810, 0x660C, 0xE388, 0x0314, 0x800B, 0xBC20, 0x6961, 0xB801, 0x9061,
|
||||
0x7980, 0x02F7, 0x7A80, 0x038A, 0x5D35, 0x0001, 0x6934, 0xB801, 0x9034, 0xBF0A, 0x109E, 0x8B8A,
|
||||
0xAF80, 0x8014, 0x4880, 0xAE72, 0x0550, 0xF500, 0xAE72, 0x0510, 0xAE61, 0x1051, 0x7A80, 0x02F6,
|
||||
0x7980, 0x03A1, 0x7A80, 0x038A, 0x5D35, 0x0002, 0x695E, 0xB801, 0x905E, 0xBF0A, 0x109E, 0x8B8A,
|
||||
0xAF80, 0x8014, 0x4780, 0xAE72, 0x0558, 0xF500, 0xAE72, 0x0518, 0xAE61, 0x105C, 0x7A80, 0x02F6,
|
||||
0x7980, 0x03A1, 0x001C, 0x8B88, 0x6980, 0xEF88, 0x901D, 0x0D1D, 0x100F, 0x6610, 0xE38C, 0x0358,
|
||||
0x690E, 0x6610, 0x620F, 0x660D, 0xBA0F, 0xE301, 0x037A, 0x0410, 0x8B8A, 0xB903, 0x8809, 0xBEC6,
|
||||
0x036C, 0x6A8C, 0x61AA, 0x98AB, 0x6A8C, 0x61AB, 0x98AD, 0x6A8C, 0x61AD, 0x98A9, 0x6A8C, 0x61A9,
|
||||
0x98AA, 0x7C04, 0x8B8B, 0x7C04, 0x8B8D, 0x7C04, 0x8B89, 0x7C04, 0x0814, 0x660E, 0xE308, 0x0379,
|
||||
0x040D, 0x8410, 0xBC21, 0x691C, 0xB801, 0x901C, 0x7980, 0x034A, 0xB903, 0x8809, 0x8B8A, 0xBEC6,
|
||||
0x0388, 0x54AC, 0xBE03, 0x618C, 0x98AA, 0xEF00, 0xBC20, 0xBE46, 0x0809, 0x906B, 0x080A, 0x906C,
|
||||
0x080B, 0x906D, 0x081A, 0x9062, 0x081B, 0x9063, 0x081E, 0x9064, 0xBE59, 0x881E, 0x8065, 0x8166,
|
||||
0x8267, 0x8368, 0x8469, 0x856A, 0xEF00, 0xBC20, 0x696B, 0x8809, 0x696C, 0x880A, 0x696D, 0x880B,
|
||||
0x6962, 0x881A, 0x6963, 0x881B, 0x6964, 0x881E, 0x0065, 0x0166, 0x0267, 0x0368, 0x0469, 0x056A,
|
||||
0xBE3A,
|
||||
};
|
||||
|
||||
/*
|
||||
* Mini sample rate converter code image
|
||||
* that is to be loaded at 0x400 on the DSP.
|
||||
*/
|
||||
static const u16 assp_minisrc_image[] = {
|
||||
|
||||
0xBF80, 0x101E, 0x906E, 0x006E, 0x8B88, 0x6980, 0xEF88, 0x906F, 0x0D6F, 0x6900, 0xEB08, 0x0412,
|
||||
0xBC20, 0x696E, 0xB801, 0x906E, 0x7980, 0x0403, 0xB90E, 0x8807, 0xBE43, 0xBF01, 0xBE47, 0xBE41,
|
||||
0x7A80, 0x002A, 0xBE40, 0x3029, 0xEFCC, 0xBE41, 0x7A80, 0x0028, 0xBE40, 0x3028, 0xEFCC, 0x6907,
|
||||
0xE308, 0x042A, 0x6909, 0x902C, 0x7980, 0x042C, 0x690D, 0x902C, 0x1009, 0x881A, 0x100A, 0xBA01,
|
||||
0x881B, 0x100D, 0x881C, 0x100E, 0xBA01, 0x881D, 0xBF80, 0x00ED, 0x881E, 0x050C, 0x0124, 0xB904,
|
||||
0x9027, 0x6918, 0xE308, 0x04B3, 0x902D, 0x6913, 0xBFA0, 0x7598, 0xF704, 0xAE2D, 0x00FF, 0x8B8D,
|
||||
0x6919, 0xE308, 0x0463, 0x691A, 0xE308, 0x0456, 0xB907, 0x8809, 0xBEC6, 0x0453, 0x10A9, 0x90AD,
|
||||
0x7980, 0x047C, 0xB903, 0x8809, 0xBEC6, 0x0460, 0x1889, 0x6C22, 0x90AD, 0x10A9, 0x6E23, 0x6C22,
|
||||
0x90AD, 0x7980, 0x047C, 0x101A, 0xE308, 0x046F, 0xB903, 0x8809, 0xBEC6, 0x046C, 0x10A9, 0x90A0,
|
||||
0x90AD, 0x7980, 0x047C, 0xB901, 0x8809, 0xBEC6, 0x047B, 0x1889, 0x6C22, 0x90A0, 0x90AD, 0x10A9,
|
||||
0x6E23, 0x6C22, 0x90A0, 0x90AD, 0x692D, 0xE308, 0x049C, 0x0124, 0xB703, 0xB902, 0x8818, 0x8B89,
|
||||
0x022C, 0x108A, 0x7C04, 0x90A0, 0x692B, 0x881F, 0x7E80, 0x055B, 0x692A, 0x8809, 0x8B89, 0x99A0,
|
||||
0x108A, 0x90A0, 0x692B, 0x881F, 0x7E80, 0x055B, 0x692A, 0x8809, 0x8B89, 0x99AF, 0x7B99, 0x0484,
|
||||
0x0124, 0x060F, 0x101B, 0x2013, 0x901B, 0xBFA0, 0x7FFF, 0xE344, 0x04AC, 0x901B, 0x8B89, 0x7A80,
|
||||
0x051A, 0x6927, 0xBA01, 0x9027, 0x7A80, 0x0523, 0x6927, 0xE308, 0x049E, 0x7980, 0x050F, 0x0624,
|
||||
0x1026, 0x2013, 0x9026, 0xBFA0, 0x7FFF, 0xE304, 0x04C0, 0x8B8D, 0x7A80, 0x051A, 0x7980, 0x04B4,
|
||||
0x9026, 0x1013, 0x3026, 0x901B, 0x8B8D, 0x7A80, 0x051A, 0x7A80, 0x0523, 0x1027, 0xBA01, 0x9027,
|
||||
0xE308, 0x04B4, 0x0124, 0x060F, 0x8B89, 0x691A, 0xE308, 0x04EA, 0x6919, 0xE388, 0x04E0, 0xB903,
|
||||
0x8809, 0xBEC6, 0x04DD, 0x1FA0, 0x2FAE, 0x98A9, 0x7980, 0x050F, 0xB901, 0x8818, 0xB907, 0x8809,
|
||||
0xBEC6, 0x04E7, 0x10EE, 0x90A9, 0x7980, 0x050F, 0x6919, 0xE308, 0x04FE, 0xB903, 0x8809, 0xBE46,
|
||||
0xBEC6, 0x04FA, 0x17A0, 0xBE1E, 0x1FAE, 0xBFBF, 0xFF00, 0xBE13, 0xBFDF, 0x8080, 0x99A9, 0xBE47,
|
||||
0x7980, 0x050F, 0xB901, 0x8809, 0xBEC6, 0x050E, 0x16A0, 0x26A0, 0xBFB7, 0xFF00, 0xBE1E, 0x1EA0,
|
||||
0x2EAE, 0xBFBF, 0xFF00, 0xBE13, 0xBFDF, 0x8080, 0x99A9, 0x850C, 0x860F, 0x6907, 0xE388, 0x0516,
|
||||
0x0D07, 0x8510, 0xBE59, 0x881E, 0xBE4A, 0xEF00, 0x101E, 0x901C, 0x101F, 0x901D, 0x10A0, 0x901E,
|
||||
0x10A0, 0x901F, 0xEF00, 0x101E, 0x301C, 0x9020, 0x731B, 0x5420, 0xBE03, 0x9825, 0x1025, 0x201C,
|
||||
0x9025, 0x7325, 0x5414, 0xBE03, 0x8B8E, 0x9880, 0x692F, 0xE388, 0x0539, 0xBE59, 0xBB07, 0x6180,
|
||||
0x9880, 0x8BA0, 0x101F, 0x301D, 0x9021, 0x731B, 0x5421, 0xBE03, 0x982E, 0x102E, 0x201D, 0x902E,
|
||||
0x732E, 0x5415, 0xBE03, 0x9880, 0x692F, 0xE388, 0x054F, 0xBE59, 0xBB07, 0x6180, 0x9880, 0x8BA0,
|
||||
0x6918, 0xEF08, 0x7325, 0x5416, 0xBE03, 0x98A0, 0x732E, 0x5417, 0xBE03, 0x98A0, 0xEF00, 0x8BA0,
|
||||
0xBEC6, 0x056B, 0xBE59, 0xBB04, 0xAA90, 0xBE04, 0xBE1E, 0x99E0, 0x8BE0, 0x69A0, 0x90D0, 0x69A0,
|
||||
0x90D0, 0x081F, 0xB805, 0x881F, 0x8B90, 0x69A0, 0x90D0, 0x69A0, 0x9090, 0x8BD0, 0x8BD8, 0xBE1F,
|
||||
0xEF00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
};
|
||||
|
||||
static const struct firmware assp_kernel = {
|
||||
.data = (u8 *)assp_kernel_image,
|
||||
.size = sizeof assp_kernel_image
|
||||
};
|
||||
static const struct firmware assp_minisrc = {
|
||||
.data = (u8 *)assp_minisrc_image,
|
||||
.size = sizeof assp_minisrc_image
|
||||
};
|
||||
|
||||
#else /* CONFIG_SND_MAESTRO3_FIRMWARE_IN_KERNEL */
|
||||
|
||||
#ifdef __LITTLE_ENDIAN
|
||||
static inline void snd_m3_convert_from_le(const struct firmware *fw) { }
|
||||
#else
|
||||
static void snd_m3_convert_from_le(const struct firmware *fw)
|
||||
{
|
||||
int i;
|
||||
u16 *data = (u16 *)fw->data;
|
||||
|
||||
for (i = 0; i < fw->size / 2; ++i)
|
||||
le16_to_cpus(&data[i]);
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* CONFIG_SND_MAESTRO3_FIRMWARE_IN_KERNEL */
|
||||
|
||||
|
||||
/*
|
||||
* initialize ASSP
|
||||
*/
|
||||
@@ -2271,7 +2112,7 @@ static const u16 minisrc_lpf[MINISRC_LPF_LEN] = {
|
||||
static void snd_m3_assp_init(struct snd_m3 *chip)
|
||||
{
|
||||
unsigned int i;
|
||||
u16 *data;
|
||||
const u16 *data;
|
||||
|
||||
/* zero kernel data */
|
||||
for (i = 0; i < (REV_B_DATA_MEMORY_UNIT_LENGTH * NUM_UNITS_KERNEL_DATA) / 2; i++)
|
||||
@@ -2289,10 +2130,11 @@ static void snd_m3_assp_init(struct snd_m3 *chip)
|
||||
KDATA_DMA_XFER0);
|
||||
|
||||
/* write kernel into code memory.. */
|
||||
data = (u16 *)chip->assp_kernel_image->data;
|
||||
data = (const u16 *)chip->assp_kernel_image->data;
|
||||
for (i = 0 ; i * 2 < chip->assp_kernel_image->size; i++) {
|
||||
snd_m3_assp_write(chip, MEMTYPE_INTERNAL_CODE,
|
||||
REV_B_CODE_MEMORY_BEGIN + i, data[i]);
|
||||
REV_B_CODE_MEMORY_BEGIN + i,
|
||||
le16_to_cpu(data[i]));
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -2301,10 +2143,10 @@ static void snd_m3_assp_init(struct snd_m3 *chip)
|
||||
* drop it there. It seems that the minisrc doesn't
|
||||
* need vectors, so we won't bother with them..
|
||||
*/
|
||||
data = (u16 *)chip->assp_minisrc_image->data;
|
||||
data = (const u16 *)chip->assp_minisrc_image->data;
|
||||
for (i = 0; i * 2 < chip->assp_minisrc_image->size; i++) {
|
||||
snd_m3_assp_write(chip, MEMTYPE_INTERNAL_CODE,
|
||||
0x400 + i, data[i]);
|
||||
0x400 + i, le16_to_cpu(data[i]));
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -2556,10 +2398,8 @@ static int snd_m3_free(struct snd_m3 *chip)
|
||||
if (chip->iobase)
|
||||
pci_release_regions(chip->pci);
|
||||
|
||||
#ifndef CONFIG_SND_MAESTRO3_FIRMWARE_IN_KERNEL
|
||||
release_firmware(chip->assp_kernel_image);
|
||||
release_firmware(chip->assp_minisrc_image);
|
||||
#endif
|
||||
|
||||
pci_disable_device(chip->pci);
|
||||
kfree(chip);
|
||||
@@ -2751,29 +2591,19 @@ snd_m3_create(struct snd_card *card, struct pci_dev *pci,
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SND_MAESTRO3_FIRMWARE_IN_KERNEL
|
||||
chip->assp_kernel_image = &assp_kernel;
|
||||
#else
|
||||
err = request_firmware(&chip->assp_kernel_image,
|
||||
"ess/maestro3_assp_kernel.fw", &pci->dev);
|
||||
if (err < 0) {
|
||||
snd_m3_free(chip);
|
||||
return err;
|
||||
} else
|
||||
snd_m3_convert_from_le(chip->assp_kernel_image);
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SND_MAESTRO3_FIRMWARE_IN_KERNEL
|
||||
chip->assp_minisrc_image = &assp_minisrc;
|
||||
#else
|
||||
err = request_firmware(&chip->assp_minisrc_image,
|
||||
"ess/maestro3_assp_minisrc.fw", &pci->dev);
|
||||
if (err < 0) {
|
||||
snd_m3_free(chip);
|
||||
return err;
|
||||
} else
|
||||
snd_m3_convert_from_le(chip->assp_minisrc_image);
|
||||
#endif
|
||||
}
|
||||
|
||||
if ((err = pci_request_regions(pci, card->driver)) < 0) {
|
||||
snd_m3_free(chip);
|
||||
|
||||
@@ -613,7 +613,7 @@ static int mixart_hwdep_dsp_load(struct snd_hwdep *hw,
|
||||
(int)dsp->length);
|
||||
return -ENOMEM;
|
||||
}
|
||||
if (copy_from_user(fw.data, dsp->image, dsp->length)) {
|
||||
if (copy_from_user((void *) fw.data, dsp->image, dsp->length)) {
|
||||
vfree(fw.data);
|
||||
return -EFAULT;
|
||||
}
|
||||
|
||||
@@ -269,7 +269,7 @@ int pcxhr_load_xilinx_binary(struct pcxhr_mgr *mgr, const struct firmware *xilin
|
||||
unsigned int chipsc;
|
||||
unsigned char data;
|
||||
unsigned char mask;
|
||||
unsigned char *image;
|
||||
const unsigned char *image;
|
||||
|
||||
/* test first xilinx */
|
||||
chipsc = PCXHR_INPL(mgr, PCXHR_PLX_CHIPSC);
|
||||
@@ -316,7 +316,7 @@ static int pcxhr_download_dsp(struct pcxhr_mgr *mgr, const struct firmware *dsp)
|
||||
int err;
|
||||
unsigned int i;
|
||||
unsigned int len;
|
||||
unsigned char *data;
|
||||
const unsigned char *data;
|
||||
unsigned char dummy;
|
||||
/* check the length of boot image */
|
||||
snd_assert(dsp->size > 0, return -EINVAL);
|
||||
|
||||
@@ -394,7 +394,7 @@ static int pcxhr_hwdep_dsp_load(struct snd_hwdep *hw,
|
||||
(unsigned long)fw.size);
|
||||
return -ENOMEM;
|
||||
}
|
||||
if (copy_from_user(fw.data, dsp->image, dsp->length)) {
|
||||
if (copy_from_user((void *)fw.data, dsp->image, dsp->length)) {
|
||||
vfree(fw.data);
|
||||
return -EFAULT;
|
||||
}
|
||||
|
||||
@@ -682,7 +682,7 @@ static union firmware_version firmware_versions[] = {
|
||||
},
|
||||
};
|
||||
|
||||
static u32 atoh(unsigned char *in, unsigned int len)
|
||||
static u32 atoh(const unsigned char *in, unsigned int len)
|
||||
{
|
||||
u32 sum = 0;
|
||||
unsigned int mult = 1;
|
||||
@@ -702,12 +702,12 @@ static u32 atoh(unsigned char *in, unsigned int len)
|
||||
return sum;
|
||||
}
|
||||
|
||||
static int senddata(struct cmdif *cif, unsigned char *in, u32 offset)
|
||||
static int senddata(struct cmdif *cif, const unsigned char *in, u32 offset)
|
||||
{
|
||||
u32 addr;
|
||||
u32 data;
|
||||
u32 i;
|
||||
unsigned char *p;
|
||||
const unsigned char *p;
|
||||
|
||||
i = atoh(&in[1], 2);
|
||||
addr = offset + atoh(&in[3], 4);
|
||||
@@ -726,10 +726,10 @@ static int senddata(struct cmdif *cif, unsigned char *in, u32 offset)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int loadfirmware(struct cmdif *cif, unsigned char *img,
|
||||
static int loadfirmware(struct cmdif *cif, const unsigned char *img,
|
||||
unsigned int size)
|
||||
{
|
||||
unsigned char *in;
|
||||
const unsigned char *in;
|
||||
u32 laddr, saddr, t, val;
|
||||
int err = 0;
|
||||
|
||||
|
||||
@@ -359,7 +359,7 @@ static int vx2_load_xilinx_binary(struct vx_core *chip, const struct firmware *x
|
||||
{
|
||||
unsigned int i;
|
||||
unsigned int port;
|
||||
unsigned char *image;
|
||||
const unsigned char *image;
|
||||
|
||||
/* XILINX reset (wait at least 1 milisecond between reset on and off). */
|
||||
vx_outl(chip, CNTRL, VX_CNTRL_REGISTER_VALUE | VX_XILINX_RESET_MASK);
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -26,6 +26,7 @@
|
||||
#include <linux/sched.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/vmalloc.h>
|
||||
#include <linux/mutex.h>
|
||||
|
||||
#include <sound/core.h>
|
||||
#include <sound/control.h>
|
||||
@@ -1993,55 +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,
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SND_YMFPCI_FIRMWARE_IN_KERNEL
|
||||
static int snd_ymfpci_request_firmware(struct snd_ymfpci *chip)
|
||||
{
|
||||
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 */
|
||||
|
||||
#ifdef __LITTLE_ENDIAN
|
||||
static inline void snd_ymfpci_convert_from_le(const struct firmware *fw) { }
|
||||
#else
|
||||
static void snd_ymfpci_convert_from_le(const struct firmware *fw)
|
||||
{
|
||||
int i;
|
||||
u32 *data = (u32 *)fw->data;
|
||||
|
||||
for (i = 0; i < fw->size / 4; ++i)
|
||||
le32_to_cpus(&data[i]);
|
||||
}
|
||||
#endif
|
||||
|
||||
static int snd_ymfpci_request_firmware(struct snd_ymfpci *chip)
|
||||
{
|
||||
int err, is_1e;
|
||||
@@ -2050,9 +2002,7 @@ static int snd_ymfpci_request_firmware(struct snd_ymfpci *chip)
|
||||
err = request_firmware(&chip->dsp_microcode, "yamaha/ds1_dsp.fw",
|
||||
&chip->pci->dev);
|
||||
if (err >= 0) {
|
||||
if (chip->dsp_microcode->size == YDSXG_DSPLENGTH)
|
||||
snd_ymfpci_convert_from_le(chip->dsp_microcode);
|
||||
else {
|
||||
if (chip->dsp_microcode->size != YDSXG_DSPLENGTH) {
|
||||
snd_printk(KERN_ERR "DSP microcode has wrong size\n");
|
||||
err = -EINVAL;
|
||||
}
|
||||
@@ -2067,9 +2017,7 @@ static int snd_ymfpci_request_firmware(struct snd_ymfpci *chip)
|
||||
err = request_firmware(&chip->controller_microcode, name,
|
||||
&chip->pci->dev);
|
||||
if (err >= 0) {
|
||||
if (chip->controller_microcode->size == YDSXG_CTRLLENGTH)
|
||||
snd_ymfpci_convert_from_le(chip->controller_microcode);
|
||||
else {
|
||||
if (chip->controller_microcode->size != YDSXG_CTRLLENGTH) {
|
||||
snd_printk(KERN_ERR "controller microcode"
|
||||
" has wrong size\n");
|
||||
err = -EINVAL;
|
||||
@@ -2084,13 +2032,11 @@ 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;
|
||||
u16 ctrl;
|
||||
u32 *inst;
|
||||
const __le32 *inst;
|
||||
|
||||
snd_ymfpci_writel(chip, YDSXGR_NATIVEDACOUTVOL, 0x00000000);
|
||||
snd_ymfpci_disable_dsp(chip);
|
||||
@@ -2105,14 +2051,16 @@ static void snd_ymfpci_download_image(struct snd_ymfpci *chip)
|
||||
snd_ymfpci_writew(chip, YDSXGR_GLOBALCTRL, ctrl & ~0x0007);
|
||||
|
||||
/* setup DSP instruction code */
|
||||
inst = (u32 *)chip->dsp_microcode->data;
|
||||
inst = (const __le32 *)chip->dsp_microcode->data;
|
||||
for (i = 0; i < YDSXG_DSPLENGTH / 4; i++)
|
||||
snd_ymfpci_writel(chip, YDSXGR_DSPINSTRAM + (i << 2), inst[i]);
|
||||
snd_ymfpci_writel(chip, YDSXGR_DSPINSTRAM + (i << 2),
|
||||
le32_to_cpu(inst[i]));
|
||||
|
||||
/* setup control instruction code */
|
||||
inst = (u32 *)chip->controller_microcode->data;
|
||||
inst = (const __le32 *)chip->controller_microcode->data;
|
||||
for (i = 0; i < YDSXG_CTRLLENGTH / 4; i++)
|
||||
snd_ymfpci_writel(chip, YDSXGR_CTRLINSTRAM + (i << 2), inst[i]);
|
||||
snd_ymfpci_writel(chip, YDSXGR_CTRLINSTRAM + (i << 2),
|
||||
le32_to_cpu(inst[i]));
|
||||
|
||||
snd_ymfpci_enable_dsp(chip);
|
||||
}
|
||||
@@ -2265,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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user