Index: /trunk/src/VBox/Devices/Audio/DevCodec.cpp
===================================================================
--- /trunk/src/VBox/Devices/Audio/DevCodec.cpp	(revision 31506)
+++ /trunk/src/VBox/Devices/Audio/DevCodec.cpp	(revision 31507)
@@ -579,15 +579,9 @@
         uint8_t i;
         Log(("HDAcodec: enters reset\n"));
-        if (pState->fFirstResetDetected)
+        for (i = 0; i < STAC9220_NODE_COUNT; ++i)
         {
-            LogRel(("HDAcodec: \"Double\" reset detected\n"));
-            pState->fFirstResetDetected = false;
-            for (i = 0; i < STAC9220_NODE_COUNT; ++i)
-            {
-                stac9220ResetNode(pState, i, &pState->pNodes[i]);
-            }
-        }   
-        else
-            pState->fFirstResetDetected = true;
+            stac9220ResetNode(pState, i, &pState->pNodes[i]);
+        }
+        pState->fInReset = false;
         Log(("HDAcodec: exits reset\n"));
     }
@@ -980,5 +974,6 @@
             pNode->port.u32F08_param = 0;
             pNode->port.u32F09_param = RT_BIT(31)|0x9920; /* 39.2 kOm */
-            pNode->port.u32F1c_param = RT_MAKE_U32_FROM_U8(0x20, 0x40, 0x21, 0x02);
+            if (!pState->fInReset)
+                pNode->port.u32F1c_param = RT_MAKE_U32_FROM_U8(0x20, 0x40, 0x21, 0x02);
             goto port_init;
         case 0xB:
@@ -988,5 +983,6 @@
             pNode->port.u32F09_param = 0;
             pNode->port.u32F07_param = RT_BIT(5);
-            pNode->port.u32F1c_param = RT_MAKE_U32_FROM_U8(0x11, 0x60, 0x11, 0x01);
+            if (!pState->fInReset)
+                pNode->port.u32F1c_param = RT_MAKE_U32_FROM_U8(0x11, 0x60, 0x11, 0x01);
             goto port_init;
         case 0xC:
@@ -996,5 +992,6 @@
             pNode->port.u32F09_param = 0;
             pNode->port.u32F07_param = RT_BIT(5);
-            pNode->port.u32F1c_param = RT_MAKE_U32_FROM_U8(0x10, 0x40, 0x11, 0x01);
+            if (!pState->fInReset)
+                pNode->port.u32F1c_param = RT_MAKE_U32_FROM_U8(0x10, 0x40, 0x11, 0x01);
             goto port_init;
         case 0xD:
@@ -1015,5 +1012,6 @@
             pNode->port.u32F07_param = RT_BIT(5);
             pNode->port.u32F09_param = 0;
-            pNode->port.u32F1c_param = RT_MAKE_U32_FROM_U8(0x51, 0x30, 0x81, 0x01);
+            if (!pState->fInReset)
+                pNode->port.u32F1c_param = RT_MAKE_U32_FROM_U8(0x51, 0x30, 0x81, 0x01);
             break;
         case 0xF:
@@ -1024,5 +1022,6 @@
             pNode->port.u32F08_param = 0;
             pNode->port.u32F07_param = 0;
-            pNode->port.u32F1c_param = RT_MAKE_U32_FROM_U8(0x12, 0x60, 0x11, 0x01);
+            if (!pState->fInReset)
+                pNode->port.u32F1c_param = RT_MAKE_U32_FROM_U8(0x12, 0x60, 0x11, 0x01);
             pNode->node.au8F02_param[0] = 0x5;
             pNode->port.u32F09_param = 0;
@@ -1037,5 +1036,6 @@
             *(uint32_t *)pNode->node.au8F02_param = RT_MAKE_U32_FROM_U8(0x08, 0x17, 0x0, 0);
             pNode->digout.u32F07_param = 0;
-            pNode->digout.u32F1c_param = RT_MAKE_U32_FROM_U8(0x30, 0x10, 0x45, 0x01);
+            if (!pState->fInReset)
+                pNode->digout.u32F1c_param = RT_MAKE_U32_FROM_U8(0x30, 0x10, 0x45, 0x01);
         break;
         case 0x11:
@@ -1048,5 +1048,6 @@
             pNode->digin.u32F09_param = 0;
             pNode->digin.u32F0c_param = 0;
-            pNode->digin.u32F1c_param = (0x1 << 24) | (0xc5 << 16) | (0x10 << 8) | 0x60;
+            if (!pState->fInReset)
+                pNode->digin.u32F1c_param = (0x1 << 24) | (0xc5 << 16) | (0x10 << 8) | 0x60;
         break;
         case 0x12:
@@ -1078,5 +1079,6 @@
             pNode->node.au32F00_param[0xc] = RT_BIT(5);
             pNode->cdnode.u32F07_param = 0;
-            pNode->cdnode.u32F1c_param = RT_MAKE_U32_FROM_U8(0x52, 0x0, 0x33, 0x90);
+            if (!pState->fInReset)
+                pNode->cdnode.u32F1c_param = RT_MAKE_U32_FROM_U8(0x52, 0x0, 0x33, 0x90);
         break;
         case 0x16:
@@ -1180,8 +1182,4 @@
         if ((CODEC_VERBDATA(cmd) & pState->pVerbs[i].mask) == pState->pVerbs[i].verb)
         {
-            if(    pState->fFirstResetDetected
-                && CODEC_VERBDATA(cmd) != 0x7FF00
-                && CODEC_VERBDATA(cmd) != 0)
-                pState->fFirstResetDetected = false;
             *pfn = pState->pVerbs[i].pfn;
             return VINF_SUCCESS;
@@ -1230,5 +1228,5 @@
     pState->pfnLookup = codecLookup;
     pState->pNodes = (PCODECNODE)RTMemAllocZ(sizeof(CODECNODE) * STAC9220_NODE_COUNT);
-    pState->fFirstResetDetected = false;
+    pState->fInReset = false;
     uint8_t i;
     for (i = 0; i < STAC9220_NODE_COUNT; ++i)
Index: /trunk/src/VBox/Devices/Audio/DevCodec.h
===================================================================
--- /trunk/src/VBox/Devices/Audio/DevCodec.h	(revision 31506)
+++ /trunk/src/VBox/Devices/Audio/DevCodec.h	(revision 31507)
@@ -223,6 +223,6 @@
     /** Mic in */
     SWVoiceIn               *voice_mc;
-    void *pHDAState;
-    bool fFirstResetDetected;
+    void                    *pHDAState;
+    bool                    fInReset;
     DECLR3CALLBACKMEMBER(int, pfnProcess, (struct CODECState *));
     DECLR3CALLBACKMEMBER(int, pfnLookup, (struct CODECState *pState, uint32_t verb, PPFNCODECVERBPROCESSOR));
Index: /trunk/src/VBox/Devices/Audio/DevIchIntelHDA.cpp
===================================================================
--- /trunk/src/VBox/Devices/Audio/DevIchIntelHDA.cpp	(revision 31506)
+++ /trunk/src/VBox/Devices/Audio/DevIchIntelHDA.cpp	(revision 31507)
@@ -1201,5 +1201,4 @@
 {
     INTELHDLinkState *pState = (INTELHDLinkState *)pCodecState->pHDAState;
-    pCodecState->fFirstResetDetected = true;
     return VINF_SUCCESS;
 }
