emu10k1_main.c (82c8c74107c31673478031e90e24a2b74ca680f2) emu10k1_main.c (7e0af29d6f3964bec3d72c6caeb87a603e660fdf)
1/*
2 * Copyright (c) by Jaroslav Kysela <perex@suse.cz>
3 * Creative Labs, Inc.
4 * Routines for control of EMU10K1 chips
5 *
6 * Copyright (c) by James Courtier-Dutton <James@superbug.co.uk>
7 * Added support for Audigy 2 Value.
8 * Added EMU 1010 support.

--- 35 unchanged lines hidden (view full) ---

44#include <sound/core.h>
45#include <sound/emu10k1.h>
46#include <linux/firmware.h>
47#include "p16v.h"
48#include "tina2.h"
49#include "p17v.h"
50
51
1/*
2 * Copyright (c) by Jaroslav Kysela <perex@suse.cz>
3 * Creative Labs, Inc.
4 * Routines for control of EMU10K1 chips
5 *
6 * Copyright (c) by James Courtier-Dutton <James@superbug.co.uk>
7 * Added support for Audigy 2 Value.
8 * Added EMU 1010 support.

--- 35 unchanged lines hidden (view full) ---

44#include <sound/core.h>
45#include <sound/emu10k1.h>
46#include <linux/firmware.h>
47#include "p16v.h"
48#include "tina2.h"
49#include "p17v.h"
50
51
52#define HANA_FILENAME "emu/hana.fw"
53#define DOCK_FILENAME "emu/audio_dock.fw"
54
55MODULE_FIRMWARE(HANA_FILENAME);
56MODULE_FIRMWARE(DOCK_FILENAME);
57
58
52/*************************************************************************
53 * EMU10K1 init / done
54 *************************************************************************/
55
56void snd_emu10k1_voice_init(struct snd_emu10k1 * emu, int ch)
57{
58 snd_emu10k1_ptr_write(emu, DCYSUSV, ch, 0);
59 snd_emu10k1_ptr_write(emu, IP, ch, 0);

--- 628 unchanged lines hidden (view full) ---

688}
689
690static int snd_emu10k1_emu1010_init(struct snd_emu10k1 * emu)
691{
692 unsigned int i;
693 int tmp,tmp2;
694 int reg;
695 int err;
59/*************************************************************************
60 * EMU10K1 init / done
61 *************************************************************************/
62
63void snd_emu10k1_voice_init(struct snd_emu10k1 * emu, int ch)
64{
65 snd_emu10k1_ptr_write(emu, DCYSUSV, ch, 0);
66 snd_emu10k1_ptr_write(emu, IP, ch, 0);

--- 628 unchanged lines hidden (view full) ---

695}
696
697static int snd_emu10k1_emu1010_init(struct snd_emu10k1 * emu)
698{
699 unsigned int i;
700 int tmp,tmp2;
701 int reg;
702 int err;
696 const char *hana_filename = "emu/hana.fw";
697 const char *dock_filename = "emu/audio_dock.fw";
698
699 snd_printk(KERN_INFO "emu1010: Special config.\n");
700 /* AC97 2.1, Any 16Meg of 4Gig address, Auto-Mute, EMU32 Slave,
701 * Lock Sound Memory Cache, Lock Tank Memory Cache,
702 * Mute all codecs.
703 */
704 outl(0x0005a00c, emu->port + HCFG);
705 /* AC97 2.1, Any 16Meg of 4Gig address, Auto-Mute, EMU32 Slave,

--- 24 unchanged lines hidden (view full) ---

730 }
731 snd_emu1010_fpga_read(emu, EMU_HANA_ID, &reg );
732 snd_printdd("reg2=0x%x\n",reg);
733 if (reg == 0x55) {
734 /* FPGA failed to return to programming mode */
735 return -ENODEV;
736 }
737 snd_printk(KERN_INFO "emu1010: EMU_HANA_ID=0x%x\n",reg);
703
704 snd_printk(KERN_INFO "emu1010: Special config.\n");
705 /* AC97 2.1, Any 16Meg of 4Gig address, Auto-Mute, EMU32 Slave,
706 * Lock Sound Memory Cache, Lock Tank Memory Cache,
707 * Mute all codecs.
708 */
709 outl(0x0005a00c, emu->port + HCFG);
710 /* AC97 2.1, Any 16Meg of 4Gig address, Auto-Mute, EMU32 Slave,

--- 24 unchanged lines hidden (view full) ---

735 }
736 snd_emu1010_fpga_read(emu, EMU_HANA_ID, &reg );
737 snd_printdd("reg2=0x%x\n",reg);
738 if (reg == 0x55) {
739 /* FPGA failed to return to programming mode */
740 return -ENODEV;
741 }
742 snd_printk(KERN_INFO "emu1010: EMU_HANA_ID=0x%x\n",reg);
738 if ((err = snd_emu1010_load_firmware(emu, hana_filename)) != 0) {
739 snd_printk(KERN_INFO "emu1010: Loading Hana Firmware file %s failed\n", hana_filename);
743 if ((err = snd_emu1010_load_firmware(emu, HANA_FILENAME)) != 0) {
744 snd_printk(KERN_INFO "emu1010: Loading Hana Firmware file %s failed\n", HANA_FILENAME);
740 return err;
741 }
742
743 /* ID, should read & 0x7f = 0x55 when FPGA programmed. */
744 snd_emu1010_fpga_read(emu, EMU_HANA_ID, &reg );
745 if (reg != 0x55) {
746 /* FPGA failed to be programmed */
747 snd_printk(KERN_INFO "emu1010: Loading Hana Firmware file failed, reg=0x%x\n", reg);

--- 185 unchanged lines hidden (view full) ---

933 /* FIXME: The loading of this should be able to happen any time,
934 * as the user can plug/unplug it at any time
935 */
936 if (reg & (EMU_HANA_OPTION_DOCK_ONLINE | EMU_HANA_OPTION_DOCK_OFFLINE) ) {
937 /* Audio Dock attached */
938 /* Return to Audio Dock programming mode */
939 snd_printk(KERN_INFO "emu1010: Loading Audio Dock Firmware\n");
940 snd_emu1010_fpga_write(emu, EMU_HANA_FPGA_CONFIG, EMU_HANA_FPGA_CONFIG_AUDIODOCK );
745 return err;
746 }
747
748 /* ID, should read & 0x7f = 0x55 when FPGA programmed. */
749 snd_emu1010_fpga_read(emu, EMU_HANA_ID, &reg );
750 if (reg != 0x55) {
751 /* FPGA failed to be programmed */
752 snd_printk(KERN_INFO "emu1010: Loading Hana Firmware file failed, reg=0x%x\n", reg);

--- 185 unchanged lines hidden (view full) ---

938 /* FIXME: The loading of this should be able to happen any time,
939 * as the user can plug/unplug it at any time
940 */
941 if (reg & (EMU_HANA_OPTION_DOCK_ONLINE | EMU_HANA_OPTION_DOCK_OFFLINE) ) {
942 /* Audio Dock attached */
943 /* Return to Audio Dock programming mode */
944 snd_printk(KERN_INFO "emu1010: Loading Audio Dock Firmware\n");
945 snd_emu1010_fpga_write(emu, EMU_HANA_FPGA_CONFIG, EMU_HANA_FPGA_CONFIG_AUDIODOCK );
941 if ((err = snd_emu1010_load_firmware(emu, dock_filename)) != 0) {
946 if ((err = snd_emu1010_load_firmware(emu, DOCK_FILENAME)) != 0) {
942 return err;
943 }
944 snd_emu1010_fpga_write(emu, EMU_HANA_FPGA_CONFIG, 0 );
945 snd_emu1010_fpga_read(emu, EMU_HANA_IRQ_STATUS, &reg );
946 snd_printk(KERN_INFO "emu1010: EMU_HANA+DOCK_IRQ_STATUS=0x%x\n",reg);
947 /* ID, should read & 0x7f = 0x55 when FPGA programmed. */
948 snd_emu1010_fpga_read(emu, EMU_HANA_ID, &reg );
949 snd_printk(KERN_INFO "emu1010: EMU_HANA+DOCK_ID=0x%x\n",reg);

--- 899 unchanged lines hidden ---
947 return err;
948 }
949 snd_emu1010_fpga_write(emu, EMU_HANA_FPGA_CONFIG, 0 );
950 snd_emu1010_fpga_read(emu, EMU_HANA_IRQ_STATUS, &reg );
951 snd_printk(KERN_INFO "emu1010: EMU_HANA+DOCK_IRQ_STATUS=0x%x\n",reg);
952 /* ID, should read & 0x7f = 0x55 when FPGA programmed. */
953 snd_emu1010_fpga_read(emu, EMU_HANA_ID, &reg );
954 snd_printk(KERN_INFO "emu1010: EMU_HANA+DOCK_ID=0x%x\n",reg);

--- 899 unchanged lines hidden ---