From fa6e1cb66e2f9d2d4703e7bd7dd50839bb10e4c3 Mon Sep 17 00:00:00 2001 From: David Woodhouse Date: Thu, 29 May 2008 11:58:27 +0300 Subject: maestro3: treat firmware data as const The maestro3 driver is byte-swapping its firmware to be host-endian in advance, when it doesn't seem to be necessary -- we could just use le16_to_cpu() as we load it. Doing that means that we need to switch the in-tree firmware to be little-endian too. Take the least intrusive way of doing this, which is to switch the existing snd_m3_convert_from_le() function to convert _to_ little-endian instead, and use it on the in-tree firmware instead of the loaded firmware. It's a bit suboptimal but doesn't matter much right now because we're about to remove the special cases for the in-tree version anyway. Signed-off-by: David Woodhouse --- sound/pci/maestro3.c | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) (limited to 'sound/pci/maestro3.c') diff --git a/sound/pci/maestro3.c b/sound/pci/maestro3.c index a536c59fbea1..9dfba6eff858 100644 --- a/sound/pci/maestro3.c +++ b/sound/pci/maestro3.c @@ -2240,18 +2240,16 @@ static const struct firmware assp_minisrc = { .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) { } +static inline void snd_m3_convert_to_le(const struct firmware *fw) { } #else -static void snd_m3_convert_from_le(const struct firmware *fw) +static void snd_m3_convert_to_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]); + cpu_to_le16s(&data[i]); } #endif @@ -2271,7 +2269,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 +2287,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 +2300,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])); } /* @@ -2749,8 +2748,7 @@ snd_m3_create(struct snd_card *card, struct pci_dev *pci, 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 @@ -2761,8 +2759,7 @@ snd_m3_create(struct snd_card *card, struct pci_dev *pci, 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) { @@ -2915,6 +2912,10 @@ static struct pci_driver driver = { static int __init alsa_card_m3_init(void) { +#ifdef CONFIG_SND_MAESTRO3_FIRMWARE_IN_KERNEL + snd_m3_convert_to_le(&assp_kernel); + snd_m3_convert_to_le(&assp_minisrc); +#endif return pci_register_driver(&driver); } -- cgit v1.2.3-59-g8ed1b From a292f404fabb342716a9d96e8155b7fb7b651dc1 Mon Sep 17 00:00:00 2001 From: David Woodhouse Date: Thu, 29 May 2008 14:48:34 +0300 Subject: firmware: convert maestro3 driver to use firmware loader exclusively Signed-off-by: David Woodhouse --- firmware/Makefile | 2 + firmware/WHENCE | 14 +++ firmware/ess/maestro3_assp_kernel.fw.ihex | 120 ++++++++++++++++++++ firmware/ess/maestro3_assp_minisrc.fw.ihex | 51 +++++++++ sound/pci/Kconfig | 10 -- sound/pci/maestro3.c | 171 ----------------------------- 6 files changed, 187 insertions(+), 181 deletions(-) create mode 100644 firmware/ess/maestro3_assp_kernel.fw.ihex create mode 100644 firmware/ess/maestro3_assp_minisrc.fw.ihex (limited to 'sound/pci/maestro3.c') diff --git a/firmware/Makefile b/firmware/Makefile index ea4a883f5c60..f312ac0e8979 100644 --- a/firmware/Makefile +++ b/firmware/Makefile @@ -21,6 +21,8 @@ fw-external-y := $(subst ",,$(CONFIG_EXTRA_FIRMWARE)) # But be aware that the config file might not be included at all. fw-shipped-$(CONFIG_SND_KORG1212) += korg/k1212.dsp +fw-shipped-$(CONFIG_SND_MAESTRO3) += ess/maestro3_assp_kernel.fw \ + ess/maestro3_assp_minisrc.fw fw-shipped-all := $(fw-shipped-y) $(fw-shipped-m) $(fw-shipped-) diff --git a/firmware/WHENCE b/firmware/WHENCE index 89ca95b90960..c08dbc887cb9 100644 --- a/firmware/WHENCE +++ b/firmware/WHENCE @@ -17,3 +17,17 @@ Licence: Unknown Found in alsa-firmware package in hex form; no licensing information. -------------------------------------------------------------------------- + +Driver: maestro3 -- ESS Allegro Maestro3 audio device + +File: ess/maestro3_assp_kernel.fw +File: ess/maestro3_assp_minisrc.fw + +Licence: Unknown + +Found in alsa-firmware package in hex form with a comment claiming to +be GPLv2+, but without source -- and with another comment saying "ESS +drops binary dsp code images on our heads, but we don't get to see +specs on the dsp." + +-------------------------------------------------------------------------- diff --git a/firmware/ess/maestro3_assp_kernel.fw.ihex b/firmware/ess/maestro3_assp_kernel.fw.ihex new file mode 100644 index 000000000000..933c4c375c2f --- /dev/null +++ b/firmware/ess/maestro3_assp_kernel.fw.ihex @@ -0,0 +1,120 @@ +:10000000807930008079B4038079B4038079FB0073 +:100010008079DD008079B4038079320380798702AA +:100020008079B4038079B4038079B4038079B40310 +:1000300080791A038079B40380792F028079B40320 +:100040008079B4038079B4038079B4038079B403F0 +:100050008079630080796B008079B4038079B40380 +:1000600080BF7C2C0688048840BE20BC09AE0010EE +:100070000AAE0100386908EB53005A6908EBD60054 +:100080000900888B806988E3360030BE20BC09698E +:1000900001B8099041BE41BE286988EB780041BE95 +:1000A00040BE8079380041BE41BE3A90386908E3CD +:1000B00056003A9041BE40BE00EF3A90396908E3DD +:1000C0005E003A9000EF0B690C668CEF0A690C66D3 +:1000D0000B62096600EF10690F6604EF88E3750094 +:1000E0000E690F6610620D6600EF0E690D6600EF77 +:1000F00070AE010020BC27AE0100396908EB5D003D +:10010000266901B826902600888B806988E3CB0099 +:100110002890280D114200E17A00114700E1A0006B +:10012000807A630011B80A66096204E37A000B0C56 +:1001300005400A1001BA1290120C02408079AF00FB +:10014000807A6B0002BE0E620D6610BA44E37A003C +:10015000100C05400E1001BA1290120C0240031050 +:1001600002BA1290120C0040031088E3BA00041087 +:100170008079BC00041001BA1290120C0140050CE9 +:100180000340060C04401110B0BFFF011290120C86 +:10019000064020BC00EF26AE28107069D0BF0100D9 +:1001A000709088E37A0028AE000000EF70AE000384 +:1001B000700C0CB05AAE000000EF807A8A037F69A1 +:1001C00001B87F905600888BA00C08B071AF00B0CA +:1001D000714E00E2F30056AE57105600A00C08B066 +:1001E00056808079A1031008A0BF591004E3A10331 +:1001F00056808079A103807A8A0301BF43BE59BE2D +:100200007C90376988E30D0101BA08E30C0171AEF7 +:100210000400710C0050366937900ABF9E108A8B1B +:1002200080AF1480804C0ABF600500F50ABF20052E +:1002300000B917BBA090176988E34801170D00E1CA +:1002400027010CBF78050DBF7C0580792B010CBF01 +:1002500038050DBF3C05006908E335018C8B59BE9C +:1002600007BBA09020BC807957010C038B8B03B98E +:100270000988C6BE3E01AC69AB90AD69AB9013086E +:100280000A6644E3440109030C8320BC80795701CA +:10029000556988E35701387C0BBF780500F50BBF23 +:1002A000380507B90988C6BE5601AB10AA90746913 +:1002B00088E3630172AE400500F572AE000561AEE1 +:1002C0003B10807AF602786988E382018C8B0CBF40 +:1002D000600500E5407C140820BA12883D73807ADE +:1002E00080033E73807A80038C8B0CBF6C0500E525 +:1002F000407C14082CBA12883F73807A80034073C4 +:10030000807A8003756988E38E0172AE480500F536 +:1003100072AE080561AE4110807AF602796988E311 +:10032000AD018C8B0CBF600500E5407C140818BA49 +:1003300012884373807A80034473807A80038C8BA5 +:100340000CBF6C0500E5407C140824BA1288457384 +:10035000807A80034673807A8003766988E3B901E6 +:1003600072AE580500F572AE180561AE4710807A7E +:10037000F6027A6988E3D8018C8B0CBF600500E532 +:10038000407C140808BA12884973807A80034A7343 +:10039000807A80038C8B0CBF6C0500E5407C1408D0 +:1003A00014BA12884B73807A80034C73807A80036E +:1003B00021BC1CAE90108A8B0ABF600500E5407C12 +:1003C000120804B813888D8B0DBF6C0500E5407CC6 +:1003D000150804B81188807A4A038A8B0ABF600521 +:1003E00000E5407C1F7303B90988C6BEF9018A5431 +:1003F00003BEA098207303B90988C6BE01028A54BF +:1004000003BEA098201F1F2F269820BC356988E3C3 +:10041000A103336901B83390A0BFEE0208E3A10342 +:10042000339000BF516988E31F02347380BE605768 +:1004300003BE7E9F59BE34907E69510D139020BC3F +:100440005C6988E3A1035E7380BE605703BE7E9F34 +:1004500059BE5E907E695C0D13908079A103807A0D +:100460008A0301BF43BE776988E34E0261AE4D1037 +:100470006100888B806988E34E027190710D0B00DA +:10048000A0AF1080A0AF108010080A6608E34902F0 +:10049000090010080C6688E34E020B8020BC7B69C3 +:1004A00088E3A1030ABF9E108A8B80AF1480804C22 +:1004B00000E166027C6990BF6005729072037C69FE +:1004C00090BF640573907304807970027C6990BF5B +:1004D0002005729072037C6990BF240573907304A9 +:1004E0007C6901B87C900ABFFD108A8B80AF1080B8 +:1004F0004F738A5403BE809821BC26738B5403BE6D +:100500008B618C9803BE806180988079A103807A8A +:100510008A03280D114700E1BE0212AF064012699E +:10052000B0BF000C88E3B602A0BF000888E3B202A7 +:100530001269B0BF000CA0BF000488E3A3020969E0 +:100540000B908079A5020BAF054001690590026907 +:100550000690114300E1ED021169C0BF0020119027 +:100560008079ED0209690B908079B8020BAF0540E4 +:1005700005AF034006AF04408079ED0212AF06409C +:100580001269B0BF000C88E3E702A0BF000888E34F +:10059000E3021269B0BF000CA0BF000488E3D402DC +:1005A0000D6910908079D60210AF05400169059061 +:1005B00002690690114300E1ED021169C0BF0020FD +:1005C00011908079ED020D6910908079E90210AFE9 +:1005D000054005AF034006AF044020BC7069719030 +:1005E000807A7800716970908079A10320BC6103E2 +:1005F0008B8B806988EF7202720304787190710DA1 +:100600008A8B0B0003B90988C6BE0903A869AB90A1 +:10061000A869AA9010080A6644E30F0309001008AD +:100620000C6688E314030B8020BC616901B86190FB +:100630008079F702807A8A03355D0100346901B858 +:1006400034900ABF9E108A8B80AF1480804872AEAF +:10065000500500F572AE100561AE5110807AF602B9 +:100660008079A103807A8A03355D02005E6901B852 +:100670005E900ABF9E108A8B80AF1480804772AE56 +:10068000580500F572AE180561AE5C10807AF6026E +:100690008079A1031C00888B806988EF1D901D0D57 +:1006A0000F1010668CE358030E6910660F620D661A +:1006B0000FBA01E37A0310048A8B03B90988C6BE16 +:1006C0006C038C6AAA61AB988C6AAB61AD988C6A3A +:1006D000AD61A9988C6AA961AA98047C8B8B047C73 +:1006E0008D8B047C898B047C14080E6608E37903E7 +:1006F0000D04108421BC1C6901B81C9080794A0348 +:1007000003B909888A8BC6BE8803AC5403BE8C61CA +:10071000AA9800EF20BC46BE09086B900A086C90AE +:100720000B086D901A0862901B0863901E08649075 +:1007300059BE1E88658066816782688369846A8580 +:1007400000EF20BC6B6909886C690A886D690B88A9 +:1007500062691A8863691B8864691E88650066017E +:0A0760006702680369046A053ABEE7 +:00000001FF diff --git a/firmware/ess/maestro3_assp_minisrc.fw.ihex b/firmware/ess/maestro3_assp_minisrc.fw.ihex new file mode 100644 index 000000000000..d2c0031dadf2 --- /dev/null +++ b/firmware/ess/maestro3_assp_minisrc.fw.ihex @@ -0,0 +1,51 @@ +:1000000080BF1E106E906E00888B806988EF6F90A5 +:100010006F0D006908EB120420BC6E6901B86E9088 +:10002000807903040EB9078843BE01BF47BE41BEB5 +:10003000807A2A0040BE2930CCEF41BE807A280069 +:1000400040BE2830CCEF076908E32A0409692C90E8 +:1000500080792C040D692C9009101A880A1001BAB5 +:100060001B880D101C880E1001BA1D8880BFED0082 +:100070001E880C05240104B92790186908E3B3040D +:100080002D901369A0BF987504F72DAEFF008D8BDE +:10009000196908E363041A6908E3560407B9098873 +:1000A000C6BE5304A910AD9080797C0403B90988B9 +:1000B000C6BE60048918226CAD90A910236E226C14 +:1000C000AD9080797C041A1008E36F0403B90988A5 +:1000D000C6BE6C04A910A090AD9080797C0401B9D3 +:1000E0000988C6BE7B048918226CA090AD90A91027 +:1000F000236E226CA090AD902D6908E39C0424012E +:1001000003B702B91888898B2C028A10047CA0904E +:100110002B691F88807E5B052A690988898BA099D5 +:100120008A10A0902B691F88807E5B052A69098848 +:10013000898BAF99997B840424010F061B1013202F +:100140001B90A0BFFF7F44E3AC041B90898B807A97 +:100150001A05276901BA2790807A2305276908E3E1 +:100160009E0480790F052406261013202690A0BF38 +:10017000FF7F04E3C0048D8B807A1A058079B40474 +:100180002690131026301B908D8B807A1A05807A6A +:100190002305271001BA279008E3B40424010F06B1 +:1001A000898B1A6908E3EA04196988E3E00403B952 +:1001B0000988C6BEDD04A01FAE2FA99880790F055F +:1001C00001B9188807B90988C6BEE704EE10A990DE +:1001D00080790F05196908E3FE0403B9098846BE52 +:1001E000C6BEFA04A0171EBEAE1FBFBF00FF13BEDF +:1001F000DFBF8080A99947BE80790F0501B90988C2 +:10020000C6BE0E05A016A026B7BF00FF1EBEA01ECC +:10021000AE2EBFBF00FF13BEDFBF8080A9990C8543 +:100220000F86076988E31605070D108559BE1E88DD +:100230004ABE00EF1E101C901F101D90A0101E90B3 +:10024000A0101F9000EF1E101C3020901B73205434 +:1002500003BE259825101C2025902573145403BE39 +:100260008E8B80982F6988E3390559BE07BB806162 +:100270008098A08B1F101D3021901B73215403BE4A +:100280002E982E101D202E902E73155403BE80988C +:100290002F6988E34F0559BE07BB80618098A08B0A +:1002A000186908EF2573165403BEA0982E731754CF +:1002B00003BEA09800EFA08BC6BE6B0559BE04BB61 +:1002C00090AA04BE1EBEE099E08BA069D090A06900 +:1002D000D0901F0805B81F88908BA069D090A069A6 +:1002E0009090D08BD88B1FBE00EF00000000000064 +:1002F00000000000000000000000000000000000FE +:1003000000000000000000000000000000000000ED +:020310000000EB +:00000001FF diff --git a/sound/pci/Kconfig b/sound/pci/Kconfig index 1abbf877f20d..32836ea45170 100644 --- a/sound/pci/Kconfig +++ b/sound/pci/Kconfig @@ -744,7 +744,6 @@ config SND_KORG1212 config SND_MAESTRO3 tristate "ESS Allegro/Maestro3" depends on SND - 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 @@ -753,15 +752,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" depends on SND diff --git a/sound/pci/maestro3.c b/sound/pci/maestro3.c index 9dfba6eff858..b2582972c9a4 100644 --- a/sound/pci/maestro3.c +++ b/sound/pci/maestro3.c @@ -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,161 +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 -}; - -#ifdef __LITTLE_ENDIAN -static inline void snd_m3_convert_to_le(const struct firmware *fw) { } -#else -static void snd_m3_convert_to_le(const struct firmware *fw) -{ - int i; - u16 *data = (u16 *)fw->data; - - for (i = 0; i < fw->size / 2; ++i) - cpu_to_le16s(&data[i]); -} -#endif - -#endif /* CONFIG_SND_MAESTRO3_FIRMWARE_IN_KERNEL */ - - /* * initialize ASSP */ @@ -2547,10 +2390,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); @@ -2740,27 +2581,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; } -#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; } -#endif if ((err = pci_request_regions(pci, card->driver)) < 0) { snd_m3_free(chip); @@ -2912,10 +2745,6 @@ static struct pci_driver driver = { static int __init alsa_card_m3_init(void) { -#ifdef CONFIG_SND_MAESTRO3_FIRMWARE_IN_KERNEL - snd_m3_convert_to_le(&assp_kernel); - snd_m3_convert_to_le(&assp_minisrc); -#endif return pci_register_driver(&driver); } -- cgit v1.2.3-59-g8ed1b