~ubuntu-branches/ubuntu/maverick/linux-backports-modules-2.6.32/maverick

« back to all changes in this revision

Viewing changes to updates/alsa-driver/alsa-kernel/pci/echoaudio/mona.c

  • Committer: Bazaar Package Importer
  • Author(s): Andy Whitcroft, Andy Whitcroft
  • Date: 2010-02-04 23:15:51 UTC
  • Revision ID: james.westby@ubuntu.com-20100204231551-vjz5pkvxclukjxm1
Tags: 2.6.32-12.1
[ Andy Whitcroft ]

* initial LBM for lucid
* drop generated files
* printchanges -- rebase tree does not have stable tags use changelog
* printenv -- add revisions to printenv output
* formally rename compat-wireless to linux-backports-modules-wireless
* Update to compat-wireless-2.6.33-rc5
* update nouveau to mainline 2.6.33-rc4
* add new LBM package for nouveau
* nouveau -- fix major numbers and proc entry names
* fix up firmware installs for -wireless
* clean up UPDATE-NOVEAU
* update Nouveau to v2.6.33-rc6

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 *  ALSA driver for Echoaudio soundcards.
 
3
 *  Copyright (C) 2003-2004 Giuliano Pochini <pochini@shiny.it>
 
4
 *
 
5
 *  This program is free software; you can redistribute it and/or modify
 
6
 *  it under the terms of the GNU General Public License as published by
 
7
 *  the Free Software Foundation; version 2 of the License.
 
8
 *
 
9
 *  This program is distributed in the hope that it will be useful,
 
10
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 
11
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
12
 *  GNU General Public License for more details.
 
13
 *
 
14
 *  You should have received a copy of the GNU General Public License
 
15
 *  along with this program; if not, write to the Free Software
 
16
 *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
17
 */
 
18
 
 
19
#define ECHO24_FAMILY
 
20
#define ECHOCARD_MONA
 
21
#define ECHOCARD_NAME "Mona"
 
22
#define ECHOCARD_HAS_MONITOR
 
23
#define ECHOCARD_HAS_ASIC
 
24
#define ECHOCARD_HAS_SUPER_INTERLEAVE
 
25
#define ECHOCARD_HAS_DIGITAL_IO
 
26
#define ECHOCARD_HAS_DIGITAL_IN_AUTOMUTE
 
27
#define ECHOCARD_HAS_DIGITAL_MODE_SWITCH
 
28
#define ECHOCARD_HAS_EXTERNAL_CLOCK
 
29
#define ECHOCARD_HAS_ADAT       6
 
30
#define ECHOCARD_HAS_STEREO_BIG_ENDIAN32
 
31
 
 
32
/* Pipe indexes */
 
33
#define PX_ANALOG_OUT   0       /* 6 */
 
34
#define PX_DIGITAL_OUT  6       /* 8 */
 
35
#define PX_ANALOG_IN    14      /* 4 */
 
36
#define PX_DIGITAL_IN   18      /* 8 */
 
37
#define PX_NUM          26
 
38
 
 
39
/* Bus indexes */
 
40
#define BX_ANALOG_OUT   0       /* 6 */
 
41
#define BX_DIGITAL_OUT  6       /* 8 */
 
42
#define BX_ANALOG_IN    14      /* 4 */
 
43
#define BX_DIGITAL_IN   18      /* 8 */
 
44
#define BX_NUM          26
 
45
 
 
46
 
 
47
#include <linux/delay.h>
 
48
#include <linux/init.h>
 
49
#include <linux/interrupt.h>
 
50
#include <linux/pci.h>
 
51
#include <linux/slab.h>
 
52
#include <linux/moduleparam.h>
 
53
#include <linux/firmware.h>
 
54
#include <sound/core.h>
 
55
#include <sound/info.h>
 
56
#include <sound/control.h>
 
57
#include <sound/tlv.h>
 
58
#include <sound/pcm.h>
 
59
#include <sound/pcm_params.h>
 
60
#include <sound/asoundef.h>
 
61
#include <sound/initval.h>
 
62
#include <asm/io.h>
 
63
#include <asm/atomic.h>
 
64
#include "echoaudio.h"
 
65
 
 
66
MODULE_FIRMWARE("ea/loader_dsp.fw");
 
67
MODULE_FIRMWARE("ea/mona_301_dsp.fw");
 
68
MODULE_FIRMWARE("ea/mona_361_dsp.fw");
 
