At Mon, 6 Oct 2014 15:55:18 +0200, Ondrej Zary wrote:
On Monday 06 October 2014, Takashi Iwai wrote:
At Mon, 29 Sep 2014 23:44:39 +0200,
Ondrej Zary wrote:
Add support for ES938 3-D Audio Effects Processor found on some ES18xx (and possibly other) sound cards, doing bass/treble and 3D control.
As this is seen only on es18xx, we don't need to make it as an individual module. Just merge into snd-es18xx module.
ES938 does not depend on ES18xx and can be connected to any device with MIDI interface. Maybe there are some other cards with this chip.
Please prove it :)
ES938 is controlled by MIDI SysEx commands sent through card's MPU401 port.
The code opens/closes the MIDI device everytime a mixer control value is changed so userspace apps can still use the MIDI port. Changing the mixer controls will fail when the MIDI port is open by an application.
Why the kernel open/close is needed for snd_es938_init(), too? Also, adding controls after snd_card_register() call isn't good in most cases.
chip->rfile must be a valid snd_rawmidi_file handle for snd_es938_write_reg() and snd_es938_write_reg() to work.
IIRC, there is a chicken-and-egg problem with adding controls and sound card's MIDI interface initialization: we need a working MIDI interface to detect ES938 presence - that's after snd_card_register() is called
vs.
we need to add conttrols before snd_card_register() is called
Well, then the interface is somehow abused. The snd_rawmidi_kernel_read/write() are mostly only for sequencer core stuff, and they aren't supposed to be used by the individual driver.
That said, I'm not willing to merge the patch in the current form. One of the reason is that this can be implemented pretty easily in user-space. Another is that it's a deadly old device, and likely only handful boards are still running in the world, thus no much motivation to bloat the kernel code for that. We're even discussing to get rid of ISA codes from the kernel tree nowadays.
Sorry, the patch was submitted 10 years too late.
Takashi