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
init_hw(struct echoaudio * chip,u16 device_id,u16 subdevice_id)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 if (snd_BUG_ON((subdevice_id & 0xfff0) != INDIGO_IOX))
39a2328d02SGiuliano Pochini return -ENODEV;
40a2328d02SGiuliano Pochini
41a2328d02SGiuliano Pochini err = init_dsp_comm_page(chip);
42a2328d02SGiuliano Pochini if (err < 0) {
43b5b4a41bSSudip Mukherjee dev_err(chip->card->dev,
44b5b4a41bSSudip Mukherjee "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;
503f6175ecSMark Brown 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 */
543f6175ecSMark Brown 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;
603f6175ecSMark Brown chip->bad_board = false;
61a2328d02SGiuliano Pochini
62a2328d02SGiuliano Pochini return err;
63a2328d02SGiuliano Pochini }
64ad3499f4SGiuliano Pochini
65ad3499f4SGiuliano Pochini
66ad3499f4SGiuliano Pochini
set_mixer_defaults(struct echoaudio * chip)67ad3499f4SGiuliano Pochini static int set_mixer_defaults(struct echoaudio *chip)
68ad3499f4SGiuliano Pochini {
69ad3499f4SGiuliano Pochini return init_line_levels(chip);
70ad3499f4SGiuliano Pochini }
71