On Mon, Jan 31, 2011 at 9:51 AM, Stephen Warren swarren@nvidia.com wrote:
Also, even though the eld file is removed, the eld info is _not_ updated when stopping alsa & unloading drivers, then reloading. A reboot is required to get the eld info to update. This is why I cold boot the pc for each test.
The NVIDIA graphics driver reads the monitor's EDID and passed the ELD information to the audio HW, from whence it is read by the ALSA driver. The EDID is only read when the X server is started, or perhaps when you click the "detect displays" button in the nvidia-settings utility.
Hence, restarting X (e.g. logout/login), or using nvidia-settings, is probably sufficient to update the ELD data; no reboot required.
That explains why the ELD info isn't updated, although doesn't explain the actual problem of missing channels. I do think it's worthy to rethink that behavior in the Nvidia driver. The reason being that many users, like myself, are using an htpc environment where the audio/video output is connected directly to a tv or home theater receiver. In my case it's a receiver that is turned on/off as needed. There is no keyboard, mouse, or anything other then an IR remote control to navigate the software I'm running. To click "detect displays" would mean digging the box out of its current location and connecting a monitor & mouse to it just to do so. Extremely inconvenient. I would guess that the best solution would be the Nvidia driver having the ability to update the ELD info upon request. There's got to be method of detecting things like receivers being turned on/off.
Maybe another thread should be started regarding that issue since we're getting away from the problem of missing channels.