Index: /trunk/src/VBox/Devices/Audio/DevCodec.cpp
===================================================================
--- /trunk/src/VBox/Devices/Audio/DevCodec.cpp	(revision 31323)
+++ /trunk/src/VBox/Devices/Audio/DevCodec.cpp	(revision 31324)
@@ -446,4 +446,5 @@
     return VINF_SUCCESS;
 }
+
 /* 703 */
 static int codecSetProcessingState(struct CODECState *pState, uint32_t cmd, uint64_t *pResp)
@@ -464,4 +465,5 @@
     return VINF_SUCCESS;
 }
+
 /* F0D */
 static int codecGetDigitalConverter(struct CODECState *pState, uint32_t cmd, uint64_t *pResp)
@@ -481,4 +483,5 @@
     return VINF_SUCCESS;
 }
+
 /* 70D */
 static int codecSetDigitalConverter1(struct CODECState *pState, uint32_t cmd, uint64_t *pResp)
Index: /trunk/src/VBox/Devices/Audio/DevIchIntelHDA.cpp
===================================================================
--- /trunk/src/VBox/Devices/Audio/DevIchIntelHDA.cpp	(revision 31323)
+++ /trunk/src/VBox/Devices/Audio/DevIchIntelHDA.cpp	(revision 31324)
@@ -982,32 +982,6 @@
 {
     uint32_t v = HDA_REG_IND(pState, index);
-    //int rc = hdaRegWriteU8(pState, offset, index, u32Value);
-    switch (offset)
-    {
-        case 0x83:
-            SDSTS(pState, 0) ^= u32Value;
-            break;
-        case 0xA3:
-            SDSTS(pState, 1) ^= u32Value;
-            break;
-        case 0xC3:
-            SDSTS(pState, 2) ^= u32Value;
-            break;
-        case 0xE3:
-            SDSTS(pState, 3) ^= u32Value;
-            break;
-        case 0x103:
-            SDSTS(pState, 4) ^= u32Value;
-            break;
-        case 0x123:
-            SDSTS(pState, 5) ^= u32Value;
-            break;
-        case 0x143:
-            SDSTS(pState, 6) ^= u32Value;
-            break;
-        case 0x163:
-            SDSTS(pState, 7) ^= u32Value;
-            break;
-    }
+    v ^= (u32Value & v);
+    HDA_REG_IND(pState, index) = v;
     hdaProcessInterrupt(pState);
 #if 0
