mirror of
https://github.com/torvalds/linux.git
synced 2024-12-17 00:21:32 +00:00
staging: line6: clean up line6_pod_process_message()
Previous versions of the line6 driver snooped MIDI traffic in order to make device state accessible via sysfs attributes. This involved a lot of logic in line6_pod_process_message() that has since been removed. Drop unused conditionals in line6_pod_process_message() and reduce the levels of indentation. Only two MIDI messages are still tracked: the POD version message on startup and monitor level changes originating from the device. Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
98115f1df3
commit
4e6a8ffba2
@ -135,85 +135,27 @@ void line6_pod_process_message(struct usb_line6_pod *pod)
|
||||
{
|
||||
const unsigned char *buf = pod->line6.buffer_message;
|
||||
|
||||
/* filter messages by type */
|
||||
switch (buf[0] & 0xf0) {
|
||||
case LINE6_PARAM_CHANGE:
|
||||
case LINE6_PROGRAM_CHANGE:
|
||||
case LINE6_SYSEX_BEGIN:
|
||||
break; /* handle these further down */
|
||||
|
||||
default:
|
||||
return; /* ignore all others */
|
||||
if (memcmp(buf, pod_version_header, sizeof(pod_version_header)) == 0) {
|
||||
pod->firmware_version = buf[13] * 100 + buf[14] * 10 + buf[15];
|
||||
pod->device_id = ((int)buf[8] << 16) | ((int)buf[9] << 8) |
|
||||
(int) buf[10];
|
||||
pod_startup3(pod);
|
||||
return;
|
||||
}
|
||||
|
||||
/* process all remaining messages */
|
||||
switch (buf[0]) {
|
||||
case LINE6_PARAM_CHANGE | LINE6_CHANNEL_DEVICE:
|
||||
case LINE6_PARAM_CHANGE | LINE6_CHANNEL_HOST:
|
||||
break;
|
||||
/* Only look for sysex messages from this device */
|
||||
if (buf[0] != (LINE6_SYSEX_BEGIN | LINE6_CHANNEL_DEVICE) &&
|
||||
buf[0] != (LINE6_SYSEX_BEGIN | LINE6_CHANNEL_UNKNOWN)) {
|
||||
return;
|
||||
}
|
||||
if (memcmp(buf + 1, line6_midi_id, sizeof(line6_midi_id)) != 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
case LINE6_PROGRAM_CHANGE | LINE6_CHANNEL_DEVICE:
|
||||
case LINE6_PROGRAM_CHANGE | LINE6_CHANNEL_HOST:
|
||||
break;
|
||||
|
||||
case LINE6_SYSEX_BEGIN | LINE6_CHANNEL_DEVICE:
|
||||
case LINE6_SYSEX_BEGIN | LINE6_CHANNEL_UNKNOWN:
|
||||
if (memcmp(buf + 1, line6_midi_id,
|
||||
sizeof(line6_midi_id)) == 0) {
|
||||
switch (buf[5]) {
|
||||
case POD_SYSEX_DUMP:
|
||||
break;
|
||||
|
||||
case POD_SYSEX_SYSTEM:{
|
||||
short value =
|
||||
((int)buf[7] << 12) | ((int)buf[8]
|
||||
<< 8) |
|
||||
((int)buf[9] << 4) | (int)buf[10];
|
||||
|
||||
if (buf[6] == POD_MONITOR_LEVEL)
|
||||
pod->monitor_level = value;
|
||||
break;
|
||||
}
|
||||
|
||||
case POD_SYSEX_FINISH:
|
||||
/* do we need to respond to this? */
|
||||
break;
|
||||
|
||||
case POD_SYSEX_SAVE:
|
||||
break;
|
||||
|
||||
case POD_SYSEX_STORE:
|
||||
dev_dbg(pod->line6.ifcdev,
|
||||
"message %02X not yet implemented\n",
|
||||
buf[5]);
|
||||
break;
|
||||
|
||||
default:
|
||||
dev_dbg(pod->line6.ifcdev,
|
||||
"unknown sysex message %02X\n",
|
||||
buf[5]);
|
||||
}
|
||||
} else
|
||||
if (memcmp
|
||||
(buf, pod_version_header,
|
||||
sizeof(pod_version_header)) == 0) {
|
||||
pod->firmware_version =
|
||||
buf[13] * 100 + buf[14] * 10 + buf[15];
|
||||
pod->device_id =
|
||||
((int)buf[8] << 16) | ((int)buf[9] << 8) | (int)
|
||||
buf[10];
|
||||
pod_startup3(pod);
|
||||
} else
|
||||
dev_dbg(pod->line6.ifcdev, "unknown sysex header\n");
|
||||
|
||||
break;
|
||||
|
||||
case LINE6_SYSEX_END:
|
||||
break;
|
||||
|
||||
default:
|
||||
dev_dbg(pod->line6.ifcdev, "POD: unknown message %02X\n",
|
||||
buf[0]);
|
||||
if (buf[5] == POD_SYSEX_SYSTEM && buf[6] == POD_MONITOR_LEVEL) {
|
||||
short value = ((int)buf[7] << 12) | ((int)buf[8] << 8) |
|
||||
((int)buf[9] << 4) | (int)buf[10];
|
||||
pod->monitor_level = value;
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user