sound: oxygen: work around MCE when changing volume
authorClemens Ladisch <clemens@ladisch.de>
Mon, 7 Sep 2009 08:18:54 +0000 (10:18 +0200)
committerGreg Kroah-Hartman <gregkh@suse.de>
Thu, 24 Sep 2009 15:47:38 +0000 (08:47 -0700)
commit4e109e60b67459bd46e796d25373fe850f75b9f3
tree6681a1fc4c67553ab9e32d9d45e2785938576763
parent4b8111914e3a91b2022610b62178c9f69ac16cc8
sound: oxygen: work around MCE when changing volume

commit f1bc07af9a9edc5c1d4bdd971f7099316ed2e405 upstream.

When the volume is changed continuously (e.g., when the user drags a
volume slider with the mouse), the driver does lots of I2C writes.
Apparently, the sound chip can get confused when we poll the I2C status
register too much, and fails to complete a read from it.  On the PCI-E
models, the PCI-E/PCI bridge gets upset by this and generates a machine
check exception.

To avoid this, this patch replaces the polling with an unconditional
wait that is guaranteed to be long enough.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Tested-by: Johann Messner <johann.messner at jku.at>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
sound/pci/oxygen/oxygen_io.c