[alsa-devel] [RME - hdsp] Multiface/Digiface/RPM detection
Hi!
I've recently added support for the RME RPM to hdspmixer. Unfortunately, I don't have one, it's been done blindly with user feedback.
This very user now reports that he needs to upload the device firmware from windows. I've checked hdsploader, and of course, it needs patching. I'll take care in a second.
More surprisingly, though, the kernel wasn't able to upload the firmware itself, because it fails to detect the RPM and hence tries to upload a multiface firmware.
After reading the kernel source, I think the code in hdsp.c is wrong:
if (hdsp_fifo_wait(hdsp, 0, HDSP_SHORT_WAIT)) { hdsp_write(hdsp, HDSP_control2Reg, HDSP_VERSION_BIT); hdsp_write(hdsp, HDSP_control2Reg, HDSP_S_LOAD); if (hdsp_fifo_wait(hdsp, 0, HDSP_SHORT_WAIT)) hdsp->io_type = RPM; else hdsp->io_type = Multiface; } else { hdsp->io_type = Digiface; }
Who here owns a Digiface and can confirm or deny that the kernel correctly detects it as Digiface? Same for Multiface, though I guess since it's more or less the default, users wouldn't notice it.
What's wrong with the code above? I think all occurrences of HDSP_control2Reg in hdsp_check_for_iobox need to be changed to HDSP_controlRegister and the second hdsp_fifo_wait needs to be inverted.
But this is pure guesswork. If I come up with a patch, who here has a RPM, Digiface or Multiface to test it?
TIA
participants (1)
-
Adrian Knoth