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