REG_SEQ0(CS35L56_DSP_VIRTUAL1_MBOX_1, CS35L56_MBOX_CMD_SYSTEM_RESET),
 };
 
-static void cs35l56_system_reset(struct cs35l56_private *cs35l56)
+static void cs35l56_system_reset(struct cs35l56_private *cs35l56, bool is_soundwire)
 {
-       cs35l56->soft_resetting = true;
-
        /*
         * Must enter cache-only first so there can't be any more register
         * accesses other than the controlled system reset sequence below.
                                        ARRAY_SIZE(cs35l56_system_reset_seq));
 
        /* On SoundWire the registers won't be accessible until it re-enumerates. */
-       if (cs35l56->sdw_peripheral)
+       if (is_soundwire)
                return;
 
        usleep_range(CS35L56_CONTROL_PORT_READY_US, CS35L56_CONTROL_PORT_READY_US + 400);
 
        init_completion(&cs35l56->init_completion);
 
-       cs35l56_system_reset(cs35l56);
+       cs35l56->soft_resetting = true;
+       cs35l56_system_reset(cs35l56, !!cs35l56->sdw_peripheral);
 
        if (cs35l56->sdw_peripheral) {
                /*
 
        if (!cs35l56->base.reset_gpio) {
                dev_dbg(cs35l56->base.dev, "No reset gpio: using soft reset\n");
-               cs35l56_system_reset(cs35l56);
+               cs35l56->soft_resetting = true;
+               cs35l56_system_reset(cs35l56, !!cs35l56->sdw_peripheral);
                if (cs35l56->sdw_peripheral) {
                        /* Keep alive while we wait for re-enumeration */
                        pm_runtime_get_noresume(cs35l56->base.dev);