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 2f5e20cf4ce5ee8c6d5245083dbb0e29e94718fd..4e362b83d8e8fdf91e473cf766943b256d9470c6 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 c89d7afa998fe783a211f7362252018648b08e54..de0aefe2d690956a132dd8c14b2a9c2acdbd1e19 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