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