/* event input callback - just redirect events to subscribers  */
static int dummy_input(struct snd_seq_event *ev, int direct, void *private_data, int atomic, int hop)
/* event input callback - just redirect events to subscribers  */
static int dummy_input(struct snd_seq_event *ev, int direct, void *private_data, int atomic, int hop)
{
	struct snd_seq_dummy_port *p;
	struct snd_seq_event tmpev;
	p = private_data;
	if (ev->source.client == SNDRV_SEQ_CLIENT_SYSTEM ||
	    ev->type == SNDRV_SEQ_EVENT_KERNEL_ERROR)
		return 0;
	tmpev = *ev;
	if (p->duplex)
		tmpev.source.port = p->connect;
	else
		tmpev.source.port = p->port;
	tmpev.dest.client = SNDRV_SEQ_ADDRESS_SUBSCRIBERS;
	return snd_seq_kernel_client_dispatch(p->client, &tmpev, atomic, hop);
}