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);
}
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);
#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;
bool registered;
struct delayed_work dwork;
+
+ const struct snd_ff_spec *spec;
};
#endif