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, ® ); 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, ® ); 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, ® ); 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, ® ); 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, ® ); 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, ® ); 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, ® ); 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, ® ); 954 snd_printk(KERN_INFO "emu1010: EMU_HANA+DOCK_ID=0x%x\n",reg); --- 899 unchanged lines hidden --- |