Commit 27badc4c authored by Takashi Sakamoto's avatar Takashi Sakamoto Committed by Takashi Iwai

ALSA: firewire-tascam: use the same address for asynchronous transaction for MIDI message

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: default avatarTakashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 38d58261
...@@ -230,20 +230,20 @@ static void midi_port_work(struct work_struct *work) ...@@ -230,20 +230,20 @@ static void midi_port_work(struct work_struct *work)
fw_send_request(port->parent->card, &port->transaction, fw_send_request(port->parent->card, &port->transaction,
TCODE_WRITE_QUADLET_REQUEST, TCODE_WRITE_QUADLET_REQUEST,
port->parent->node_id, generation, 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->buf, 4, async_midi_port_callback,
port); port);
} }
int snd_fw_async_midi_port_init(struct snd_fw_async_midi_port *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); port->buf = kzalloc(4, GFP_KERNEL);
if (port->buf == NULL) if (port->buf == NULL)
return -ENOMEM; return -ENOMEM;
port->parent = fw_parent_device(unit); port->parent = fw_parent_device(unit);
port->addr = addr;
port->idling = true; port->idling = true;
port->next_ktime = 0; port->next_ktime = 0;
port->error = false; port->error = false;
...@@ -336,8 +336,7 @@ int snd_tscm_transaction_register(struct snd_tscm *tscm) ...@@ -336,8 +336,7 @@ int snd_tscm_transaction_register(struct snd_tscm *tscm)
for (i = 0; i < TSCM_MIDI_OUT_PORT_MAX; i++) { for (i = 0; i < TSCM_MIDI_OUT_PORT_MAX; i++) {
err = snd_fw_async_midi_port_init( err = snd_fw_async_midi_port_init(
&tscm->out_ports[i], tscm->unit, &tscm->out_ports[i], tscm->unit);
TSCM_ADDR_BASE + TSCM_OFFSET_MIDI_RX_QUAD);
if (err < 0) if (err < 0)
goto error; goto error;
} }
......
...@@ -52,7 +52,6 @@ struct snd_fw_async_midi_port { ...@@ -52,7 +52,6 @@ struct snd_fw_async_midi_port {
ktime_t next_ktime; ktime_t next_ktime;
bool error; bool error;
u64 addr;
struct fw_transaction transaction; struct fw_transaction transaction;
u8 *buf; u8 *buf;
...@@ -148,7 +147,7 @@ int snd_tscm_stream_lock_try(struct snd_tscm *tscm); ...@@ -148,7 +147,7 @@ int snd_tscm_stream_lock_try(struct snd_tscm *tscm);
void snd_tscm_stream_lock_release(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, 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); void snd_fw_async_midi_port_destroy(struct snd_fw_async_midi_port *port);
static inline void static inline void
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment