firmware: convert maestro3 driver to use firmware loader exclusively

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
This commit is contained in:
David Woodhouse 2008-05-29 14:48:34 +03:00 committed by David Woodhouse
parent 76770664dc
commit a292f404fa
6 changed files with 187 additions and 181 deletions

View file

@ -21,6 +21,8 @@ fw-external-y := $(subst ",,$(CONFIG_EXTRA_FIRMWARE))
# But be aware that the config file might not be included at all. # 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_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-) fw-shipped-all := $(fw-shipped-y) $(fw-shipped-m) $(fw-shipped-)

View file

@ -17,3 +17,17 @@ Licence: Unknown
Found in alsa-firmware package in hex form; no licensing information. 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."
--------------------------------------------------------------------------

View file

@ -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

View file

@ -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

View file

@ -744,7 +744,6 @@ config SND_KORG1212
config SND_MAESTRO3 config SND_MAESTRO3
tristate "ESS Allegro/Maestro3" tristate "ESS Allegro/Maestro3"
depends on SND depends on SND
select FW_LOADER if !SND_MAESTRO3_FIRMWARE_IN_KERNEL
select SND_AC97_CODEC select SND_AC97_CODEC
help help
Say Y here to include support for soundcards based on ESS Maestro 3 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 To compile this driver as a module, choose M here: the module
will be called snd-maestro3. 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 config SND_MIXART
tristate "Digigram miXart" tristate "Digigram miXart"
depends on SND depends on SND

View file

@ -58,10 +58,8 @@ MODULE_SUPPORTED_DEVICE("{{ESS,Maestro3 PCI},"
"{ESS,Allegro PCI}," "{ESS,Allegro PCI},"
"{ESS,Allegro-1 PCI}," "{ESS,Allegro-1 PCI},"
"{ESS,Canyon3D-2/LE 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_kernel.fw");
MODULE_FIRMWARE("ess/maestro3_assp_minisrc.fw"); MODULE_FIRMWARE("ess/maestro3_assp_minisrc.fw");
#endif
static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX; /* Index 0-MAX */ static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX; /* Index 0-MAX */
static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR; /* ID for this card */ 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 * initialize ASSP
*/ */
@ -2547,10 +2390,8 @@ static int snd_m3_free(struct snd_m3 *chip)
if (chip->iobase) if (chip->iobase)
pci_release_regions(chip->pci); pci_release_regions(chip->pci);
#ifndef CONFIG_SND_MAESTRO3_FIRMWARE_IN_KERNEL
release_firmware(chip->assp_kernel_image); release_firmware(chip->assp_kernel_image);
release_firmware(chip->assp_minisrc_image); release_firmware(chip->assp_minisrc_image);
#endif
pci_disable_device(chip->pci); pci_disable_device(chip->pci);
kfree(chip); kfree(chip);
@ -2740,27 +2581,19 @@ snd_m3_create(struct snd_card *card, struct pci_dev *pci,
return -ENOMEM; return -ENOMEM;
} }
#ifdef CONFIG_SND_MAESTRO3_FIRMWARE_IN_KERNEL
chip->assp_kernel_image = &assp_kernel;
#else
err = request_firmware(&chip->assp_kernel_image, err = request_firmware(&chip->assp_kernel_image,
"ess/maestro3_assp_kernel.fw", &pci->dev); "ess/maestro3_assp_kernel.fw", &pci->dev);
if (err < 0) { if (err < 0) {
snd_m3_free(chip); snd_m3_free(chip);
return err; return err;
} }
#endif
#ifdef CONFIG_SND_MAESTRO3_FIRMWARE_IN_KERNEL
chip->assp_minisrc_image = &assp_minisrc;
#else
err = request_firmware(&chip->assp_minisrc_image, err = request_firmware(&chip->assp_minisrc_image,
"ess/maestro3_assp_minisrc.fw", &pci->dev); "ess/maestro3_assp_minisrc.fw", &pci->dev);
if (err < 0) { if (err < 0) {
snd_m3_free(chip); snd_m3_free(chip);
return err; return err;
} }
#endif
if ((err = pci_request_regions(pci, card->driver)) < 0) { if ((err = pci_request_regions(pci, card->driver)) < 0) {
snd_m3_free(chip); snd_m3_free(chip);
@ -2912,10 +2745,6 @@ static struct pci_driver driver = {
static int __init alsa_card_m3_init(void) 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); return pci_register_driver(&driver);
} }