summaryrefslogtreecommitdiffstats
path: root/sound/firewire/tascam/tascam-transaction.c
diff options
context:
space:
mode:
authorTakashi Sakamoto <o-takashi@sakamocchi.jp>2017-04-14 09:46:30 +0200
committerTakashi Iwai <tiwai@suse.de>2017-04-14 14:50:38 +0200
commit3e7dc65ca001a6e40e78b912c6146ec013a3b49a (patch)
tree7e01017bd08a870b7f7afaa25d0e3b50bed8d39f /sound/firewire/tascam/tascam-transaction.c
parentALSA: firewire-tascam: use fixed-length array for message cache to async midi... (diff)
downloadlinux-3e7dc65ca001a6e40e78b912c6146ec013a3b49a.tar.xz
linux-3e7dc65ca001a6e40e78b912c6146ec013a3b49a.zip
ALSA: firewire-tascam: initialize parameters at open of rawmidi character devices
In current design of ALSA driver for TASCAM FireWire series, initialization of members in asymc midi port structure is done at device probing. Some of the members should be initialized every time to use rawmidi devices because they're changed in sequence of transmission for MIDI messages. This commit adds a new function to initialize them. Invariant parameters during object lifetime are kept as is. Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/firewire/tascam/tascam-transaction.c')
-rw-r--r--sound/firewire/tascam/tascam-transaction.c16
1 files changed, 4 insertions, 12 deletions
diff --git a/sound/firewire/tascam/tascam-transaction.c b/sound/firewire/tascam/tascam-transaction.c
index 248afe663387..a248a4ae0353 100644
--- a/sound/firewire/tascam/tascam-transaction.c
+++ b/sound/firewire/tascam/tascam-transaction.c
@@ -236,17 +236,10 @@ static void midi_port_work(struct work_struct *work)
port);
}
-int snd_fw_async_midi_port_init(struct snd_fw_async_midi_port *port,
- struct fw_unit *unit)
+void snd_fw_async_midi_port_init(struct snd_fw_async_midi_port *port)
{
- port->parent = fw_parent_device(unit);
port->idling = true;
- port->next_ktime = 0;
port->error = false;
-
- INIT_WORK(&port->work, midi_port_work);
-
- return 0;
}
static void handle_midi_tx(struct fw_card *card, struct fw_request *request,
@@ -324,10 +317,9 @@ int snd_tscm_transaction_register(struct snd_tscm *tscm)
goto error;
for (i = 0; i < TSCM_MIDI_OUT_PORT_MAX; i++) {
- err = snd_fw_async_midi_port_init(
- &tscm->out_ports[i], tscm->unit);
- if (err < 0)
- goto error;
+ tscm->out_ports[i].parent = fw_parent_device(tscm->unit);
+ tscm->out_ports[i].next_ktime = 0;
+ INIT_WORK(&tscm->out_ports[i].work, midi_port_work);
}
return err;