Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
linux-davinci
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
linux
linux-davinci
Commits
c9294e4b
Commit
c9294e4b
authored
Mar 24, 2009
by
Takashi Iwai
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'topic/echoaudio' into for-linus
parents
ae02cde7
a2328d02
Changes
14
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
508 additions
and
64 deletions
+508
-64
sound/pci/Kconfig
sound/pci/Kconfig
+20
-0
sound/pci/echoaudio/Makefile
sound/pci/echoaudio/Makefile
+4
-0
sound/pci/echoaudio/echoaudio.c
sound/pci/echoaudio/echoaudio.c
+3
-14
sound/pci/echoaudio/echoaudio.h
sound/pci/echoaudio/echoaudio.h
+3
-0
sound/pci/echoaudio/echoaudio_dsp.h
sound/pci/echoaudio/echoaudio_dsp.h
+7
-2
sound/pci/echoaudio/indigo_dsp.c
sound/pci/echoaudio/indigo_dsp.c
+0
-12
sound/pci/echoaudio/indigo_express_dsp.c
sound/pci/echoaudio/indigo_express_dsp.c
+119
-0
sound/pci/echoaudio/indigodj_dsp.c
sound/pci/echoaudio/indigodj_dsp.c
+0
-12
sound/pci/echoaudio/indigodjx.c
sound/pci/echoaudio/indigodjx.c
+107
-0
sound/pci/echoaudio/indigodjx_dsp.c
sound/pci/echoaudio/indigodjx_dsp.c
+68
-0
sound/pci/echoaudio/indigoio_dsp.c
sound/pci/echoaudio/indigoio_dsp.c
+0
-12
sound/pci/echoaudio/indigoiox.c
sound/pci/echoaudio/indigoiox.c
+109
-0
sound/pci/echoaudio/indigoiox_dsp.c
sound/pci/echoaudio/indigoiox_dsp.c
+68
-0
sound/pci/echoaudio/mia_dsp.c
sound/pci/echoaudio/mia_dsp.c
+0
-12
No files found.
sound/pci/Kconfig
View file @
c9294e4b
...
...
@@ -400,6 +400,26 @@ config SND_INDIGODJ
To compile this driver as a module, choose M here: the module
will be called snd-indigodj
config SND_INDIGOIOX
tristate "(Echoaudio) Indigo IOx"
select FW_LOADER
select SND_PCM
help
Say 'Y' or 'M' to include support for Echoaudio Indigo IOx.
To compile this driver as a module, choose M here: the module
will be called snd-indigoiox
config SND_INDIGODJX
tristate "(Echoaudio) Indigo DJx"
select FW_LOADER
select SND_PCM
help
Say 'Y' or 'M' to include support for Echoaudio Indigo DJx.
To compile this driver as a module, choose M here: the module
will be called snd-indigodjx
config SND_EMU10K1
tristate "Emu10k1 (SB Live!, Audigy, E-mu APS)"
select FW_LOADER
...
...
sound/pci/echoaudio/Makefile
View file @
c9294e4b
...
...
@@ -15,6 +15,8 @@ snd-echo3g-objs := echo3g.o
snd-indigo-objs
:=
indigo.o
snd-indigoio-objs
:=
indigoio.o
snd-indigodj-objs
:=
indigodj.o
snd-indigoiox-objs
:=
indigoiox.o
snd-indigodjx-objs
:=
indigodjx.o
obj-$(CONFIG_SND_DARLA20)
+=
snd-darla20.o
obj-$(CONFIG_SND_GINA20)
+=
snd-gina20.o
...
...
@@ -28,3 +30,5 @@ obj-$(CONFIG_SND_ECHO3G) += snd-echo3g.o
obj-$(CONFIG_SND_INDIGO)
+=
snd-indigo.o
obj-$(CONFIG_SND_INDIGOIO)
+=
snd-indigoio.o
obj-$(CONFIG_SND_INDIGODJ)
+=
snd-indigodj.o
obj-$(CONFIG_SND_INDIGOIOX)
+=
snd-indigoiox.o
obj-$(CONFIG_SND_INDIGODJX)
+=
snd-indigodjx.o
sound/pci/echoaudio/echoaudio.c
View file @
c9294e4b
...
...
@@ -950,6 +950,8 @@ static int __devinit snd_echo_new_pcm(struct echoaudio *chip)
Control interface
******************************************************************************/
#ifndef ECHOCARD_HAS_VMIXER
/******************* PCM output volume *******************/
static
int
snd_echo_output_gain_info
(
struct
snd_kcontrol
*
kcontrol
,
struct
snd_ctl_elem_info
*
uinfo
)
...
...
@@ -1001,18 +1003,6 @@ static int snd_echo_output_gain_put(struct snd_kcontrol *kcontrol,
return
changed
;
}
#ifdef ECHOCARD_HAS_VMIXER
/* On Vmixer cards this one controls the line-out volume */
static
struct
snd_kcontrol_new
snd_echo_line_output_gain
__devinitdata
=
{
.
name
=
"Line Playback Volume"
,
.
iface
=
SNDRV_CTL_ELEM_IFACE_MIXER
,
.
access
=
SNDRV_CTL_ELEM_ACCESS_READWRITE
|
SNDRV_CTL_ELEM_ACCESS_TLV_READ
,
.
info
=
snd_echo_output_gain_info
,
.
get
=
snd_echo_output_gain_get
,
.
put
=
snd_echo_output_gain_put
,
.
tlv
=
{.
p
=
db_scale_output_gain
},
};
#else
static
struct
snd_kcontrol_new
snd_echo_pcm_output_gain
__devinitdata
=
{
.
name
=
"PCM Playback Volume"
,
.
iface
=
SNDRV_CTL_ELEM_IFACE_MIXER
,
...
...
@@ -1022,6 +1012,7 @@ static struct snd_kcontrol_new snd_echo_pcm_output_gain __devinitdata = {
.
put
=
snd_echo_output_gain_put
,
.
tlv
=
{.
p
=
db_scale_output_gain
},
};
#endif
...
...
@@ -2037,8 +2028,6 @@ static int __devinit snd_echo_probe(struct pci_dev *pci,
#ifdef ECHOCARD_HAS_VMIXER
snd_echo_vmixer
.
count
=
num_pipes_out
(
chip
)
*
num_busses_out
(
chip
);
if
((
err
=
snd_ctl_add
(
chip
->
card
,
snd_ctl_new1
(
&
snd_echo_line_output_gain
,
chip
)))
<
0
)
goto
ctl_error
;
if
((
err
=
snd_ctl_add
(
chip
->
card
,
snd_ctl_new1
(
&
snd_echo_vmixer
,
chip
)))
<
0
)
goto
ctl_error
;
#else
...
...
sound/pci/echoaudio/echoaudio.h
View file @
c9294e4b
...
...
@@ -189,6 +189,9 @@
#define INDIGO 0x0090
#define INDIGO_IO 0x00a0
#define INDIGO_DJ 0x00b0
#define DC8 0x00c0
#define INDIGO_IOX 0x00d0
#define INDIGO_DJX 0x00e0
#define ECHO3G 0x0100
...
...
sound/pci/echoaudio/echoaudio_dsp.h
View file @
c9294e4b
...
...
@@ -576,8 +576,13 @@ SET_LAYLA24_FREQUENCY_REG command.
#define E3G_ASIC_NOT_LOADED 0xffff
#define E3G_BOX_TYPE_MASK 0xf0
#define EXT_3GBOX_NC 0x01
#define EXT_3GBOX_NOT_SET 0x02
/* Indigo express control register values */
#define INDIGO_EXPRESS_32000 0x02
#define INDIGO_EXPRESS_44100 0x01
#define INDIGO_EXPRESS_48000 0x00
#define INDIGO_EXPRESS_DOUBLE_SPEED 0x10
#define INDIGO_EXPRESS_QUAD_SPEED 0x04
#define INDIGO_EXPRESS_CLOCK_MASK 0x17
/*
...
...
sound/pci/echoaudio/indigo_dsp.c
View file @
c9294e4b
...
...
@@ -63,18 +63,6 @@ static int init_hw(struct echoaudio *chip, u16 device_id, u16 subdevice_id)
if
((
err
=
init_line_levels
(
chip
))
<
0
)
return
err
;
/* Default routing of the virtual channels: all vchannels are routed
to the stereo output */
set_vmixer_gain
(
chip
,
0
,
0
,
0
);
set_vmixer_gain
(
chip
,
1
,
1
,
0
);
set_vmixer_gain
(
chip
,
0
,
2
,
0
);
set_vmixer_gain
(
chip
,
1
,
3
,
0
);
set_vmixer_gain
(
chip
,
0
,
4
,
0
);
set_vmixer_gain
(
chip
,
1
,
5
,
0
);
set_vmixer_gain
(
chip
,
0
,
6
,
0
);
set_vmixer_gain
(
chip
,
1
,
7
,
0
);
err
=
update_vmixer_level
(
chip
);
DE_INIT
((
"init_hw done
\n
"
));
return
err
;
}
...
...
sound/pci/echoaudio/indigo_express_dsp.c
0 → 100644
View file @
c9294e4b
/************************************************************************
This file is part of Echo Digital Audio's generic driver library.
Copyright Echo Digital Audio Corporation (c) 1998 - 2005
All rights reserved
www.echoaudio.com
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*************************************************************************
Translation from C++ and adaptation for use in ALSA-Driver
were made by Giuliano Pochini <pochini@shiny.it>
*************************************************************************/
static
int
set_sample_rate
(
struct
echoaudio
*
chip
,
u32
rate
)
{
u32
clock
,
control_reg
,
old_control_reg
;
if
(
wait_handshake
(
chip
))
return
-
EIO
;
old_control_reg
=
le32_to_cpu
(
chip
->
comm_page
->
control_register
);
control_reg
=
old_control_reg
&
~
INDIGO_EXPRESS_CLOCK_MASK
;
switch
(
rate
)
{
case
32000
:
clock
=
INDIGO_EXPRESS_32000
;
break
;
case
44100
:
clock
=
INDIGO_EXPRESS_44100
;
break
;
case
48000
:
clock
=
INDIGO_EXPRESS_48000
;
break
;
case
64000
:
clock
=
INDIGO_EXPRESS_32000
|
INDIGO_EXPRESS_DOUBLE_SPEED
;
break
;
case
88200
:
clock
=
INDIGO_EXPRESS_44100
|
INDIGO_EXPRESS_DOUBLE_SPEED
;
break
;
case
96000
:
clock
=
INDIGO_EXPRESS_48000
|
INDIGO_EXPRESS_DOUBLE_SPEED
;
break
;
default:
return
-
EINVAL
;
}
control_reg
|=
clock
;
if
(
control_reg
!=
old_control_reg
)
{
chip
->
comm_page
->
control_register
=
cpu_to_le32
(
control_reg
);
chip
->
sample_rate
=
rate
;
clear_handshake
(
chip
);
return
send_vector
(
chip
,
DSP_VC_UPDATE_CLOCKS
);
}
return
0
;
}
/* This function routes the sound from a virtual channel to a real output */
static
int
set_vmixer_gain
(
struct
echoaudio
*
chip
,
u16
output
,
u16
pipe
,
int
gain
)
{
int
index
;
if
(
snd_BUG_ON
(
pipe
>=
num_pipes_out
(
chip
)
||
output
>=
num_busses_out
(
chip
)))
return
-
EINVAL
;
if
(
wait_handshake
(
chip
))
return
-
EIO
;
chip
->
vmixer_gain
[
output
][
pipe
]
=
gain
;
index
=
output
*
num_pipes_out
(
chip
)
+
pipe
;
chip
->
comm_page
->
vmixer
[
index
]
=
gain
;
DE_ACT
((
"set_vmixer_gain: pipe %d, out %d = %d
\n
"
,
pipe
,
output
,
gain
));
return
0
;
}
/* Tell the DSP to read and update virtual mixer levels in comm page. */
static
int
update_vmixer_level
(
struct
echoaudio
*
chip
)
{
if
(
wait_handshake
(
chip
))
return
-
EIO
;
clear_handshake
(
chip
);
return
send_vector
(
chip
,
DSP_VC_SET_VMIXER_GAIN
);
}
static
u32
detect_input_clocks
(
const
struct
echoaudio
*
chip
)
{
return
ECHO_CLOCK_BIT_INTERNAL
;
}
/* The IndigoIO has no ASIC. Just do nothing */
static
int
load_asic
(
struct
echoaudio
*
chip
)
{
return
0
;
}
sound/pci/echoaudio/indigodj_dsp.c
View file @
c9294e4b
...
...
@@ -63,18 +63,6 @@ static int init_hw(struct echoaudio *chip, u16 device_id, u16 subdevice_id)
if
((
err
=
init_line_levels
(
chip
))
<
0
)
return
err
;
/* Default routing of the virtual channels: vchannels 0-3 and
vchannels 4-7 are routed to real channels 0-4 */
set_vmixer_gain
(
chip
,
0
,
0
,
0
);
set_vmixer_gain
(
chip
,
1
,
1
,
0
);
set_vmixer_gain
(
chip
,
2
,
2
,
0
);
set_vmixer_gain
(
chip
,
3
,
3
,
0
);
set_vmixer_gain
(
chip
,
0
,
4
,
0
);
set_vmixer_gain
(
chip
,
1
,
5
,
0
);
set_vmixer_gain
(
chip
,
2
,
6
,
0
);
set_vmixer_gain
(
chip
,
3
,
7
,
0
);
err
=
update_vmixer_level
(
chip
);
DE_INIT
((
"init_hw done
\n
"
));
return
err
;
}
...
...
sound/pci/echoaudio/indigodjx.c
0 → 100644
View file @
c9294e4b
/*
* ALSA driver for Echoaudio soundcards.
* Copyright (C) 2009 Giuliano Pochini <pochini@shiny.it>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; version 2 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#define INDIGO_FAMILY
#define ECHOCARD_INDIGO_DJX
#define ECHOCARD_NAME "Indigo DJx"
#define ECHOCARD_HAS_SUPER_INTERLEAVE
#define ECHOCARD_HAS_VMIXER
#define ECHOCARD_HAS_STEREO_BIG_ENDIAN32
/* Pipe indexes */
#define PX_ANALOG_OUT 0
/* 8 */
#define PX_DIGITAL_OUT 8
/* 0 */
#define PX_ANALOG_IN 8
/* 0 */
#define PX_DIGITAL_IN 8
/* 0 */
#define PX_NUM 8
/* Bus indexes */
#define BX_ANALOG_OUT 0
/* 4 */
#define BX_DIGITAL_OUT 4
/* 0 */
#define BX_ANALOG_IN 4
/* 0 */
#define BX_DIGITAL_IN 4
/* 0 */
#define BX_NUM 4
#include <linux/delay.h>
#include <linux/init.h>
#include <linux/interrupt.h>
#include <linux/pci.h>
#include <linux/slab.h>
#include <linux/moduleparam.h>
#include <linux/firmware.h>
#include <linux/io.h>
#include <sound/core.h>
#include <sound/info.h>
#include <sound/control.h>
#include <sound/tlv.h>
#include <sound/pcm.h>
#include <sound/pcm_params.h>
#include <sound/asoundef.h>
#include <sound/initval.h>
#include <asm/atomic.h>
#include "echoaudio.h"
MODULE_FIRMWARE
(
"ea/loader_dsp.fw"
);
MODULE_FIRMWARE
(
"ea/indigo_djx_dsp.fw"
);
#define FW_361_LOADER 0
#define FW_INDIGO_DJX_DSP 1
static
const
struct
firmware
card_fw
[]
=
{
{
0
,
"loader_dsp.fw"
},
{
0
,
"indigo_djx_dsp.fw"
}
};
static
struct
pci_device_id
snd_echo_ids
[]
=
{
{
0x1057
,
0x3410
,
0xECC0
,
0x00E0
,
0
,
0
,
0
},
/* Indigo DJx*/
{
0
,}
};
static
struct
snd_pcm_hardware
pcm_hardware_skel
=
{
.
info
=
SNDRV_PCM_INFO_MMAP
|
SNDRV_PCM_INFO_INTERLEAVED
|
SNDRV_PCM_INFO_BLOCK_TRANSFER
|
SNDRV_PCM_INFO_MMAP_VALID
|
SNDRV_PCM_INFO_PAUSE
|
SNDRV_PCM_INFO_SYNC_START
,
.
formats
=
SNDRV_PCM_FMTBIT_U8
|
SNDRV_PCM_FMTBIT_S16_LE
|
SNDRV_PCM_FMTBIT_S24_3LE
|
SNDRV_PCM_FMTBIT_S32_LE
|
SNDRV_PCM_FMTBIT_S32_BE
,
.
rates
=
SNDRV_PCM_RATE_32000
|
SNDRV_PCM_RATE_44100
|
SNDRV_PCM_RATE_48000
|
SNDRV_PCM_RATE_88200
|
SNDRV_PCM_RATE_96000
,
.
rate_min
=
32000
,
.
rate_max
=
96000
,
.
channels_min
=
1
,
.
channels_max
=
4
,
.
buffer_bytes_max
=
262144
,
.
period_bytes_min
=
32
,
.
period_bytes_max
=
131072
,
.
periods_min
=
2
,
.
periods_max
=
220
,
};
#include "indigodjx_dsp.c"
#include "indigo_express_dsp.c"
#include "echoaudio_dsp.c"
#include "echoaudio.c"
sound/pci/echoaudio/indigodjx_dsp.c
0 → 100644
View file @
c9294e4b
/************************************************************************
This file is part of Echo Digital Audio's generic driver library.
Copyright Echo Digital Audio Corporation (c) 1998 - 2005
All rights reserved
www.echoaudio.com
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*************************************************************************
Translation from C++ and adaptation for use in ALSA-Driver
were made by Giuliano Pochini <pochini@shiny.it>
*************************************************************************/
static
int
update_vmixer_level
(
struct
echoaudio
*
chip
);
static
int
set_vmixer_gain
(
struct
echoaudio
*
chip
,
u16
output
,
u16
pipe
,
int
gain
);
static
int
init_hw
(
struct
echoaudio
*
chip
,
u16
device_id
,
u16
subdevice_id
)
{
int
err
;
DE_INIT
((
"init_hw() - Indigo DJx
\n
"
));
if
(
snd_BUG_ON
((
subdevice_id
&
0xfff0
)
!=
INDIGO_DJX
))
return
-
ENODEV
;
err
=
init_dsp_comm_page
(
chip
);
if
(
err
<
0
)
{
DE_INIT
((
"init_hw - could not initialize DSP comm page
\n
"
));
return
err
;
}
chip
->
device_id
=
device_id
;
chip
->
subdevice_id
=
subdevice_id
;
chip
->
bad_board
=
TRUE
;
chip
->
dsp_code_to_load
=
&
card_fw
[
FW_INDIGO_DJX_DSP
];
/* Since this card has no ASIC, mark it as loaded so everything
works OK */
chip
->
asic_loaded
=
TRUE
;
chip
->
input_clock_types
=
ECHO_CLOCK_BIT_INTERNAL
;
err
=
load_firmware
(
chip
);
if
(
err
<
0
)
return
err
;
chip
->
bad_board
=
FALSE
;
err
=
init_line_levels
(
chip
);
if
(
err
<
0
)
return
err
;
DE_INIT
((
"init_hw done
\n
"
));
return
err
;
}
sound/pci/echoaudio/indigoio_dsp.c
View file @
c9294e4b
...
...
@@ -63,18 +63,6 @@ static int init_hw(struct echoaudio *chip, u16 device_id, u16 subdevice_id)
if
((
err
=
init_line_levels
(
chip
))
<
0
)
return
err
;
/* Default routing of the virtual channels: all vchannels are routed
to the stereo output */
set_vmixer_gain
(
chip
,
0
,
0
,
0
);
set_vmixer_gain
(
chip
,
1
,
1
,
0
);
set_vmixer_gain
(
chip
,
0
,
2
,
0
);
set_vmixer_gain
(
chip
,
1
,
3
,
0
);
set_vmixer_gain
(
chip
,
0
,
4
,
0
);
set_vmixer_gain
(
chip
,
1
,
5
,
0
);
set_vmixer_gain
(
chip
,
0
,
6
,
0
);
set_vmixer_gain
(
chip
,
1
,
7
,
0
);
err
=
update_vmixer_level
(
chip
);
DE_INIT
((
"init_hw done
\n
"
));
return
err
;
}
...
...
sound/pci/echoaudio/indigoiox.c
0 → 100644
View file @
c9294e4b
/*
* ALSA driver for Echoaudio soundcards.
* Copyright (C) 2009 Giuliano Pochini <pochini@shiny.it>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; version 2 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#define INDIGO_FAMILY
#define ECHOCARD_INDIGO_IOX
#define ECHOCARD_NAME "Indigo IOx"
#define ECHOCARD_HAS_MONITOR
#define ECHOCARD_HAS_SUPER_INTERLEAVE
#define ECHOCARD_HAS_VMIXER
#define ECHOCARD_HAS_STEREO_BIG_ENDIAN32
/* Pipe indexes */
#define PX_ANALOG_OUT 0
/* 8 */
#define PX_DIGITAL_OUT 8
/* 0 */
#define PX_ANALOG_IN 8
/* 2 */
#define PX_DIGITAL_IN 10
/* 0 */
#define PX_NUM 10
/* Bus indexes */
#define BX_ANALOG_OUT 0
/* 2 */
#define BX_DIGITAL_OUT 2
/* 0 */
#define BX_ANALOG_IN 2
/* 2 */
#define BX_DIGITAL_IN 4
/* 0 */
#define BX_NUM 4
#include <linux/delay.h>
#include <linux/init.h>
#include <linux/interrupt.h>
#include <linux/pci.h>
#include <linux/slab.h>
#include <linux/moduleparam.h>
#include <linux/firmware.h>
#include <linux/io.h>
#include <sound/core.h>
#include <sound/info.h>
#include <sound/control.h>
#include <sound/tlv.h>
#include <sound/pcm.h>
#include <sound/pcm_params.h>
#include <sound/asoundef.h>
#include <sound/initval.h>
#include <asm/atomic.h>
#include "echoaudio.h"
MODULE_FIRMWARE
(
"ea/loader_dsp.fw"
);
MODULE_FIRMWARE
(
"ea/indigo_iox_dsp.fw"
);
#define FW_361_LOADER 0
#define FW_INDIGO_IOX_DSP 1
static
const
struct
firmware
card_fw
[]
=
{
{
0
,
"loader_dsp.fw"
},
{
0
,
"indigo_iox_dsp.fw"
}
};
static
struct
pci_device_id
snd_echo_ids
[]
=
{
{
0x1057
,
0x3410
,
0xECC0
,
0x00D0
,
0
,
0
,
0
},
/* Indigo IOx */
{
0
,}
};
static
struct
snd_pcm_hardware
pcm_hardware_skel
=
{
.
info
=
SNDRV_PCM_INFO_MMAP
|
SNDRV_PCM_INFO_INTERLEAVED
|
SNDRV_PCM_INFO_BLOCK_TRANSFER
|
SNDRV_PCM_INFO_MMAP_VALID
|
SNDRV_PCM_INFO_PAUSE
|
SNDRV_PCM_INFO_SYNC_START
,
.
formats
=
SNDRV_PCM_FMTBIT_U8
|
SNDRV_PCM_FMTBIT_S16_LE
|
SNDRV_PCM_FMTBIT_S24_3LE
|
SNDRV_PCM_FMTBIT_S32_LE
|
SNDRV_PCM_FMTBIT_S32_BE
,
.
rates
=
SNDRV_PCM_RATE_32000
|
SNDRV_PCM_RATE_44100
|
SNDRV_PCM_RATE_48000
|
SNDRV_PCM_RATE_88200
|
SNDRV_PCM_RATE_96000
,
.
rate_min
=
32000
,
.
rate_max
=
96000
,
.
channels_min
=
1
,
.
channels_max
=
8
,
.
buffer_bytes_max
=
262144
,
.
period_bytes_min
=
32
,
.
period_bytes_max
=
131072
,
.
periods_min
=
2
,
.
periods_max
=
220
,
};
#include "indigoiox_dsp.c"
#include "indigo_express_dsp.c"
#include "echoaudio_dsp.c"
#include "echoaudio.c"
sound/pci/echoaudio/indigoiox_dsp.c
0 → 100644
View file @
c9294e4b
/************************************************************************
This file is part of Echo Digital Audio's generic driver library.
Copyright Echo Digital Audio Corporation (c) 1998 - 2005
All rights reserved
www.echoaudio.com
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*************************************************************************
Translation from C++ and adaptation for use in ALSA-Driver
were made by Giuliano Pochini <pochini@shiny.it>
*************************************************************************/
static
int
update_vmixer_level
(
struct
echoaudio
*
chip
);
static
int
set_vmixer_gain
(
struct
echoaudio
*
chip
,
u16
output
,
u16
pipe
,
int
gain
);
static
int
init_hw
(
struct
echoaudio
*
chip
,
u16
device_id
,
u16
subdevice_id
)
{
int
err
;
DE_INIT
((
"init_hw() - Indigo IOx
\n
"
));
if
(
snd_BUG_ON
((
subdevice_id
&
0xfff0
)
!=
INDIGO_IOX
))
return
-
ENODEV
;
err
=
init_dsp_comm_page
(
chip
);
if
(
err
<
0
)
{
DE_INIT
((
"init_hw - could not initialize DSP comm page
\n
"
));
return
err
;
}
chip
->
device_id
=
device_id
;
chip
->
subdevice_id
=
subdevice_id
;
chip
->
bad_board
=
TRUE
;
chip
->
dsp_code_to_load
=
&
card_fw
[
FW_INDIGO_IOX_DSP
];
/* Since this card has no ASIC, mark it as loaded so everything
works OK */
chip
->
asic_loaded
=
TRUE
;
chip
->
input_clock_types
=
ECHO_CLOCK_BIT_INTERNAL
;
err
=
load_firmware
(
chip
);
if
(
err
<
0
)
return
err
;
chip
->
bad_board
=
FALSE
;
err
=
init_line_levels
(
chip
);
if
(
err
<
0
)
return
err
;
DE_INIT
((
"init_hw done
\n
"
));
return
err
;
}
sound/pci/echoaudio/mia_dsp.c
View file @
c9294e4b
...
...
@@ -69,18 +69,6 @@ static int init_hw(struct echoaudio *chip, u16 device_id, u16 subdevice_id)
if
((
err
=
init_line_levels
(
chip
)))
return
err
;
/* Default routing of the virtual channels: vchannels 0-3 go to analog
outputs and vchannels 4-7 go to S/PDIF outputs */
set_vmixer_gain
(
chip
,
0
,
0
,
0
);
set_vmixer_gain
(
chip
,
1
,
1
,
0
);
set_vmixer_gain
(
chip
,
0
,
2
,
0
);
set_vmixer_gain
(
chip
,
1
,
3
,
0
);
set_vmixer_gain
(
chip
,
2
,
4
,
0
);
set_vmixer_gain
(
chip
,
3
,
5
,
0
);
set_vmixer_gain
(
chip
,
2
,
6
,
0
);
set_vmixer_gain
(
chip
,
3
,
7
,
0
);
err
=
update_vmixer_level
(
chip
);
DE_INIT
((
"init_hw done
\n
"
));
return
err
;
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment