ALSA: add DICE driver
As a start point for further development, this is an incomplete driver for DICE devices: - only playback (so no clock source except the bus clock) - only 44.1 kHz - no MIDI - recovery after bus reset is slow - hwdep device is created, but not actually implemented Contains compilation fixes by Stefan Richter. Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
This commit is contained in:
Родитель
6e4664525b
Коммит
82fbb4f7b4
|
@ -138,6 +138,7 @@ Code Seq#(hex) Include File Comments
|
|||
'H' C0-DF net/bluetooth/cmtp/cmtp.h conflict!
|
||||
'H' C0-DF net/bluetooth/bnep/bnep.h conflict!
|
||||
'H' F1 linux/hid-roccat.h <mailto:erazor_de@users.sourceforge.net>
|
||||
'H' F8-FA sound/firewire.h
|
||||
'I' all linux/isdn.h conflict!
|
||||
'I' 00-0F drivers/isdn/divert/isdn_divert.h conflict!
|
||||
'I' 40-4F linux/mISDNif.h conflict!
|
||||
|
|
|
@ -5,6 +5,7 @@ header-y += asound_fm.h
|
|||
header-y += compress_offload.h
|
||||
header-y += compress_params.h
|
||||
header-y += emu10k1.h
|
||||
header-y += firewire.h
|
||||
header-y += hdsp.h
|
||||
header-y += hdspm.h
|
||||
header-y += sb16_csp.h
|
||||
|
|
|
@ -93,9 +93,10 @@ enum {
|
|||
SNDRV_HWDEP_IFACE_SB_RC, /* SB Extigy/Audigy2NX remote control */
|
||||
SNDRV_HWDEP_IFACE_HDA, /* HD-audio */
|
||||
SNDRV_HWDEP_IFACE_USB_STREAM, /* direct access to usb stream */
|
||||
SNDRV_HWDEP_IFACE_FW_DICE, /* TC DICE FireWire device */
|
||||
|
||||
/* Don't forget to change the following: */
|
||||
SNDRV_HWDEP_IFACE_LAST = SNDRV_HWDEP_IFACE_USB_STREAM
|
||||
SNDRV_HWDEP_IFACE_LAST = SNDRV_HWDEP_IFACE_FW_DICE
|
||||
};
|
||||
|
||||
struct snd_hwdep_info {
|
||||
|
|
|
@ -0,0 +1,51 @@
|
|||
#ifndef UAPI_SOUND_FIREWIRE_H_INCLUDED
|
||||
#define UAPI_SOUND_FIREWIRE_H_INCLUDED
|
||||
|
||||
#include <linux/ioctl.h>
|
||||
|
||||
/* events can be read() from the hwdep device */
|
||||
|
||||
#define SNDRV_FIREWIRE_EVENT_LOCK_STATUS 0x000010cc
|
||||
#define SNDRV_FIREWIRE_EVENT_DICE_NOTIFICATION 0xd1ce004e
|
||||
|
||||
struct snd_firewire_event_common {
|
||||
unsigned int type; /* SNDRV_FIREWIRE_EVENT_xxx */
|
||||
};
|
||||
|
||||
struct snd_firewire_event_lock_status {
|
||||
unsigned int type;
|
||||
unsigned int status; /* 0/1 = unlocked/locked */
|
||||
};
|
||||
|
||||
struct snd_firewire_event_dice_notification {
|
||||
unsigned int type;
|
||||
unsigned int notification; /* DICE-specific bits */
|
||||
};
|
||||
|
||||
union snd_firewire_event {
|
||||
struct snd_firewire_event_common common;
|
||||
struct snd_firewire_event_lock_status lock_status;
|
||||
struct snd_firewire_event_dice_notification dice_notification;
|
||||
};
|
||||
|
||||
|
||||
#define SNDRV_FIREWIRE_IOCTL_GET_INFO _IOR('H', 0xf8, struct snd_firewire_get_info)
|
||||
#define SNDRV_FIREWIRE_IOCTL_LOCK _IO('H', 0xf9)
|
||||
#define SNDRV_FIREWIRE_IOCTL_UNLOCK _IO('H', 0xfa)
|
||||
|
||||
#define SNDRV_FIREWIRE_TYPE_DICE 1
|
||||
/* Fireworks, AV/C, RME, MOTU, ... */
|
||||
|
||||
struct snd_firewire_get_info {
|
||||
unsigned int type; /* SNDRV_FIREWIRE_TYPE_xxx */
|
||||
unsigned int card; /* same as fw_cdev_get_info.card */
|
||||
unsigned char guid[8];
|
||||
char device_name[16]; /* device node in /dev */
|
||||
};
|
||||
|
||||
/*
|
||||
* SNDRV_FIREWIRE_IOCTL_LOCK prevents the driver from streaming.
|
||||
* Returns -EBUSY if the driver is already streaming.
|
||||
*/
|
||||
|
||||
#endif
|
|
@ -11,6 +11,19 @@ config SND_FIREWIRE_LIB
|
|||
tristate
|
||||
depends on SND_PCM
|
||||
|
||||
config SND_DICE
|
||||
tristate "DICE devices (EXPERIMENTAL)"
|
||||
select SND_HWDEP
|
||||
select SND_PCM
|
||||
select SND_FIREWIRE_LIB
|
||||
help
|
||||
Say Y here to include support for many FireWire audio interfaces
|
||||
based on the DICE chip family (DICE-II/Jr/Mini) from TC Applied
|
||||
Technologies.
|
||||
|
||||
To compile this driver as a module, choose M here: the module
|
||||
will be called snd-dice.
|
||||
|
||||
config SND_FIREWIRE_SPEAKERS
|
||||
tristate "FireWire speakers"
|
||||
select SND_PCM
|
||||
|
|
|
@ -1,10 +1,12 @@
|
|||
snd-firewire-lib-objs := lib.o iso-resources.o packets-buffer.o \
|
||||
fcp.o cmp.o amdtp.o
|
||||
snd-dice-objs := dice.o
|
||||
snd-firewire-speakers-objs := speakers.o
|
||||
snd-isight-objs := isight.o
|
||||
snd-scs1x-objs := scs1x.o
|
||||
|
||||
obj-$(CONFIG_SND_FIREWIRE_LIB) += snd-firewire-lib.o
|
||||
obj-$(CONFIG_SND_DICE) += snd-dice.o
|
||||
obj-$(CONFIG_SND_FIREWIRE_SPEAKERS) += snd-firewire-speakers.o
|
||||
obj-$(CONFIG_SND_ISIGHT) += snd-isight.o
|
||||
obj-$(CONFIG_SND_SCS1X) += snd-scs1x.o
|
||||
|
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
Загрузка…
Ссылка в новой задаче