indigodjx_dsp.c (2145B)
1/************************************************************************ 2 3This file is part of Echo Digital Audio's generic driver library. 4Copyright Echo Digital Audio Corporation (c) 1998 - 2005 5All rights reserved 6www.echoaudio.com 7 8This library is free software; you can redistribute it and/or 9modify it under the terms of the GNU Lesser General Public 10License as published by the Free Software Foundation; either 11version 2.1 of the License, or (at your option) any later version. 12 13This library is distributed in the hope that it will be useful, 14but WITHOUT ANY WARRANTY; without even the implied warranty of 15MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 16Lesser General Public License for more details. 17 18You should have received a copy of the GNU Lesser General Public 19License along with this library; if not, write to the Free Software 20Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 21 22************************************************************************* 23 24 Translation from C++ and adaptation for use in ALSA-Driver 25 were made by Giuliano Pochini <pochini@shiny.it> 26 27*************************************************************************/ 28 29static int update_vmixer_level(struct echoaudio *chip); 30static int set_vmixer_gain(struct echoaudio *chip, u16 output, 31 u16 pipe, int gain); 32 33 34static int init_hw(struct echoaudio *chip, u16 device_id, u16 subdevice_id) 35{ 36 int err; 37 38 if (snd_BUG_ON((subdevice_id & 0xfff0) != INDIGO_DJX)) 39 return -ENODEV; 40 41 err = init_dsp_comm_page(chip); 42 if (err < 0) { 43 dev_err(chip->card->dev, 44 "init_hw - could not initialize DSP comm page\n"); 45 return err; 46 } 47 48 chip->device_id = device_id; 49 chip->subdevice_id = subdevice_id; 50 chip->bad_board = true; 51 chip->dsp_code_to_load = FW_INDIGO_DJX_DSP; 52 /* Since this card has no ASIC, mark it as loaded so everything 53 works OK */ 54 chip->asic_loaded = true; 55 chip->input_clock_types = ECHO_CLOCK_BIT_INTERNAL; 56 57 err = load_firmware(chip); 58 if (err < 0) 59 return err; 60 chip->bad_board = false; 61 62 return err; 63} 64 65 66 67static int set_mixer_defaults(struct echoaudio *chip) 68{ 69 return init_line_levels(chip); 70}