summaryrefslogtreecommitdiff
path: root/sound/firewire/motu/motu.c
diff options
context:
space:
mode:
authorTakashi Sakamoto <o-takashi@sakamocchi.jp>2017-03-22 15:30:13 +0300
committerTakashi Iwai <tiwai@suse.de>2017-03-28 13:33:21 +0300
commit5e03c33e3d8973e2c10abbf13f8f24779babafeb (patch)
treed602a86eba185bd1154615004407bb71a2b3d6a7 /sound/firewire/motu/motu.c
parent8865a31e0fd8beb157b99e78cdf1f0241a67bd54 (diff)
downloadlinux-5e03c33e3d8973e2c10abbf13f8f24779babafeb.tar.xz
ALSA: firewire-motu: add a structure for model-dependent parameters.
MOTU FireWire series doesn't tell drivers their capabilities, thus the drivers should have and apply model-dependent parameters to detected models. This commit adds a structure to represent such parameters. Capabilities are represented by enumeration except for the number of analog line in/out. Identification name also be in the structure because the units has no registers for this purpose. Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/firewire/motu/motu.c')
-rw-r--r--sound/firewire/motu/motu.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/sound/firewire/motu/motu.c b/sound/firewire/motu/motu.c
index bdd82ddeb6ec..e69aa7b5dcde 100644
--- a/sound/firewire/motu/motu.c
+++ b/sound/firewire/motu/motu.c
@@ -31,9 +31,11 @@ static void name_card(struct snd_motu *motu)
}
strcpy(motu->card->driver, "FW-MOTU");
+ strcpy(motu->card->shortname, motu->spec->name);
+ strcpy(motu->card->mixername, motu->spec->name);
snprintf(motu->card->longname, sizeof(motu->card->longname),
- "MOTU (version:%d), GUID %08x%08x at %s, S%d",
- version,
+ "MOTU %s (version:%d), GUID %08x%08x at %s, S%d",
+ motu->spec->name, version,
fw_dev->config_rom[3], fw_dev->config_rom[4],
dev_name(&motu->unit->device), 100 << fw_dev->max_speed);
}
@@ -101,6 +103,7 @@ static int motu_probe(struct fw_unit *unit,
if (motu == NULL)
return -ENOMEM;
+ motu->spec = (const struct snd_motu_spec *)entry->driver_data;
motu->unit = fw_unit_get(unit);
dev_set_drvdata(&unit->device, motu);
@@ -142,7 +145,7 @@ static void motu_bus_update(struct fw_unit *unit)
snd_fw_schedule_registration(unit, &motu->dwork);
}
-#define SND_MOTU_DEV_ENTRY(model) \
+#define SND_MOTU_DEV_ENTRY(model, data) \
{ \
.match_flags = IEEE1394_MATCH_VENDOR_ID | \
IEEE1394_MATCH_MODEL_ID | \
@@ -150,6 +153,7 @@ static void motu_bus_update(struct fw_unit *unit)
.vendor_id = OUI_MOTU, \
.model_id = model, \
.specifier_id = OUI_MOTU, \
+ .driver_data = (kernel_ulong_t)data, \
}
static const struct ieee1394_device_id motu_id_table[] = {