Commit 481e09ac authored by Takashi Sakamoto's avatar Takashi Sakamoto Committed by Takashi Iwai

ALSA: fireface: add model-dependent parameter for address to receive async...

ALSA: fireface: add model-dependent parameter for address to receive async transaction for MIDI messages

Between former and latter models, destination address to receive
asynchronous transactions for MIDI messages is different.

This commit adds model-dependent parameter for the addresses.
Signed-off-by: default avatarTakashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 73f5537f
...@@ -8,9 +8,6 @@ ...@@ -8,9 +8,6 @@
#include "ff.h" #include "ff.h"
#define SND_FF_REG_MIDI_RX_PORT_0 0x000080180000ull
#define SND_FF_REG_MIDI_RX_PORT_1 0x000080190000ull
static void finish_transmit_midi_msg(struct snd_ff *ff, unsigned int port, static void finish_transmit_midi_msg(struct snd_ff *ff, unsigned int port,
int rcode) int rcode)
{ {
...@@ -93,10 +90,10 @@ static void transmit_midi_msg(struct snd_ff *ff, unsigned int port) ...@@ -93,10 +90,10 @@ static void transmit_midi_msg(struct snd_ff *ff, unsigned int port)
fill_midi_buf(ff, port, i, buf[i]); fill_midi_buf(ff, port, i, buf[i]);
if (port == 0) { if (port == 0) {
addr = SND_FF_REG_MIDI_RX_PORT_0; addr = ff->spec->midi_rx_addrs[0];
callback = finish_transmit_midi0_msg; callback = finish_transmit_midi0_msg;
} else { } else {
addr = SND_FF_REG_MIDI_RX_PORT_1; addr = ff->spec->midi_rx_addrs[1];
callback = finish_transmit_midi1_msg; callback = finish_transmit_midi1_msg;
} }
......
...@@ -154,6 +154,7 @@ static const struct snd_ff_spec spec_ff800 = { ...@@ -154,6 +154,7 @@ static const struct snd_ff_spec spec_ff800 = {
.protocol = &snd_ff_protocol_ff800, .protocol = &snd_ff_protocol_ff800,
.midi_high_addr = 0x000200000320ull, .midi_high_addr = 0x000200000320ull,
.midi_addr_range = 12, .midi_addr_range = 12,
.midi_rx_addrs = {0x000080180000ull, 0},
}; };
static const struct snd_ff_spec spec_ff400 = { static const struct snd_ff_spec spec_ff400 = {
...@@ -165,6 +166,7 @@ static const struct snd_ff_spec spec_ff400 = { ...@@ -165,6 +166,7 @@ static const struct snd_ff_spec spec_ff400 = {
.protocol = &snd_ff_protocol_ff400, .protocol = &snd_ff_protocol_ff400,
.midi_high_addr = 0x0000801003f4ull, .midi_high_addr = 0x0000801003f4ull,
.midi_addr_range = SND_FF_MAXIMIM_MIDI_QUADS * 4, .midi_addr_range = SND_FF_MAXIMIM_MIDI_QUADS * 4,
.midi_rx_addrs = {0x000080180000ull, 0x000080190000ull},
}; };
static const struct snd_ff_spec spec_ucx = { static const struct snd_ff_spec spec_ucx = {
...@@ -175,6 +177,7 @@ static const struct snd_ff_spec spec_ucx = { ...@@ -175,6 +177,7 @@ static const struct snd_ff_spec spec_ucx = {
.protocol = &snd_ff_protocol_latter, .protocol = &snd_ff_protocol_latter,
.midi_high_addr = 0xffff00000034ull, .midi_high_addr = 0xffff00000034ull,
.midi_addr_range = 0x80, .midi_addr_range = 0x80,
.midi_rx_addrs = {0xffff00000030ull, 0xffff00000030ull},
}; };
static const struct ieee1394_device_id snd_ff_id_table[] = { static const struct ieee1394_device_id snd_ff_id_table[] = {
......
...@@ -55,6 +55,7 @@ struct snd_ff_spec { ...@@ -55,6 +55,7 @@ struct snd_ff_spec {
const struct snd_ff_protocol *protocol; const struct snd_ff_protocol *protocol;
u64 midi_high_addr; u64 midi_high_addr;
u8 midi_addr_range; u8 midi_addr_range;
u64 midi_rx_addrs[SND_FF_OUT_MIDI_PORTS];
}; };
struct snd_ff { struct snd_ff {
......
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