return 0;
}
+static int snd_mpu401_do_reset(struct snd_mpu401 *mpu)
+{
+ if (snd_mpu401_uart_cmd(mpu, MPU401_RESET, 1))
+ return -EIO;
+ if (!(mpu->info_flags & MPU401_INFO_UART_ONLY) &&
+ snd_mpu401_uart_cmd(mpu, MPU401_ENTER_UART, 1))
+ return -EIO;
+ return 0;
+}
+
/*
* input/output open/close - protected by open_mutex in rawmidi.c
*/
if (mpu->open_input && (err = mpu->open_input(mpu)) < 0)
return err;
if (! test_bit(MPU401_MODE_BIT_OUTPUT, &mpu->mode)) {
- if (snd_mpu401_uart_cmd(mpu, MPU401_RESET, 1))
- goto error_out;
- if (snd_mpu401_uart_cmd(mpu, MPU401_ENTER_UART, 1))
+ if (snd_mpu401_do_reset(mpu) < 0)
goto error_out;
}
mpu->substream_input = substream;
if (mpu->open_output && (err = mpu->open_output(mpu)) < 0)
return err;
if (! test_bit(MPU401_MODE_BIT_INPUT, &mpu->mode)) {
- if (snd_mpu401_uart_cmd(mpu, MPU401_RESET, 1))
- goto error_out;
- if (snd_mpu401_uart_cmd(mpu, MPU401_ENTER_UART, 1))
+ if (snd_mpu401_do_reset(mpu) < 0)
goto error_out;
}
mpu->substream_output = substream;