69
MODULE_FIRMWARE("ea/mona_301_1_asic_48.fw");
 
70
MODULE_FIRMWARE("ea/mona_301_1_asic_96.fw");
 
71
MODULE_FIRMWARE("ea/mona_361_1_asic_48.fw");
 
72
MODULE_FIRMWARE("ea/mona_361_1_asic_96.fw");
 
73
MODULE_FIRMWARE("ea/mona_2_asic.fw");
 
74
 
 
75
#define FW_361_LOADER           0
 
76
#define FW_MONA_301_DSP         1
 
77
#define FW_MONA_361_DSP         2
 
78
#define FW_MONA_301_1_ASIC48    3
 
79
#define FW_MONA_301_1_ASIC96    4
 
80
#define FW_MONA_361_1_ASIC48    5
 
81
#define FW_MONA_361_1_ASIC96    6
 
82
#define FW_MONA_2_ASIC          7
 
83
 
 
84
static const struct firmware card_fw[] = {
 
85
        {0, "loader_dsp.fw"},
 
86
        {0, "mona_301_dsp.fw"},
 
87
        {0, "mona_361_dsp.fw"},
 
88
        {0, "mona_301_1_asic_48.fw"},
 
89
        {0, "mona_301_1_asic_96.fw"},
 
90
        {0, "mona_361_1_asic_48.fw"},
 
91
        {0, "mona_361_1_asic_96.fw"},
 
92
        {0, "mona_2_asic.fw"}
 
93
};
 
94
 
 
95
static struct pci_device_id snd_echo_ids[] = {
 
96
        {0x1057, 0x1801, 0xECC0, 0x0070, 0, 0, 0},      /* DSP 56301 Mona rev.0 */
 
97
        {0x1057, 0x1801, 0xECC0, 0x0071, 0, 0, 0},      /* DSP 56301 Mona rev.1 */
 
98
        {0x1057, 0x1801, 0xECC0, 0x0072, 0, 0, 0},      /* DSP 56301 Mona rev.2 */
 
99
        {0x1057, 0x3410, 0xECC0, 0x0070, 0, 0, 0},      /* DSP 56361 Mona rev.0 */
 
100
        {0x1057, 0x3410, 0xECC0, 0x0071, 0, 0, 0},      /* DSP 56361 Mona rev.1 */
 
101
        {0x1057, 0x3410, 0xECC0, 0x0072, 0, 0, 0},      /* DSP 56361 Mona rev.2 */
 
102
        {0,}
 
103
};
 
104
 
 
105
static struct snd_pcm_hardware pcm_hardware_skel = {
 
106
        .info = SNDRV_PCM_INFO_MMAP |
 
107
                SNDRV_PCM_INFO_INTERLEAVED |
 
108
                SNDRV_PCM_INFO_BLOCK_TRANSFER |
 
109
                SNDRV_PCM_INFO_MMAP_VALID |
 
110
                SNDRV_PCM_INFO_PAUSE |
 
111
                SNDRV_PCM_INFO_SYNC_START,
 
112
        .formats =      SNDRV_PCM_FMTBIT_U8 |
 
113
                        SNDRV_PCM_FMTBIT_S16_LE |
 
114
                        SNDRV_PCM_FMTBIT_S24_3LE |
 
115
                        SNDRV_PCM_FMTBIT_S32_LE |
 
116
                        SNDRV_PCM_FMTBIT_S32_BE,
 
117
        .rates =        SNDRV_PCM_RATE_8000_48000 |
 
118
                        SNDRV_PCM_RATE_88200 |
 
119
                        SNDRV_PCM_RATE_96000,
 
120
        .rate_min = 8000,
 
121
        .rate_max = 96000,
 
122
        .channels_min = 1,
 
123
        .channels_max = 8,
 
124
        .buffer_bytes_max = 262144,
 
125
        .period_bytes_min = 32,
 
126
        .period_bytes_max = 131072,
 
127
        .periods_min = 2,
 
128
        .periods_max = 220,
 
129
        /* One page (4k) contains 512 instructions. I don't know if the hw
 
130
        supports lists longer than this. In this case periods_max=220 is a
 
131
        safe limit to make sure the list never exceeds 512 instructions. */
 
132
};
 
133
 
 
134
 
 
135
#include "mona_dsp.c"
 
136
#include "echoaudio_dsp.c"
 
137
#include "echoaudio_gml.c"
 
138
#include "echoaudio.c"