Skip to content

Commit 1aa4127

Browse files
ossilatortiwai
authored andcommitted
ALSA: emu10k1: move code for entering E-MU card FPGA programming mode
... into snd_emu1010_load_firmware_entry(). This makes it clearer that these steps belong together tightly, as implied by prior commits. Signed-off-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de> Signed-off-by: Takashi Iwai <tiwai@suse.de> Message-ID: <20240428093717.3198716-5-oswald.buddenhagen@gmx.de>
1 parent 4c0c368 commit 1aa4127

3 files changed

Lines changed: 8 additions & 8 deletions

File tree

include/sound/emu10k1.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1843,7 +1843,7 @@ void snd_emu1010_fpga_link_dst_src_write(struct snd_emu10k1 *emu, u32 dst, u32 s
18431843
u32 snd_emu1010_fpga_link_dst_src_read(struct snd_emu10k1 *emu, u32 dst);
18441844
int snd_emu1010_get_raw_rate(struct snd_emu10k1 *emu, u8 src);
18451845
void snd_emu1010_update_clock(struct snd_emu10k1 *emu);
1846-
void snd_emu1010_load_firmware_entry(struct snd_emu10k1 *emu, const struct firmware *fw_entry);
1846+
void snd_emu1010_load_firmware_entry(struct snd_emu10k1 *emu, int dock, const struct firmware *fw_entry);
18471847
unsigned int snd_emu10k1_efx_read(struct snd_emu10k1 *emu, unsigned int pc);
18481848
void snd_emu10k1_intr_enable(struct snd_emu10k1 *emu, unsigned int intrenb);
18491849
void snd_emu10k1_intr_disable(struct snd_emu10k1 *emu, unsigned int intrenb);

sound/pci/emu10k1/emu10k1_main.c

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -683,7 +683,7 @@ static int snd_emu1010_load_firmware(struct snd_emu10k1 *emu, int dock,
683683
return err;
684684
}
685685

686-
snd_emu1010_load_firmware_entry(emu, *fw);
686+
snd_emu1010_load_firmware_entry(emu, dock, *fw);
687687
return 0;
688688
}
689689

@@ -699,9 +699,6 @@ static void snd_emu1010_load_dock_firmware(struct snd_emu10k1 *emu)
699699
msleep(200);
700700

701701
dev_info(emu->card->dev, "emu1010: Loading Audio Dock Firmware\n");
702-
/* Return to Audio Dock programming mode */
703-
snd_emu1010_fpga_write(emu, EMU_HANA_FPGA_CONFIG,
704-
EMU_HANA_FPGA_CONFIG_AUDIODOCK);
705702
err = snd_emu1010_load_firmware(emu, 1, &emu->dock_fw);
706703
if (err < 0)
707704
return;
@@ -820,8 +817,6 @@ static int snd_emu10k1_emu1010_init(struct snd_emu10k1 *emu)
820817
snd_emu1010_fpga_lock(emu);
821818

822819
dev_info(emu->card->dev, "emu1010: Loading Hana Firmware\n");
823-
snd_emu1010_fpga_write(emu, EMU_HANA_FPGA_CONFIG,
824-
EMU_HANA_FPGA_CONFIG_HANA);
825820
err = snd_emu1010_load_firmware(emu, 0, &emu->firmware);
826821
if (err < 0) {
827822
dev_info(emu->card->dev, "emu1010: Loading Firmware failed\n");

sound/pci/emu10k1/io.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -422,7 +422,7 @@ void snd_emu1010_update_clock(struct snd_emu10k1 *emu)
422422
snd_emu1010_fpga_write(emu, EMU_HANA_DOCK_LEDS_2, leds);
423423
}
424424

425-
void snd_emu1010_load_firmware_entry(struct snd_emu10k1 *emu,
425+
void snd_emu1010_load_firmware_entry(struct snd_emu10k1 *emu, int dock,
426426
const struct firmware *fw_entry)
427427
{
428428
__always_unused u16 write_post;
@@ -440,6 +440,11 @@ void snd_emu1010_load_firmware_entry(struct snd_emu10k1 *emu,
440440
// GPO6 -> FPGA CCLK & FPGA input
441441
// GPO5 -> FPGA DIN (dual function)
442442

443+
// If the FPGA is already programmed, return it to programming mode
444+
snd_emu1010_fpga_write(emu, EMU_HANA_FPGA_CONFIG,
445+
dock ? EMU_HANA_FPGA_CONFIG_AUDIODOCK :
446+
EMU_HANA_FPGA_CONFIG_HANA);
447+
443448
// Assert reset line for 100uS
444449
outw(0x00, emu->port + A_GPIO);
445450
write_post = inw(emu->port + A_GPIO);

0 commit comments

Comments
 (0)