diff options
-rw-r--r-- | sound/pci/echoaudio/darla20_dsp.c | 2 | ||||
-rw-r--r-- | sound/pci/echoaudio/darla24_dsp.c | 2 | ||||
-rw-r--r-- | sound/pci/echoaudio/echo3g_dsp.c | 2 | ||||
-rw-r--r-- | sound/pci/echoaudio/echoaudio.c | 8 | ||||
-rw-r--r-- | sound/pci/echoaudio/echoaudio.h | 6 | ||||
-rw-r--r-- | sound/pci/echoaudio/echoaudio_3g.c | 5 | ||||
-rw-r--r-- | sound/pci/echoaudio/echoaudio_dsp.c | 12 | ||||
-rw-r--r-- | sound/pci/echoaudio/gina20_dsp.c | 2 | ||||
-rw-r--r-- | sound/pci/echoaudio/gina24_dsp.c | 18 | ||||
-rw-r--r-- | sound/pci/echoaudio/indigo_dsp.c | 2 | ||||
-rw-r--r-- | sound/pci/echoaudio/indigodj_dsp.c | 2 | ||||
-rw-r--r-- | sound/pci/echoaudio/indigodjx_dsp.c | 2 | ||||
-rw-r--r-- | sound/pci/echoaudio/indigoio_dsp.c | 2 | ||||
-rw-r--r-- | sound/pci/echoaudio/indigoiox_dsp.c | 2 | ||||
-rw-r--r-- | sound/pci/echoaudio/layla20_dsp.c | 7 | ||||
-rw-r--r-- | sound/pci/echoaudio/layla24_dsp.c | 19 | ||||
-rw-r--r-- | sound/pci/echoaudio/mia_dsp.c | 2 | ||||
-rw-r--r-- | sound/pci/echoaudio/mona_dsp.c | 39 |
18 files changed, 69 insertions, 65 deletions
diff --git a/sound/pci/echoaudio/darla20_dsp.c b/sound/pci/echoaudio/darla20_dsp.c index 29043301ebb8..a44135d6acbb 100644 --- a/sound/pci/echoaudio/darla20_dsp.c +++ b/sound/pci/echoaudio/darla20_dsp.c | |||
@@ -45,7 +45,7 @@ static int init_hw(struct echoaudio *chip, u16 device_id, u16 subdevice_id) | |||
45 | chip->device_id = device_id; | 45 | chip->device_id = device_id; |
46 | chip->subdevice_id = subdevice_id; | 46 | chip->subdevice_id = subdevice_id; |
47 | chip->bad_board = TRUE; | 47 | chip->bad_board = TRUE; |
48 | chip->dsp_code_to_load = &card_fw[FW_DARLA20_DSP]; | 48 | chip->dsp_code_to_load = FW_DARLA20_DSP; |
49 | chip->spdif_status = GD_SPDIF_STATUS_UNDEF; | 49 | chip->spdif_status = GD_SPDIF_STATUS_UNDEF; |
50 | chip->clock_state = GD_CLOCK_UNDEF; | 50 | chip->clock_state = GD_CLOCK_UNDEF; |
51 | /* Since this card has no ASIC, mark it as loaded so everything | 51 | /* Since this card has no ASIC, mark it as loaded so everything |
diff --git a/sound/pci/echoaudio/darla24_dsp.c b/sound/pci/echoaudio/darla24_dsp.c index 60228731841f..d681da180829 100644 --- a/sound/pci/echoaudio/darla24_dsp.c +++ b/sound/pci/echoaudio/darla24_dsp.c | |||
@@ -45,7 +45,7 @@ static int init_hw(struct echoaudio *chip, u16 device_id, u16 subdevice_id) | |||
45 | chip->device_id = device_id; | 45 | chip->device_id = device_id; |
46 | chip->subdevice_id = subdevice_id; | 46 | chip->subdevice_id = subdevice_id; |
47 | chip->bad_board = TRUE; | 47 | chip->bad_board = TRUE; |
48 | chip->dsp_code_to_load = &card_fw[FW_DARLA24_DSP]; | 48 | chip->dsp_code_to_load = FW_DARLA24_DSP; |
49 | /* Since this card has no ASIC, mark it as loaded so everything | 49 | /* Since this card has no ASIC, mark it as loaded so everything |
50 | works OK */ | 50 | works OK */ |
51 | chip->asic_loaded = TRUE; | 51 | chip->asic_loaded = TRUE; |
diff --git a/sound/pci/echoaudio/echo3g_dsp.c b/sound/pci/echoaudio/echo3g_dsp.c index 57967e580571..f0071935c0cb 100644 --- a/sound/pci/echoaudio/echo3g_dsp.c +++ b/sound/pci/echoaudio/echo3g_dsp.c | |||
@@ -61,7 +61,7 @@ static int init_hw(struct echoaudio *chip, u16 device_id, u16 subdevice_id) | |||
61 | chip->subdevice_id = subdevice_id; | 61 | chip->subdevice_id = subdevice_id; |
62 | chip->bad_board = TRUE; | 62 | chip->bad_board = TRUE; |
63 | chip->has_midi = TRUE; | 63 | chip->has_midi = TRUE; |
64 | chip->dsp_code_to_load = &card_fw[FW_ECHO3G_DSP]; | 64 | chip->dsp_code_to_load = FW_ECHO3G_DSP; |
65 | 65 | ||
66 | /* Load the DSP code and the ASIC on the PCI card and get | 66 | /* Load the DSP code and the ASIC on the PCI card and get |
67 | what type of external box is attached */ | 67 | what type of external box is attached */ |
diff --git a/sound/pci/echoaudio/echoaudio.c b/sound/pci/echoaudio/echoaudio.c index 1305f7ca02c3..78fc2637bfa6 100644 --- a/sound/pci/echoaudio/echoaudio.c +++ b/sound/pci/echoaudio/echoaudio.c | |||
@@ -36,11 +36,15 @@ MODULE_PARM_DESC(enable, "Enable " ECHOCARD_NAME " soundcard."); | |||
36 | static unsigned int channels_list[10] = {1, 2, 4, 6, 8, 10, 12, 14, 16, 999999}; | 36 | static unsigned int channels_list[10] = {1, 2, 4, 6, 8, 10, 12, 14, 16, 999999}; |
37 | static const DECLARE_TLV_DB_SCALE(db_scale_output_gain, -12800, 100, 1); | 37 | static const DECLARE_TLV_DB_SCALE(db_scale_output_gain, -12800, 100, 1); |
38 | 38 | ||
39 | |||
40 | |||
39 | static int get_firmware(const struct firmware **fw_entry, | 41 | static int get_firmware(const struct firmware **fw_entry, |
40 | const struct firmware *frm, struct echoaudio *chip) | 42 | struct echoaudio *chip, const short fw_index) |
41 | { | 43 | { |
42 | int err; | 44 | int err; |
43 | char name[30]; | 45 | char name[30]; |
46 | const struct firmware *frm = &card_fw[fw_index]; | ||
47 | |||
44 | DE_ACT(("firmware requested: %s\n", frm->data)); | 48 | DE_ACT(("firmware requested: %s\n", frm->data)); |
45 | snprintf(name, sizeof(name), "ea/%s", frm->data); | 49 | snprintf(name, sizeof(name), "ea/%s", frm->data); |
46 | if ((err = request_firmware(fw_entry, name, pci_device(chip))) < 0) | 50 | if ((err = request_firmware(fw_entry, name, pci_device(chip))) < 0) |
@@ -48,6 +52,8 @@ static int get_firmware(const struct firmware **fw_entry, | |||
48 | return err; | 52 | return err; |
49 | } | 53 | } |
50 | 54 | ||
55 | |||
56 | |||
51 | static void free_firmware(const struct firmware *fw_entry) | 57 | static void free_firmware(const struct firmware *fw_entry) |
52 | { | 58 | { |
53 | release_firmware(fw_entry); | 59 | release_firmware(fw_entry); |
diff --git a/sound/pci/echoaudio/echoaudio.h b/sound/pci/echoaudio/echoaudio.h index f9490ae36c2e..be76ef3b829a 100644 --- a/sound/pci/echoaudio/echoaudio.h +++ b/sound/pci/echoaudio/echoaudio.h | |||
@@ -442,8 +442,8 @@ struct echoaudio { | |||
442 | u16 device_id, subdevice_id; | 442 | u16 device_id, subdevice_id; |
443 | u16 *dsp_code; /* Current DSP code loaded, | 443 | u16 *dsp_code; /* Current DSP code loaded, |
444 | * NULL if nothing loaded */ | 444 | * NULL if nothing loaded */ |
445 | const struct firmware *dsp_code_to_load;/* DSP code to load */ | 445 | short dsp_code_to_load; /* DSP code to load */ |
446 | const struct firmware *asic_code; /* Current ASIC code */ | 446 | short asic_code; /* Current ASIC code */ |
447 | u32 comm_page_phys; /* Physical address of the | 447 | u32 comm_page_phys; /* Physical address of the |
448 | * memory seen by DSP */ | 448 | * memory seen by DSP */ |
449 | volatile u32 __iomem *dsp_registers; /* DSP's register base */ | 449 | volatile u32 __iomem *dsp_registers; /* DSP's register base */ |
@@ -464,7 +464,7 @@ static int load_firmware(struct echoaudio *chip); | |||
464 | static int wait_handshake(struct echoaudio *chip); | 464 | static int wait_handshake(struct echoaudio *chip); |
465 | static int send_vector(struct echoaudio *chip, u32 command); | 465 | static int send_vector(struct echoaudio *chip, u32 command); |
466 | static int get_firmware(const struct firmware **fw_entry, | 466 | static int get_firmware(const struct firmware **fw_entry, |
467 | const struct firmware *frm, struct echoaudio *chip); | 467 | struct echoaudio *chip, const short fw_index); |
468 | static void free_firmware(const struct firmware *fw_entry); | 468 | static void free_firmware(const struct firmware *fw_entry); |
469 | 469 | ||
470 | #ifdef ECHOCARD_HAS_MIDI | 470 | #ifdef ECHOCARD_HAS_MIDI |
diff --git a/sound/pci/echoaudio/echoaudio_3g.c b/sound/pci/echoaudio/echoaudio_3g.c index e32a74897921..658db44ef746 100644 --- a/sound/pci/echoaudio/echoaudio_3g.c +++ b/sound/pci/echoaudio/echoaudio_3g.c | |||
@@ -227,12 +227,11 @@ static int load_asic(struct echoaudio *chip) | |||
227 | /* Give the DSP a few milliseconds to settle down */ | 227 | /* Give the DSP a few milliseconds to settle down */ |
228 | mdelay(2); | 228 | mdelay(2); |
229 | 229 | ||
230 | err = load_asic_generic(chip, DSP_FNC_LOAD_3G_ASIC, | 230 | err = load_asic_generic(chip, DSP_FNC_LOAD_3G_ASIC, FW_3G_ASIC); |
231 | &card_fw[FW_3G_ASIC]); | ||
232 | if (err < 0) | 231 | if (err < 0) |
233 | return err; | 232 | return err; |
234 | 233 | ||
235 | chip->asic_code = &card_fw[FW_3G_ASIC]; | 234 | chip->asic_code = FW_3G_ASIC; |
236 | 235 | ||
237 | /* Now give the new ASIC some time to set up */ | 236 | /* Now give the new ASIC some time to set up */ |
238 | msleep(1000); | 237 | msleep(1000); |
diff --git a/sound/pci/echoaudio/echoaudio_dsp.c b/sound/pci/echoaudio/echoaudio_dsp.c index 4df51ef5e095..031ef7e9da91 100644 --- a/sound/pci/echoaudio/echoaudio_dsp.c +++ b/sound/pci/echoaudio/echoaudio_dsp.c | |||
@@ -175,15 +175,15 @@ static inline int check_asic_status(struct echoaudio *chip) | |||
175 | #ifdef ECHOCARD_HAS_ASIC | 175 | #ifdef ECHOCARD_HAS_ASIC |
176 | 176 | ||
177 | /* Load ASIC code - done after the DSP is loaded */ | 177 | /* Load ASIC code - done after the DSP is loaded */ |
178 | static int load_asic_generic(struct echoaudio *chip, u32 cmd, | 178 | static int load_asic_generic(struct echoaudio *chip, u32 cmd, short asic) |
179 | const struct firmware *asic) | ||
180 | { | 179 | { |
181 | const struct firmware *fw; | 180 | const struct firmware *fw; |
182 | int err; | 181 | int err; |
183 | u32 i, size; | 182 | u32 i, size; |
184 | u8 *code; | 183 | u8 *code; |
185 | 184 | ||
186 | if ((err = get_firmware(&fw, asic, chip)) < 0) { | 185 | err = get_firmware(&fw, chip, asic); |
186 | if (err < 0) { | ||
187 | snd_printk(KERN_WARNING "Firmware not found !\n"); | 187 | snd_printk(KERN_WARNING "Firmware not found !\n"); |
188 | return err; | 188 | return err; |
189 | } | 189 | } |
@@ -245,7 +245,8 @@ static int install_resident_loader(struct echoaudio *chip) | |||
245 | return 0; | 245 | return 0; |
246 | } | 246 | } |
247 | 247 | ||
248 | if ((i = get_firmware(&fw, &card_fw[FW_361_LOADER], chip)) < 0) { | 248 | i = get_firmware(&fw, chip, FW_361_LOADER); |
249 | if (i < 0) { | ||
249 | snd_printk(KERN_WARNING "Firmware not found !\n"); | 250 | snd_printk(KERN_WARNING "Firmware not found !\n"); |
250 | return i; | 251 | return i; |
251 | } | 252 | } |
@@ -485,7 +486,8 @@ static int load_firmware(struct echoaudio *chip) | |||
485 | chip->dsp_code = NULL; | 486 | chip->dsp_code = NULL; |
486 | } | 487 | } |
487 | 488 | ||
488 | if ((err = get_firmware(&fw, chip->dsp_code_to_load, chip)) < 0) | 489 | err = get_firmware(&fw, chip, chip->dsp_code_to_load); |
490 | if (err < 0) | ||
489 | return err; | 491 | return err; |
490 | err = load_dsp(chip, (u16 *)fw->data); | 492 | err = load_dsp(chip, (u16 *)fw->data); |
491 | free_firmware(fw); | 493 | free_firmware(fw); |
diff --git a/sound/pci/echoaudio/gina20_dsp.c b/sound/pci/echoaudio/gina20_dsp.c index 3f1e7475faea..c5de88b6792d 100644 --- a/sound/pci/echoaudio/gina20_dsp.c +++ b/sound/pci/echoaudio/gina20_dsp.c | |||
@@ -49,7 +49,7 @@ static int init_hw(struct echoaudio *chip, u16 device_id, u16 subdevice_id) | |||
49 | chip->device_id = device_id; | 49 | chip->device_id = device_id; |
50 | chip->subdevice_id = subdevice_id; | 50 | chip->subdevice_id = subdevice_id; |
51 | chip->bad_board = TRUE; | 51 | chip->bad_board = TRUE; |
52 | chip->dsp_code_to_load = &card_fw[FW_GINA20_DSP]; | 52 | chip->dsp_code_to_load = FW_GINA20_DSP; |
53 | chip->spdif_status = GD_SPDIF_STATUS_UNDEF; | 53 | chip->spdif_status = GD_SPDIF_STATUS_UNDEF; |
54 | chip->clock_state = GD_CLOCK_UNDEF; | 54 | chip->clock_state = GD_CLOCK_UNDEF; |
55 | /* Since this card has no ASIC, mark it as loaded so everything | 55 | /* Since this card has no ASIC, mark it as loaded so everything |
diff --git a/sound/pci/echoaudio/gina24_dsp.c b/sound/pci/echoaudio/gina24_dsp.c index 2fef37a2a5b9..093dd7ba0e81 100644 --- a/sound/pci/echoaudio/gina24_dsp.c +++ b/sound/pci/echoaudio/gina24_dsp.c | |||
@@ -33,8 +33,7 @@ static int write_control_reg(struct echoaudio *chip, u32 value, char force); | |||
33 | static int set_input_clock(struct echoaudio *chip, u16 clock); | 33 | static int set_input_clock(struct echoaudio *chip, u16 clock); |
34 | static int set_professional_spdif(struct echoaudio *chip, char prof); | 34 | static int set_professional_spdif(struct echoaudio *chip, char prof); |
35 | static int set_digital_mode(struct echoaudio *chip, u8 mode); | 35 | static int set_digital_mode(struct echoaudio *chip, u8 mode); |
36 | static int load_asic_generic(struct echoaudio *chip, u32 cmd, | 36 | static int load_asic_generic(struct echoaudio *chip, u32 cmd, short asic); |
37 | const struct firmware *asic); | ||
38 | static int check_asic_status(struct echoaudio *chip); | 37 | static int check_asic_status(struct echoaudio *chip); |
39 | 38 | ||
40 | 39 | ||
@@ -64,13 +63,13 @@ static int init_hw(struct echoaudio *chip, u16 device_id, u16 subdevice_id) | |||
64 | 63 | ||
65 | /* Gina24 comes in both '301 and '361 flavors */ | 64 | /* Gina24 comes in both '301 and '361 flavors */ |
66 | if (chip->device_id == DEVICE_ID_56361) { | 65 | if (chip->device_id == DEVICE_ID_56361) { |
67 | chip->dsp_code_to_load = &card_fw[FW_GINA24_361_DSP]; | 66 | chip->dsp_code_to_load = FW_GINA24_361_DSP; |
68 | chip->digital_modes = | 67 | chip->digital_modes = |
69 | ECHOCAPS_HAS_DIGITAL_MODE_SPDIF_RCA | | 68 | ECHOCAPS_HAS_DIGITAL_MODE_SPDIF_RCA | |
70 | ECHOCAPS_HAS_DIGITAL_MODE_SPDIF_OPTICAL | | 69 | ECHOCAPS_HAS_DIGITAL_MODE_SPDIF_OPTICAL | |
71 | ECHOCAPS_HAS_DIGITAL_MODE_ADAT; | 70 | ECHOCAPS_HAS_DIGITAL_MODE_ADAT; |
72 | } else { | 71 | } else { |
73 | chip->dsp_code_to_load = &card_fw[FW_GINA24_301_DSP]; | 72 | chip->dsp_code_to_load = FW_GINA24_301_DSP; |
74 | chip->digital_modes = | 73 | chip->digital_modes = |
75 | ECHOCAPS_HAS_DIGITAL_MODE_SPDIF_RCA | | 74 | ECHOCAPS_HAS_DIGITAL_MODE_SPDIF_RCA | |
76 | ECHOCAPS_HAS_DIGITAL_MODE_SPDIF_OPTICAL | | 75 | ECHOCAPS_HAS_DIGITAL_MODE_SPDIF_OPTICAL | |
@@ -125,7 +124,7 @@ static int load_asic(struct echoaudio *chip) | |||
125 | { | 124 | { |
126 | u32 control_reg; | 125 | u32 control_reg; |
127 | int err; | 126 | int err; |
128 | const struct firmware *fw; | 127 | short asic; |
129 | 128 | ||
130 | if (chip->asic_loaded) | 129 | if (chip->asic_loaded) |
131 | return 1; | 130 | return 1; |
@@ -135,14 +134,15 @@ static int load_asic(struct echoaudio *chip) | |||
135 | 134 | ||
136 | /* Pick the correct ASIC for '301 or '361 Gina24 */ | 135 | /* Pick the correct ASIC for '301 or '361 Gina24 */ |
137 | if (chip->device_id == DEVICE_ID_56361) | 136 | if (chip->device_id == DEVICE_ID_56361) |
138 | fw = &card_fw[FW_GINA24_361_ASIC]; | 137 | asic = FW_GINA24_361_ASIC; |
139 | else | 138 | else |
140 | fw = &card_fw[FW_GINA24_301_ASIC]; | 139 | asic = FW_GINA24_301_ASIC; |
141 | 140 | ||
142 | if ((err = load_asic_generic(chip, DSP_FNC_LOAD_GINA24_ASIC, fw)) < 0) | 141 | err = load_asic_generic(chip, DSP_FNC_LOAD_GINA24_ASIC, asic); |
142 | if (err < 0) | ||
143 | return err; | 143 | return err; |
144 | 144 | ||
145 | chip->asic_code = fw; | 145 | chip->asic_code = asic; |
146 | 146 | ||
147 | /* Now give the new ASIC a little time to set up */ | 147 | /* Now give the new ASIC a little time to set up */ |
148 | mdelay(10); | 148 | mdelay(10); |
diff --git a/sound/pci/echoaudio/indigo_dsp.c b/sound/pci/echoaudio/indigo_dsp.c index 0b2cd9c86277..8799d2e6536a 100644 --- a/sound/pci/echoaudio/indigo_dsp.c +++ b/sound/pci/echoaudio/indigo_dsp.c | |||
@@ -50,7 +50,7 @@ static int init_hw(struct echoaudio *chip, u16 device_id, u16 subdevice_id) | |||
50 | chip->device_id = device_id; | 50 | chip->device_id = device_id; |
51 | chip->subdevice_id = subdevice_id; | 51 | chip->subdevice_id = subdevice_id; |
52 | chip->bad_board = TRUE; | 52 | chip->bad_board = TRUE; |
53 | chip->dsp_code_to_load = &card_fw[FW_INDIGO_DSP]; | 53 | chip->dsp_code_to_load = FW_INDIGO_DSP; |
54 | /* Since this card has no ASIC, mark it as loaded so everything | 54 | /* Since this card has no ASIC, mark it as loaded so everything |
55 | works OK */ | 55 | works OK */ |
56 | chip->asic_loaded = TRUE; | 56 | chip->asic_loaded = TRUE; |
diff --git a/sound/pci/echoaudio/indigodj_dsp.c b/sound/pci/echoaudio/indigodj_dsp.c index 08392916691e..cb1c92ca9fef 100644 --- a/sound/pci/echoaudio/indigodj_dsp.c +++ b/sound/pci/echoaudio/indigodj_dsp.c | |||
@@ -50,7 +50,7 @@ static int init_hw(struct echoaudio *chip, u16 device_id, u16 subdevice_id) | |||
50 | chip->device_id = device_id; | 50 | chip->device_id = device_id; |
51 | chip->subdevice_id = subdevice_id; | 51 | chip->subdevice_id = subdevice_id; |
52 | chip->bad_board = TRUE; | 52 | chip->bad_board = TRUE; |
53 | chip->dsp_code_to_load = &card_fw[FW_INDIGO_DJ_DSP]; | 53 | chip->dsp_code_to_load = FW_INDIGO_DJ_DSP; |
54 | /* Since this card has no ASIC, mark it as loaded so everything | 54 | /* Since this card has no ASIC, mark it as loaded so everything |
55 | works OK */ | 55 | works OK */ |
56 | chip->asic_loaded = TRUE; | 56 | chip->asic_loaded = TRUE; |
diff --git a/sound/pci/echoaudio/indigodjx_dsp.c b/sound/pci/echoaudio/indigodjx_dsp.c index f591fc2ed960..91dbfeb586a7 100644 --- a/sound/pci/echoaudio/indigodjx_dsp.c +++ b/sound/pci/echoaudio/indigodjx_dsp.c | |||
@@ -48,7 +48,7 @@ static int init_hw(struct echoaudio *chip, u16 device_id, u16 subdevice_id) | |||
48 | chip->device_id = device_id; | 48 | chip->device_id = device_id; |
49 | chip->subdevice_id = subdevice_id; | 49 | chip->subdevice_id = subdevice_id; |
50 | chip->bad_board = TRUE; | 50 | chip->bad_board = TRUE; |
51 | chip->dsp_code_to_load = &card_fw[FW_INDIGO_DJX_DSP]; | 51 | chip->dsp_code_to_load = FW_INDIGO_DJX_DSP; |
52 | /* Since this card has no ASIC, mark it as loaded so everything | 52 | /* Since this card has no ASIC, mark it as loaded so everything |
53 | works OK */ | 53 | works OK */ |
54 | chip->asic_loaded = TRUE; | 54 | chip->asic_loaded = TRUE; |
diff --git a/sound/pci/echoaudio/indigoio_dsp.c b/sound/pci/echoaudio/indigoio_dsp.c index 0604c8a85223..134e783d3486 100644 --- a/sound/pci/echoaudio/indigoio_dsp.c +++ b/sound/pci/echoaudio/indigoio_dsp.c | |||
@@ -50,7 +50,7 @@ static int init_hw(struct echoaudio *chip, u16 device_id, u16 subdevice_id) | |||
50 | chip->device_id = device_id; | 50 | chip->device_id = device_id; |
51 | chip->subdevice_id = subdevice_id; | 51 | chip->subdevice_id = subdevice_id; |
52 | chip->bad_board = TRUE; | 52 | chip->bad_board = TRUE; |
53 | chip->dsp_code_to_load = &card_fw[FW_INDIGO_IO_DSP]; | 53 | chip->dsp_code_to_load = FW_INDIGO_IO_DSP; |
54 | /* Since this card has no ASIC, mark it as loaded so everything | 54 | /* Since this card has no ASIC, mark it as loaded so everything |
55 | works OK */ | 55 | works OK */ |
56 | chip->asic_loaded = TRUE; | 56 | chip->asic_loaded = TRUE; |
diff --git a/sound/pci/echoaudio/indigoiox_dsp.c b/sound/pci/echoaudio/indigoiox_dsp.c index f357521c79e6..766cf501799d 100644 --- a/sound/pci/echoaudio/indigoiox_dsp.c +++ b/sound/pci/echoaudio/indigoiox_dsp.c | |||
@@ -48,7 +48,7 @@ static int init_hw(struct echoaudio *chip, u16 device_id, u16 subdevice_id) | |||
48 | chip->device_id = device_id; | 48 | chip->device_id = device_id; |
49 | chip->subdevice_id = subdevice_id; | 49 | chip->subdevice_id = subdevice_id; |
50 | chip->bad_board = TRUE; | 50 | chip->bad_board = TRUE; |
51 | chip->dsp_code_to_load = &card_fw[FW_INDIGO_IOX_DSP]; | 51 | chip->dsp_code_to_load = FW_INDIGO_IOX_DSP; |
52 | /* Since this card has no ASIC, mark it as loaded so everything | 52 | /* Since this card has no ASIC, mark it as loaded so everything |
53 | works OK */ | 53 | works OK */ |
54 | chip->asic_loaded = TRUE; | 54 | chip->asic_loaded = TRUE; |
diff --git a/sound/pci/echoaudio/layla20_dsp.c b/sound/pci/echoaudio/layla20_dsp.c index 83750e9fd7b4..07f32454757e 100644 --- a/sound/pci/echoaudio/layla20_dsp.c +++ b/sound/pci/echoaudio/layla20_dsp.c | |||
@@ -31,8 +31,7 @@ | |||
31 | 31 | ||
32 | static int read_dsp(struct echoaudio *chip, u32 *data); | 32 | static int read_dsp(struct echoaudio *chip, u32 *data); |
33 | static int set_professional_spdif(struct echoaudio *chip, char prof); | 33 | static int set_professional_spdif(struct echoaudio *chip, char prof); |
34 | static int load_asic_generic(struct echoaudio *chip, u32 cmd, | 34 | static int load_asic_generic(struct echoaudio *chip, u32 cmd, short asic); |
35 | const struct firmware *asic); | ||
36 | static int check_asic_status(struct echoaudio *chip); | 35 | static int check_asic_status(struct echoaudio *chip); |
37 | static int update_flags(struct echoaudio *chip); | 36 | static int update_flags(struct echoaudio *chip); |
38 | 37 | ||
@@ -54,7 +53,7 @@ static int init_hw(struct echoaudio *chip, u16 device_id, u16 subdevice_id) | |||
54 | chip->subdevice_id = subdevice_id; | 53 | chip->subdevice_id = subdevice_id; |
55 | chip->bad_board = TRUE; | 54 | chip->bad_board = TRUE; |
56 | chip->has_midi = TRUE; | 55 | chip->has_midi = TRUE; |
57 | chip->dsp_code_to_load = &card_fw[FW_LAYLA20_DSP]; | 56 | chip->dsp_code_to_load = FW_LAYLA20_DSP; |
58 | chip->input_clock_types = | 57 | chip->input_clock_types = |
59 | ECHO_CLOCK_BIT_INTERNAL | ECHO_CLOCK_BIT_SPDIF | | 58 | ECHO_CLOCK_BIT_INTERNAL | ECHO_CLOCK_BIT_SPDIF | |
60 | ECHO_CLOCK_BIT_WORD | ECHO_CLOCK_BIT_SUPER; | 59 | ECHO_CLOCK_BIT_WORD | ECHO_CLOCK_BIT_SUPER; |
@@ -144,7 +143,7 @@ static int load_asic(struct echoaudio *chip) | |||
144 | return 0; | 143 | return 0; |
145 | 144 | ||
146 | err = load_asic_generic(chip, DSP_FNC_LOAD_LAYLA_ASIC, | 145 | err = load_asic_generic(chip, DSP_FNC_LOAD_LAYLA_ASIC, |
147 | &card_fw[FW_LAYLA20_ASIC]); | 146 | FW_LAYLA20_ASIC); |
148 | if (err < 0) | 147 | if (err < 0) |
149 | return err; | 148 | return err; |
150 | 149 | ||
diff --git a/sound/pci/echoaudio/layla24_dsp.c b/sound/pci/echoaudio/layla24_dsp.c index d61b5cbcccad..12dc00adca9f 100644 --- a/sound/pci/echoaudio/layla24_dsp.c +++ b/sound/pci/echoaudio/layla24_dsp.c | |||
@@ -32,8 +32,7 @@ static int write_control_reg(struct echoaudio *chip, u32 value, char force); | |||
32 | static int set_input_clock(struct echoaudio *chip, u16 clock); | 32 | static int set_input_clock(struct echoaudio *chip, u16 clock); |
33 | static int set_professional_spdif(struct echoaudio *chip, char prof); | 33 | static int set_professional_spdif(struct echoaudio *chip, char prof); |
34 | static int set_digital_mode(struct echoaudio *chip, u8 mode); | 34 | static int set_digital_mode(struct echoaudio *chip, u8 mode); |
35 | static int load_asic_generic(struct echoaudio *chip, u32 cmd, | 35 | static int load_asic_generic(struct echoaudio *chip, u32 cmd, short asic); |
36 | const struct firmware *asic); | ||
37 | static int check_asic_status(struct echoaudio *chip); | 36 | static int check_asic_status(struct echoaudio *chip); |
38 | 37 | ||
39 | 38 | ||
@@ -54,7 +53,7 @@ static int init_hw(struct echoaudio *chip, u16 device_id, u16 subdevice_id) | |||
54 | chip->subdevice_id = subdevice_id; | 53 | chip->subdevice_id = subdevice_id; |
55 | chip->bad_board = TRUE; | 54 | chip->bad_board = TRUE; |
56 | chip->has_midi = TRUE; | 55 | chip->has_midi = TRUE; |
57 | chip->dsp_code_to_load = &card_fw[FW_LAYLA24_DSP]; | 56 | chip->dsp_code_to_load = FW_LAYLA24_DSP; |
58 | chip->input_clock_types = | 57 | chip->input_clock_types = |
59 | ECHO_CLOCK_BIT_INTERNAL | ECHO_CLOCK_BIT_SPDIF | | 58 | ECHO_CLOCK_BIT_INTERNAL | ECHO_CLOCK_BIT_SPDIF | |
60 | ECHO_CLOCK_BIT_WORD | ECHO_CLOCK_BIT_ADAT; | 59 | ECHO_CLOCK_BIT_WORD | ECHO_CLOCK_BIT_ADAT; |
@@ -123,18 +122,18 @@ static int load_asic(struct echoaudio *chip) | |||
123 | 122 | ||
124 | /* Load the ASIC for the PCI card */ | 123 | /* Load the ASIC for the PCI card */ |
125 | err = load_asic_generic(chip, DSP_FNC_LOAD_LAYLA24_PCI_CARD_ASIC, | 124 | err = load_asic_generic(chip, DSP_FNC_LOAD_LAYLA24_PCI_CARD_ASIC, |
126 | &card_fw[FW_LAYLA24_1_ASIC]); | 125 | FW_LAYLA24_1_ASIC); |
127 | if (err < 0) | 126 | if (err < 0) |
128 | return err; | 127 | return err; |
129 | 128 | ||
130 | chip->asic_code = &card_fw[FW_LAYLA24_2S_ASIC]; | 129 | chip->asic_code = FW_LAYLA24_2S_ASIC; |
131 | 130 | ||
132 | /* Now give the new ASIC a little time to set up */ | 131 | /* Now give the new ASIC a little time to set up */ |
133 | mdelay(10); | 132 | mdelay(10); |
134 | 133 | ||
135 | /* Do the external one */ | 134 | /* Do the external one */ |
136 | err = load_asic_generic(chip, DSP_FNC_LOAD_LAYLA24_EXTERNAL_ASIC, | 135 | err = load_asic_generic(chip, DSP_FNC_LOAD_LAYLA24_EXTERNAL_ASIC, |
137 | &card_fw[FW_LAYLA24_2S_ASIC]); | 136 | FW_LAYLA24_2S_ASIC); |
138 | if (err < 0) | 137 | if (err < 0) |
139 | return FALSE; | 138 | return FALSE; |
140 | 139 | ||
@@ -299,7 +298,7 @@ static int set_input_clock(struct echoaudio *chip, u16 clock) | |||
299 | /* Depending on what digital mode you want, Layla24 needs different ASICs | 298 | /* Depending on what digital mode you want, Layla24 needs different ASICs |
300 | loaded. This function checks the ASIC needed for the new mode and sees | 299 | loaded. This function checks the ASIC needed for the new mode and sees |
301 | if it matches the one already loaded. */ | 300 | if it matches the one already loaded. */ |
302 | static int switch_asic(struct echoaudio *chip, const struct firmware *asic) | 301 | static int switch_asic(struct echoaudio *chip, short asic) |
303 | { | 302 | { |
304 | s8 *monitors; | 303 | s8 *monitors; |
305 | 304 | ||
@@ -335,7 +334,7 @@ static int dsp_set_digital_mode(struct echoaudio *chip, u8 mode) | |||
335 | { | 334 | { |
336 | u32 control_reg; | 335 | u32 control_reg; |
337 | int err, incompatible_clock; | 336 | int err, incompatible_clock; |
338 | const struct firmware *asic; | 337 | short asic; |
339 | 338 | ||
340 | /* Set clock to "internal" if it's not compatible with the new mode */ | 339 | /* Set clock to "internal" if it's not compatible with the new mode */ |
341 | incompatible_clock = FALSE; | 340 | incompatible_clock = FALSE; |
@@ -344,12 +343,12 @@ static int dsp_set_digital_mode(struct echoaudio *chip, u8 mode) | |||
344 | case DIGITAL_MODE_SPDIF_RCA: | 343 | case DIGITAL_MODE_SPDIF_RCA: |
345 | if (chip->input_clock == ECHO_CLOCK_ADAT) | 344 | if (chip->input_clock == ECHO_CLOCK_ADAT) |
346 | incompatible_clock = TRUE; | 345 | incompatible_clock = TRUE; |
347 | asic = &card_fw[FW_LAYLA24_2S_ASIC]; | 346 | asic = FW_LAYLA24_2S_ASIC; |
348 | break; | 347 | break; |
349 | case DIGITAL_MODE_ADAT: | 348 | case DIGITAL_MODE_ADAT: |
350 | if (chip->input_clock == ECHO_CLOCK_SPDIF) | 349 | if (chip->input_clock == ECHO_CLOCK_SPDIF) |
351 | incompatible_clock = TRUE; | 350 | incompatible_clock = TRUE; |
352 | asic = &card_fw[FW_LAYLA24_2A_ASIC]; | 351 | asic = FW_LAYLA24_2A_ASIC; |
353 | break; | 352 | break; |
354 | default: | 353 | default: |
355 | DE_ACT(("Digital mode not supported: %d\n", mode)); | 354 | DE_ACT(("Digital mode not supported: %d\n", mode)); |
diff --git a/sound/pci/echoaudio/mia_dsp.c b/sound/pci/echoaudio/mia_dsp.c index 551405114cbc..d0302f2f00db 100644 --- a/sound/pci/echoaudio/mia_dsp.c +++ b/sound/pci/echoaudio/mia_dsp.c | |||
@@ -53,7 +53,7 @@ static int init_hw(struct echoaudio *chip, u16 device_id, u16 subdevice_id) | |||
53 | chip->device_id = device_id; | 53 | chip->device_id = device_id; |
54 | chip->subdevice_id = subdevice_id; | 54 | chip->subdevice_id = subdevice_id; |
55 | chip->bad_board = TRUE; | 55 | chip->bad_board = TRUE; |
56 | chip->dsp_code_to_load = &card_fw[FW_MIA_DSP]; | 56 | chip->dsp_code_to_load = FW_MIA_DSP; |
57 | /* Since this card has no ASIC, mark it as loaded so everything | 57 | /* Since this card has no ASIC, mark it as loaded so everything |
58 | works OK */ | 58 | works OK */ |
59 | chip->asic_loaded = TRUE; | 59 | chip->asic_loaded = TRUE; |
diff --git a/sound/pci/echoaudio/mona_dsp.c b/sound/pci/echoaudio/mona_dsp.c index eaa619bd2a03..b28b8e4703cf 100644 --- a/sound/pci/echoaudio/mona_dsp.c +++ b/sound/pci/echoaudio/mona_dsp.c | |||
@@ -33,8 +33,7 @@ static int write_control_reg(struct echoaudio *chip, u32 value, char force); | |||
33 | static int set_input_clock(struct echoaudio *chip, u16 clock); | 33 | static int set_input_clock(struct echoaudio *chip, u16 clock); |
34 | static int set_professional_spdif(struct echoaudio *chip, char prof); | 34 | static int set_professional_spdif(struct echoaudio *chip, char prof); |
35 | static int set_digital_mode(struct echoaudio *chip, u8 mode); | 35 | static int set_digital_mode(struct echoaudio *chip, u8 mode); |
36 | static int load_asic_generic(struct echoaudio *chip, u32 cmd, | 36 | static int load_asic_generic(struct echoaudio *chip, u32 cmd, short asic); |
37 | const struct firmware *asic); | ||
38 | static int check_asic_status(struct echoaudio *chip); | 37 | static int check_asic_status(struct echoaudio *chip); |
39 | 38 | ||
40 | 39 | ||
@@ -64,9 +63,9 @@ static int init_hw(struct echoaudio *chip, u16 device_id, u16 subdevice_id) | |||
64 | 63 | ||
65 | /* Mona comes in both '301 and '361 flavors */ | 64 | /* Mona comes in both '301 and '361 flavors */ |
66 | if (chip->device_id == DEVICE_ID_56361) | 65 | if (chip->device_id == DEVICE_ID_56361) |
67 | chip->dsp_code_to_load = &card_fw[FW_MONA_361_DSP]; | 66 | chip->dsp_code_to_load = FW_MONA_361_DSP; |
68 | else | 67 | else |
69 | chip->dsp_code_to_load = &card_fw[FW_MONA_301_DSP]; | 68 | chip->dsp_code_to_load = FW_MONA_301_DSP; |
70 | 69 | ||
71 | chip->digital_mode = DIGITAL_MODE_SPDIF_RCA; | 70 | chip->digital_mode = DIGITAL_MODE_SPDIF_RCA; |
72 | chip->professional_spdif = FALSE; | 71 | chip->professional_spdif = FALSE; |
@@ -120,7 +119,7 @@ static int load_asic(struct echoaudio *chip) | |||
120 | { | 119 | { |
121 | u32 control_reg; | 120 | u32 control_reg; |
122 | int err; | 121 | int err; |
123 | const struct firmware *asic; | 122 | short asic; |
124 | 123 | ||
125 | if (chip->asic_loaded) | 124 | if (chip->asic_loaded) |
126 | return 0; | 125 | return 0; |
@@ -128,9 +127,9 @@ static int load_asic(struct echoaudio *chip) | |||
128 | mdelay(10); | 127 | mdelay(10); |
129 | 128 | ||
130 | if (chip->device_id == DEVICE_ID_56361) | 129 | if (chip->device_id == DEVICE_ID_56361) |
131 | asic = &card_fw[FW_MONA_361_1_ASIC48]; | 130 | asic = FW_MONA_361_1_ASIC48; |
132 | else | 131 | else |
133 | asic = &card_fw[FW_MONA_301_1_ASIC48]; | 132 | asic = FW_MONA_301_1_ASIC48; |
134 | 133 | ||
135 | err = load_asic_generic(chip, DSP_FNC_LOAD_MONA_PCI_CARD_ASIC, asic); | 134 | err = load_asic_generic(chip, DSP_FNC_LOAD_MONA_PCI_CARD_ASIC, asic); |
136 | if (err < 0) | 135 | if (err < 0) |
@@ -141,7 +140,7 @@ static int load_asic(struct echoaudio *chip) | |||
141 | 140 | ||
142 | /* Do the external one */ | 141 | /* Do the external one */ |
143 | err = load_asic_generic(chip, DSP_FNC_LOAD_MONA_EXTERNAL_ASIC, | 142 | err = load_asic_generic(chip, DSP_FNC_LOAD_MONA_EXTERNAL_ASIC, |
144 | &card_fw[FW_MONA_2_ASIC]); | 143 | FW_MONA_2_ASIC); |
145 | if (err < 0) | 144 | if (err < 0) |
146 | return err; | 145 | return err; |
147 | 146 | ||
@@ -165,22 +164,22 @@ loaded. This function checks the ASIC needed for the new mode and sees | |||
165 | if it matches the one already loaded. */ | 164 | if it matches the one already loaded. */ |
166 | static int switch_asic(struct echoaudio *chip, char double_speed) | 165 | static int switch_asic(struct echoaudio *chip, char double_speed) |
167 | { | 166 | { |
168 | const struct firmware *asic; | ||
169 | int err; | 167 | int err; |
168 | short asic; | ||
170 | 169 | ||
171 | /* Check the clock detect bits to see if this is | 170 | /* Check the clock detect bits to see if this is |
172 | a single-speed clock or a double-speed clock; load | 171 | a single-speed clock or a double-speed clock; load |
173 | a new ASIC if necessary. */ | 172 | a new ASIC if necessary. */ |
174 | if (chip->device_id == DEVICE_ID_56361) { | 173 | if (chip->device_id == DEVICE_ID_56361) { |
175 | if (double_speed) | 174 | if (double_speed) |
176 | asic = &card_fw[FW_MONA_361_1_ASIC96]; | 175 | asic = FW_MONA_361_1_ASIC96; |
177 | else | 176 | else |
178 | asic = &card_fw[FW_MONA_361_1_ASIC48]; | 177 | asic = FW_MONA_361_1_ASIC48; |
179 | } else { | 178 | } else { |
180 | if (double_speed) | 179 | if (double_speed) |
181 | asic = &card_fw[FW_MONA_301_1_ASIC96]; | 180 | asic = FW_MONA_301_1_ASIC96; |
182 | else | 181 | else |
183 | asic = &card_fw[FW_MONA_301_1_ASIC48]; | 182 | asic = FW_MONA_301_1_ASIC48; |
184 | } | 183 | } |
185 | 184 | ||
186 | if (asic != chip->asic_code) { | 185 | if (asic != chip->asic_code) { |
@@ -200,7 +199,7 @@ static int switch_asic(struct echoaudio *chip, char double_speed) | |||
200 | static int set_sample_rate(struct echoaudio *chip, u32 rate) | 199 | static int set_sample_rate(struct echoaudio *chip, u32 rate) |
201 | { | 200 | { |
202 | u32 control_reg, clock; | 201 | u32 control_reg, clock; |
203 | const struct firmware *asic; | 202 | short asic; |
204 | char force_write; | 203 | char force_write; |
205 | 204 | ||
206 | /* Only set the clock for internal mode. */ | 205 | /* Only set the clock for internal mode. */ |
@@ -218,14 +217,14 @@ static int set_sample_rate(struct echoaudio *chip, u32 rate) | |||
218 | if (chip->digital_mode == DIGITAL_MODE_ADAT) | 217 | if (chip->digital_mode == DIGITAL_MODE_ADAT) |
219 | return -EINVAL; | 218 | return -EINVAL; |
220 | if (chip->device_id == DEVICE_ID_56361) | 219 | if (chip->device_id == DEVICE_ID_56361) |
221 | asic = &card_fw[FW_MONA_361_1_ASIC96]; | 220 | asic = FW_MONA_361_1_ASIC96; |
222 | else | 221 | else |
223 | asic = &card_fw[FW_MONA_301_1_ASIC96]; | 222 | asic = FW_MONA_301_1_ASIC96; |
224 | } else { | 223 | } else { |
225 | if (chip->device_id == DEVICE_ID_56361) | 224 | if (chip->device_id == DEVICE_ID_56361) |
226 | asic = &card_fw[FW_MONA_361_1_ASIC48]; | 225 | asic = FW_MONA_361_1_ASIC48; |
227 | else | 226 | else |
228 | asic = &card_fw[FW_MONA_301_1_ASIC48]; | 227 | asic = FW_MONA_301_1_ASIC48; |
229 | } | 228 | } |
230 | 229 | ||
231 | force_write = 0; | 230 | force_write = 0; |
@@ -410,8 +409,8 @@ static int dsp_set_digital_mode(struct echoaudio *chip, u8 mode) | |||
410 | case DIGITAL_MODE_ADAT: | 409 | case DIGITAL_MODE_ADAT: |
411 | /* If the current ASIC is the 96KHz ASIC, switch the ASIC | 410 | /* If the current ASIC is the 96KHz ASIC, switch the ASIC |
412 | and set to 48 KHz */ | 411 | and set to 48 KHz */ |
413 | if (chip->asic_code == &card_fw[FW_MONA_361_1_ASIC96] || | 412 | if (chip->asic_code == FW_MONA_361_1_ASIC96 || |
414 | chip->asic_code == &card_fw[FW_MONA_301_1_ASIC96]) { | 413 | chip->asic_code == FW_MONA_301_1_ASIC96) { |
415 | set_sample_rate(chip, 48000); | 414 | set_sample_rate(chip, 48000); |
416 | } | 415 | } |
417 | control_reg |= GML_ADAT_MODE; | 416 | control_reg |= GML_ADAT_MODE; |