Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6d1ef1bb authored by Takashi Sakamoto's avatar Takashi Sakamoto Committed by Takashi Iwai
Browse files

ALSA: fireface: code refactoring to handle model-specific registers



As a result of investigation for Fireface 800, 'struct snd_ff_spec.regs'
is just for higher address to receive tx asynchronous packets of MIDI
messages, thus it can be simplified.

This commit simplifies it.

Signed-off-by: default avatarTakashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent fc716397
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -278,7 +278,7 @@ int snd_ff_transaction_reregister(struct snd_ff *ff)
	addr = (fw_card->node_id << 16) | (ff->async_handler.offset >> 32);
	reg = cpu_to_le32(addr);
	return snd_fw_transaction(ff->unit, TCODE_WRITE_QUADLET_REQUEST,
				  ff->spec->regs[SND_FF_REG_TYPE_MIDI_HIGH_ADDR],
				  ff->spec->midi_high_addr,
				  &reg, sizeof(reg), 0);
}

@@ -319,7 +319,7 @@ void snd_ff_transaction_unregister(struct snd_ff *ff)
	/* Release higher 4 bytes of address. */
	reg = cpu_to_le32(0x00000000);
	snd_fw_transaction(ff->unit, TCODE_WRITE_QUADLET_REQUEST,
			   ff->spec->regs[SND_FF_REG_TYPE_MIDI_HIGH_ADDR],
			   ff->spec->midi_high_addr,
			   &reg, sizeof(reg), 0);

	fw_core_remove_address_handler(&ff->async_handler);
+2 −6
Original line number Diff line number Diff line
@@ -152,9 +152,7 @@ static const struct snd_ff_spec spec_ff800 = {
	.midi_in_ports = 1,
	.midi_out_ports = 1,
	.protocol = &snd_ff_protocol_ff800,
	.regs = {
		[SND_FF_REG_TYPE_MIDI_HIGH_ADDR] = 0x000200000320ull,
	},
	.midi_high_addr = 0x000200000320ull,
};

static const struct snd_ff_spec spec_ff400 = {
@@ -164,9 +162,7 @@ static const struct snd_ff_spec spec_ff400 = {
	.midi_in_ports = 2,
	.midi_out_ports = 2,
	.protocol = &snd_ff_protocol_ff400,
	.regs = {
		[SND_FF_REG_TYPE_MIDI_HIGH_ADDR] = 0x0000801003f4ull,
	},
	.midi_high_addr = 0x0000801003f4ull,
};

static const struct ieee1394_device_id snd_ff_id_table[] = {
+2 −7
Original line number Diff line number Diff line
@@ -36,7 +36,7 @@
#define SND_FF_OUT_MIDI_PORTS		2

#define SND_FF_REG_SYNC_STATUS		0x0000801c0000ull
/* For block wriet request. */
/* For block write request. */
#define SND_FF_REG_FETCH_PCM_FRAMES	0x0000801c0000ull
#define SND_FF_REG_CLOCK_CONFIG		0x0000801c0004ull

@@ -47,11 +47,6 @@ enum snd_ff_stream_mode {
	SND_FF_STREAM_MODE_COUNT,
};

enum snd_ff_reg_type {
	SND_FF_REG_TYPE_MIDI_HIGH_ADDR = 0,
	SND_FF_REG_TYPE_COUNT,
};

struct snd_ff_protocol;
struct snd_ff_spec {
	const char *const name;
@@ -63,7 +58,7 @@ struct snd_ff_spec {
	unsigned int midi_out_ports;

	const struct snd_ff_protocol *protocol;
	u64 regs[SND_FF_REG_TYPE_COUNT];
	u64 midi_high_addr;
};

struct snd_ff {