summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sound/firewire/fireface/ff.c9
-rw-r--r--sound/firewire/fireface/ff.h14
2 files changed, 19 insertions, 4 deletions
diff --git a/sound/firewire/fireface/ff.c b/sound/firewire/fireface/ff.c
index 7c026396b8b5..5c2bd9222c97 100644
--- a/sound/firewire/fireface/ff.c
+++ b/sound/firewire/fireface/ff.c
@@ -17,13 +17,12 @@ MODULE_LICENSE("GPL v2");
static void name_card(struct snd_ff *ff)
{
struct fw_device *fw_dev = fw_parent_device(ff->unit);
- const char *const model = "Fireface Skeleton";
strcpy(ff->card->driver, "Fireface");
- strcpy(ff->card->shortname, model);
- strcpy(ff->card->mixername, model);
+ strcpy(ff->card->shortname, ff->spec->name);
+ strcpy(ff->card->mixername, ff->spec->name);
snprintf(ff->card->longname, sizeof(ff->card->longname),
- "RME %s, GUID %08x%08x at %s, S%d", model,
+ "RME %s, GUID %08x%08x at %s, S%d", ff->spec->name,
fw_dev->config_rom[3], fw_dev->config_rom[4],
dev_name(&ff->unit->device), 100 << fw_dev->max_speed);
}
@@ -86,6 +85,8 @@ static int snd_ff_probe(struct fw_unit *unit,
mutex_init(&ff->mutex);
+ ff->spec = (const struct snd_ff_spec *)entry->driver_data;
+
/* Register this sound card later. */
INIT_DEFERRABLE_WORK(&ff->dwork, do_registration);
snd_fw_schedule_registration(unit, &ff->dwork);
diff --git a/sound/firewire/fireface/ff.h b/sound/firewire/fireface/ff.h
index a0faae18018a..269fa259d5a7 100644
--- a/sound/firewire/fireface/ff.h
+++ b/sound/firewire/fireface/ff.h
@@ -22,6 +22,18 @@
#include "../lib.h"
+#define SND_FF_STREAM_MODES 3
+
+struct snd_ff_spec {
+ const char *const name;
+
+ const unsigned int pcm_capture_channels[SND_FF_STREAM_MODES];
+ const unsigned int pcm_playback_channels[SND_FF_STREAM_MODES];
+
+ unsigned int midi_in_ports;
+ unsigned int midi_out_ports;
+};
+
struct snd_ff {
struct snd_card *card;
struct fw_unit *unit;
@@ -29,5 +41,7 @@ struct snd_ff {
bool registered;
struct delayed_work dwork;
+
+ const struct snd_ff_spec *spec;
};
#endif