[alsa-devel] Userspace control of HDA port connections
Takashi,
I'm wondering if there is any interest in providing a userspace way of modifying the HDA port/mixer input/output mappings? The driver currently uses hard-coded models to define the standard configuration for a given piece of hardware, but this doesn't allow a user to redefine a line-in port as an output port if the chipset has an available unmapped mixer. I'm bringing this up because from what I understand of the ALC883 is that it has 4 mixers, yet on my motherboard there are only 3 ports configured as output by default (6stack-dig). Correct me if I'm wrong, but I should be able to map all of the physical jacks as outputs and then assign each of the mixers to a jack or more than one jack. That would require adding a new model to the driver and/or unloading/reloading the module with a new model string. In a system which has the driver built-in and isn't using modules, this requires a reboot. If there was a userspace way of reconfiguring the jacks (via /proc/asound?) then perhaps even all of the hardware -> model mappings could be moved into a little tool run at boot time which doesn't require a kernel change every time new hardware is introduced. A nice little ncurses tool could even be made to modify port mappings. What do you think? If I'm misunderstanding the capabilities of the chips please let me know.
Thanks, -Andrew
p.s. I still have yet to test out the multi-card patch. I'll reply to that once I have more info.
At Thu, 20 Dec 2007 16:45:09 -0500, Andrew Paprocki wrote:
Takashi,
I'm wondering if there is any interest in providing a userspace way of modifying the HDA port/mixer input/output mappings? The driver currently uses hard-coded models to define the standard configuration for a given piece of hardware, but this doesn't allow a user to redefine a line-in port as an output port if the chipset has an available unmapped mixer. I'm bringing this up because from what I understand of the ALC883 is that it has 4 mixers, yet on my motherboard there are only 3 ports configured as output by default (6stack-dig). Correct me if I'm wrong, but I should be able to map all of the physical jacks as outputs and then assign each of the mixers to a jack or more than one jack. That would require adding a new model to the driver and/or unloading/reloading the module with a new model string. In a system which has the driver built-in and isn't using modules, this requires a reboot. If there was a userspace way of reconfiguring the jacks (via /proc/asound?) then perhaps even all of the hardware -> model mappings could be moved into a little tool run at boot time which doesn't require a kernel change every time new hardware is introduced. A nice little ncurses tool could even be made to modify port mappings. What do you think? If I'm misunderstanding the capabilities of the chips please let me know.
It's not possible right now as is.
I've once created a user-space setup tool for hda driver, but it was only for older versions and very unlikely works with the current version. You can find it at:
ftp://ftp.suse.com/pub/people/tiwai/hda-tools/
I think the idea itself is OK, but the implementation must be more improved. The data transfer of variable length data via ioctl is basically a bad idea, and this could be better in a simple read/write stream. Also, the creation of mixer elements has some issues to reconsider.
Thanks, -Andrew
p.s. I still have yet to test out the multi-card patch. I'll reply to that once I have more info.
Yeah, let me know if it works. I think this should be merged to the upstream soon.
Takashi
participants (2)
-
Andrew Paprocki
-
Takashi Iwai