int snd_sof_prepare(struct device *dev)
 {
        struct snd_sof_dev *sdev = dev_get_drvdata(dev);
+       const struct sof_dev_desc *desc = sdev->pdata->desc;
+
+       /* will suspend to S3 by default */
+       sdev->system_suspend_target = SOF_SUSPEND_S3;
+
+       if (!desc->use_acpi_target_states)
+               return 0;
 
 #if defined(CONFIG_ACPI)
        if (acpi_target_system_state() == ACPI_STATE_S0)
                sdev->system_suspend_target = SOF_SUSPEND_S0IX;
-       else
-               sdev->system_suspend_target = SOF_SUSPEND_S3;
-#else
-       /* will suspend to S3 by default */
-       sdev->system_suspend_target = SOF_SUSPEND_S3;
 #endif
 
        return 0;
 
 #if IS_ENABLED(CONFIG_SND_SOC_SOF_APOLLOLAKE)
 static const struct sof_dev_desc bxt_desc = {
        .machines               = snd_soc_acpi_intel_bxt_machines,
+       .use_acpi_target_states = true,
        .resindex_lpe_base      = 0,
        .resindex_pcicfg_base   = -1,
        .resindex_imr_base      = -1,
 #if IS_ENABLED(CONFIG_SND_SOC_SOF_GEMINILAKE)
 static const struct sof_dev_desc glk_desc = {
        .machines               = snd_soc_acpi_intel_glk_machines,
+       .use_acpi_target_states = true,
        .resindex_lpe_base      = 0,
        .resindex_pcicfg_base   = -1,
        .resindex_imr_base      = -1,
 static const struct sof_dev_desc cnl_desc = {
        .machines               = snd_soc_acpi_intel_cnl_machines,
        .alt_machines           = snd_soc_acpi_intel_cnl_sdw_machines,
+       .use_acpi_target_states = true,
        .resindex_lpe_base      = 0,
        .resindex_pcicfg_base   = -1,
        .resindex_imr_base      = -1,
 static const struct sof_dev_desc cfl_desc = {
        .machines               = snd_soc_acpi_intel_cfl_machines,
        .alt_machines           = snd_soc_acpi_intel_cfl_sdw_machines,
+       .use_acpi_target_states = true,
        .resindex_lpe_base      = 0,
        .resindex_pcicfg_base   = -1,
        .resindex_imr_base      = -1,
 static const struct sof_dev_desc cml_desc = {
        .machines               = snd_soc_acpi_intel_cml_machines,
        .alt_machines           = snd_soc_acpi_intel_cml_sdw_machines,
+       .use_acpi_target_states = true,
        .resindex_lpe_base      = 0,
        .resindex_pcicfg_base   = -1,
        .resindex_imr_base      = -1,
 static const struct sof_dev_desc icl_desc = {
        .machines               = snd_soc_acpi_intel_icl_machines,
        .alt_machines           = snd_soc_acpi_intel_icl_sdw_machines,
+       .use_acpi_target_states = true,
        .resindex_lpe_base      = 0,
        .resindex_pcicfg_base   = -1,
        .resindex_imr_base      = -1,
 static const struct sof_dev_desc tgl_desc = {
        .machines               = snd_soc_acpi_intel_tgl_machines,
        .alt_machines           = snd_soc_acpi_intel_tgl_sdw_machines,
+       .use_acpi_target_states = true,
        .resindex_lpe_base      = 0,
        .resindex_pcicfg_base   = -1,
        .resindex_imr_base      = -1,
 #if IS_ENABLED(CONFIG_SND_SOC_SOF_ELKHARTLAKE)
 static const struct sof_dev_desc ehl_desc = {
        .machines               = snd_soc_acpi_intel_ehl_machines,
+       .use_acpi_target_states = true,
        .resindex_lpe_base      = 0,
        .resindex_pcicfg_base   = -1,
        .resindex_imr_base      = -1,
 #if IS_ENABLED(CONFIG_SND_SOC_SOF_JASPERLAKE)
 static const struct sof_dev_desc jsl_desc = {
        .machines               = snd_soc_acpi_intel_jsl_machines,
+       .use_acpi_target_states = true,
        .resindex_lpe_base      = 0,
        .resindex_pcicfg_base   = -1,
        .resindex_imr_base      = -1,