ALSA: firewire-tascam: use the same address for asynchronous transaction for MIDI...
authorTakashi Sakamoto <o-takashi@sakamocchi.jp>
Fri, 14 Apr 2017 07:46:28 +0000 (16:46 +0900)
committerTakashi Iwai <tiwai@suse.de>
Fri, 14 Apr 2017 12:50:33 +0000 (14:50 +0200)
Units on TASCAM FireWire series receive MIDI messages by asynchronous
transactions on IEEE 1394 bus. Although the transaction is sent to a
certain register, current ALSA driver for this series has a redundant design.

This commit use the same address for the transaction.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/firewire/tascam/tascam-transaction.c
sound/firewire/tascam/tascam.h

index 2f5e20c..4e362b8 100644 (file)
@@ -230,20 +230,20 @@ static void midi_port_work(struct work_struct *work)
        fw_send_request(port->parent->card, &port->transaction,
                        TCODE_WRITE_QUADLET_REQUEST,
                        port->parent->node_id, generation,
-                       port->parent->max_speed, port->addr,
+                       port->parent->max_speed,
+                       TSCM_ADDR_BASE + TSCM_OFFSET_MIDI_RX_QUAD,
                        port->buf, 4, async_midi_port_callback,
                        port);
 }
 
 int snd_fw_async_midi_port_init(struct snd_fw_async_midi_port *port,
-               struct fw_unit *unit, u64 addr)
+               struct fw_unit *unit)
 {
        port->buf = kzalloc(4, GFP_KERNEL);
        if (port->buf == NULL)
                return -ENOMEM;
 
        port->parent = fw_parent_device(unit);
-       port->addr = addr;
        port->idling = true;
        port->next_ktime = 0;
        port->error = false;
@@ -336,8 +336,7 @@ int snd_tscm_transaction_register(struct snd_tscm *tscm)
 
        for (i = 0; i < TSCM_MIDI_OUT_PORT_MAX; i++) {
                err = snd_fw_async_midi_port_init(
-                               &tscm->out_ports[i], tscm->unit,
-                               TSCM_ADDR_BASE + TSCM_OFFSET_MIDI_RX_QUAD);
+                               &tscm->out_ports[i], tscm->unit);
                if (err < 0)
                        goto error;
        }
index c89d7af..de0aefe 100644 (file)
@@ -52,7 +52,6 @@ struct snd_fw_async_midi_port {
        ktime_t next_ktime;
        bool error;
 
-       u64 addr;
        struct fw_transaction transaction;
 
        u8 *buf;
@@ -148,7 +147,7 @@ int snd_tscm_stream_lock_try(struct snd_tscm *tscm);
 void snd_tscm_stream_lock_release(struct snd_tscm *tscm);
 
 int snd_fw_async_midi_port_init(struct snd_fw_async_midi_port *port,
-               struct fw_unit *unit, u64 addr);
+               struct fw_unit *unit);
 void snd_fw_async_midi_port_destroy(struct snd_fw_async_midi_port *port);
 
 static inline void