ALSA: firewire-tascam: remove callback function from async midi port
As a result of localization of async midi port, ALSA driver for TASCAM FireWire series can call helper function directly instead of callback registration. This commit removes the redundant design. Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp> Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
531f471834
commit
9bae2150d0
|
@ -197,7 +197,7 @@ static void midi_port_work(struct work_struct *work)
|
||||||
* Later, snd_rawmidi_transmit_ack() is called.
|
* Later, snd_rawmidi_transmit_ack() is called.
|
||||||
*/
|
*/
|
||||||
memset(port->buf, 0, port->len);
|
memset(port->buf, 0, port->len);
|
||||||
port->consume_bytes = port->fill(substream, port->buf);
|
port->consume_bytes = fill_message(substream, port->buf);
|
||||||
if (port->consume_bytes <= 0) {
|
if (port->consume_bytes <= 0) {
|
||||||
/* Do it in next chance, immediately. */
|
/* Do it in next chance, immediately. */
|
||||||
if (port->consume_bytes == 0) {
|
if (port->consume_bytes == 0) {
|
||||||
|
@ -242,8 +242,7 @@ static void midi_port_work(struct work_struct *work)
|
||||||
}
|
}
|
||||||
|
|
||||||
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, unsigned int len,
|
struct fw_unit *unit, u64 addr, unsigned int len)
|
||||||
snd_fw_async_midi_port_fill fill)
|
|
||||||
{
|
{
|
||||||
port->len = DIV_ROUND_UP(len, 4) * 4;
|
port->len = DIV_ROUND_UP(len, 4) * 4;
|
||||||
port->buf = kzalloc(port->len, GFP_KERNEL);
|
port->buf = kzalloc(port->len, GFP_KERNEL);
|
||||||
|
@ -252,7 +251,6 @@ int snd_fw_async_midi_port_init(struct snd_fw_async_midi_port *port,
|
||||||
|
|
||||||
port->parent = fw_parent_device(unit);
|
port->parent = fw_parent_device(unit);
|
||||||
port->addr = addr;
|
port->addr = addr;
|
||||||
port->fill = fill;
|
|
||||||
port->idling = true;
|
port->idling = true;
|
||||||
port->next_ktime = 0;
|
port->next_ktime = 0;
|
||||||
port->error = false;
|
port->error = false;
|
||||||
|
@ -347,7 +345,7 @@ int snd_tscm_transaction_register(struct snd_tscm *tscm)
|
||||||
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,
|
TSCM_ADDR_BASE + TSCM_OFFSET_MIDI_RX_QUAD,
|
||||||
4, fill_message);
|
4);
|
||||||
if (err < 0)
|
if (err < 0)
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,11 +45,6 @@ struct snd_tscm_spec {
|
||||||
#define TSCM_MIDI_IN_PORT_MAX 4
|
#define TSCM_MIDI_IN_PORT_MAX 4
|
||||||
#define TSCM_MIDI_OUT_PORT_MAX 4
|
#define TSCM_MIDI_OUT_PORT_MAX 4
|
||||||
|
|
||||||
struct snd_fw_async_midi_port;
|
|
||||||
typedef int (*snd_fw_async_midi_port_fill)(
|
|
||||||
struct snd_rawmidi_substream *substream,
|
|
||||||
u8 *buf);
|
|
||||||
|
|
||||||
struct snd_fw_async_midi_port {
|
struct snd_fw_async_midi_port {
|
||||||
struct fw_device *parent;
|
struct fw_device *parent;
|
||||||
struct work_struct work;
|
struct work_struct work;
|
||||||
|
@ -64,7 +59,6 @@ struct snd_fw_async_midi_port {
|
||||||
unsigned int len;
|
unsigned int len;
|
||||||
|
|
||||||
struct snd_rawmidi_substream *substream;
|
struct snd_rawmidi_substream *substream;
|
||||||
snd_fw_async_midi_port_fill fill;
|
|
||||||
int consume_bytes;
|
int consume_bytes;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -155,8 +149,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, unsigned int len,
|
struct fw_unit *unit, u64 addr, unsigned int len);
|
||||||
snd_fw_async_midi_port_fill fill);
|
|
||||||
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
|
||||||
|
|
Loading…
Reference in New Issue