ALSA: firewire-tascam: add a structure for model-dependent parameters.
TASCAM FireWire series doesn't tell drivers their capabilities, thus the drivers should have model-dependent parameters and apply it to detected devices. This commit adds a structure to represent such parameters. Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp> Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
c0949b2785
commit
6f81ba19ac
|
@ -12,6 +12,39 @@ MODULE_DESCRIPTION("TASCAM FireWire series Driver");
|
||||||
MODULE_AUTHOR("Takashi Sakamoto <o-takashi@sakamocchi.jp>");
|
MODULE_AUTHOR("Takashi Sakamoto <o-takashi@sakamocchi.jp>");
|
||||||
MODULE_LICENSE("GPL v2");
|
MODULE_LICENSE("GPL v2");
|
||||||
|
|
||||||
|
static struct snd_tscm_spec model_specs[] = {
|
||||||
|
{
|
||||||
|
.name = "FW-1884",
|
||||||
|
.has_adat = true,
|
||||||
|
.has_spdif = true,
|
||||||
|
.pcm_capture_analog_channels = 8,
|
||||||
|
.pcm_playback_analog_channels = 8,
|
||||||
|
.midi_capture_ports = 4,
|
||||||
|
.midi_playback_ports = 4,
|
||||||
|
.is_controller = true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.name = "FW-1804",
|
||||||
|
.has_adat = true,
|
||||||
|
.has_spdif = true,
|
||||||
|
.pcm_capture_analog_channels = 8,
|
||||||
|
.pcm_playback_analog_channels = 2,
|
||||||
|
.midi_capture_ports = 2,
|
||||||
|
.midi_playback_ports = 4,
|
||||||
|
.is_controller = false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.name = "FW-1082",
|
||||||
|
.has_adat = false,
|
||||||
|
.has_spdif = true,
|
||||||
|
.pcm_capture_analog_channels = 8,
|
||||||
|
.pcm_playback_analog_channels = 2,
|
||||||
|
.midi_capture_ports = 2,
|
||||||
|
.midi_playback_ports = 2,
|
||||||
|
.is_controller = true,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
static int check_name(struct snd_tscm *tscm)
|
static int check_name(struct snd_tscm *tscm)
|
||||||
{
|
{
|
||||||
struct fw_device *fw_dev = fw_parent_device(tscm->unit);
|
struct fw_device *fw_dev = fw_parent_device(tscm->unit);
|
||||||
|
@ -72,6 +105,7 @@ static int snd_tscm_probe(struct fw_unit *unit,
|
||||||
tscm = card->private_data;
|
tscm = card->private_data;
|
||||||
tscm->card = card;
|
tscm->card = card;
|
||||||
tscm->unit = fw_unit_get(unit);
|
tscm->unit = fw_unit_get(unit);
|
||||||
|
tscm->spec = (const struct snd_tscm_spec *)entry->driver_data;
|
||||||
|
|
||||||
mutex_init(&tscm->mutex);
|
mutex_init(&tscm->mutex);
|
||||||
|
|
||||||
|
@ -113,6 +147,7 @@ static const struct ieee1394_device_id snd_tscm_id_table[] = {
|
||||||
.vendor_id = 0x00022e,
|
.vendor_id = 0x00022e,
|
||||||
.specifier_id = 0x00022e,
|
.specifier_id = 0x00022e,
|
||||||
.version = 0x800003,
|
.version = 0x800003,
|
||||||
|
.driver_data = (kernel_ulong_t)&model_specs[2],
|
||||||
},
|
},
|
||||||
/* FW-1884 */
|
/* FW-1884 */
|
||||||
{
|
{
|
||||||
|
@ -122,6 +157,7 @@ static const struct ieee1394_device_id snd_tscm_id_table[] = {
|
||||||
.vendor_id = 0x00022e,
|
.vendor_id = 0x00022e,
|
||||||
.specifier_id = 0x00022e,
|
.specifier_id = 0x00022e,
|
||||||
.version = 0x800000,
|
.version = 0x800000,
|
||||||
|
.driver_data = (kernel_ulong_t)&model_specs[0],
|
||||||
},
|
},
|
||||||
/* FW-1804 mey be supported if IDs are clear. */
|
/* FW-1804 mey be supported if IDs are clear. */
|
||||||
/* FE-08 requires reverse-engineering because it just has faders. */
|
/* FE-08 requires reverse-engineering because it just has faders. */
|
||||||
|
|
|
@ -23,11 +23,24 @@
|
||||||
|
|
||||||
#include "../lib.h"
|
#include "../lib.h"
|
||||||
|
|
||||||
|
struct snd_tscm_spec {
|
||||||
|
const char *const name;
|
||||||
|
bool has_adat;
|
||||||
|
bool has_spdif;
|
||||||
|
unsigned int pcm_capture_analog_channels;
|
||||||
|
unsigned int pcm_playback_analog_channels;
|
||||||
|
unsigned int midi_capture_ports;
|
||||||
|
unsigned int midi_playback_ports;
|
||||||
|
bool is_controller;
|
||||||
|
};
|
||||||
|
|
||||||
struct snd_tscm {
|
struct snd_tscm {
|
||||||
struct snd_card *card;
|
struct snd_card *card;
|
||||||
struct fw_unit *unit;
|
struct fw_unit *unit;
|
||||||
|
|
||||||
struct mutex mutex;
|
struct mutex mutex;
|
||||||
|
|
||||||
|
const struct snd_tscm_spec *spec;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue