Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge branch 'for-linus' into for-next

Merge 6.3-devel branch back in order to apply the more Realtek HD-audio
changes cleanly.

Signed-off-by: Takashi Iwai <tiwai@suse.de>

+97 -24
+1 -1
Documentation/sound/hd-audio/models.rst
··· 704 704 no-jd 705 705 BIOS setup but without jack-detection 706 706 intel 707 - Intel DG45* mobos 707 + Intel D*45* mobos 708 708 dell-m6-amic 709 709 Dell desktops/laptops with analog mics 710 710 dell-m6-dmic
+1 -1
sound/firewire/tascam/tascam-stream.c
··· 490 490 // packet is important for media clock recovery. 491 491 err = amdtp_domain_start(&tscm->domain, tx_init_skip_cycles, true, true); 492 492 if (err < 0) 493 - return err; 493 + goto error; 494 494 495 495 if (!amdtp_domain_wait_ready(&tscm->domain, READY_TIMEOUT_MS)) { 496 496 err = -ETIMEDOUT;
+5 -2
sound/i2c/cs8427.c
··· 561 561 if (snd_BUG_ON(!cs8427)) 562 562 return -ENXIO; 563 563 chip = cs8427->private_data; 564 - if (active) 564 + if (active) { 565 565 memcpy(chip->playback.pcm_status, 566 566 chip->playback.def_status, 24); 567 - chip->playback.pcm_ctl->vd[0].access &= ~SNDRV_CTL_ELEM_ACCESS_INACTIVE; 567 + chip->playback.pcm_ctl->vd[0].access &= ~SNDRV_CTL_ELEM_ACCESS_INACTIVE; 568 + } else { 569 + chip->playback.pcm_ctl->vd[0].access |= SNDRV_CTL_ELEM_ACCESS_INACTIVE; 570 + } 568 571 snd_ctl_notify(cs8427->bus->card, 569 572 SNDRV_CTL_EVENT_MASK_VALUE | SNDRV_CTL_EVENT_MASK_INFO, 570 573 &chip->playback.pcm_ctl->id);
+9 -5
sound/pci/emu10k1/emupcm.c
··· 1183 1183 { 1184 1184 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); 1185 1185 1186 - emu->capture_interrupt = NULL; 1186 + emu->capture_mic_interrupt = NULL; 1187 1187 emu->pcm_capture_mic_substream = NULL; 1188 1188 return 0; 1189 1189 } ··· 1290 1290 { 1291 1291 struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream); 1292 1292 1293 - emu->capture_interrupt = NULL; 1293 + emu->capture_efx_interrupt = NULL; 1294 1294 emu->pcm_capture_efx_substream = NULL; 1295 1295 return 0; 1296 1296 } ··· 1728 1728 struct snd_kcontrol *kctl; 1729 1729 int err; 1730 1730 1731 - err = snd_pcm_new(emu->card, "emu10k1 efx", device, 8, 1, &pcm); 1731 + err = snd_pcm_new(emu->card, "emu10k1 efx", device, emu->audigy ? 0 : 8, 1, &pcm); 1732 1732 if (err < 0) 1733 1733 return err; 1734 1734 1735 1735 pcm->private_data = emu; 1736 1736 1737 - snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &snd_emu10k1_fx8010_playback_ops); 1737 + if (!emu->audigy) 1738 + snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &snd_emu10k1_fx8010_playback_ops); 1738 1739 snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &snd_emu10k1_capture_efx_ops); 1739 1740 1740 1741 pcm->info_flags = 0; 1741 - strcpy(pcm->name, "Multichannel Capture/PT Playback"); 1742 + if (emu->audigy) 1743 + strcpy(pcm->name, "Multichannel Capture"); 1744 + else 1745 + strcpy(pcm->name, "Multichannel Capture/PT Playback"); 1742 1746 emu->pcm_efx = pcm; 1743 1747 1744 1748 /* EFX capture - record the "FXBUS2" channels, by default we connect the EXTINs
+12 -1
sound/pci/hda/patch_hdmi.c
··· 81 81 struct delayed_work work; 82 82 struct hdmi_pcm *pcm; /* pointer to spec->pcm_rec[n] dynamically*/ 83 83 int pcm_idx; /* which pcm is attached. -1 means no pcm is attached */ 84 + int prev_pcm_idx; /* previously assigned pcm index */ 84 85 int repoll_count; 85 86 bool setup; /* the stream has been set up by prepare callback */ 86 87 bool silent_stream; ··· 1381 1380 /* pcm already be attached to the pin */ 1382 1381 if (per_pin->pcm) 1383 1382 return; 1383 + /* try the previously used slot at first */ 1384 + idx = per_pin->prev_pcm_idx; 1385 + if (idx >= 0) { 1386 + if (!test_bit(idx, &spec->pcm_bitmap)) 1387 + goto found; 1388 + per_pin->prev_pcm_idx = -1; /* no longer valid, clear it */ 1389 + } 1384 1390 idx = hdmi_find_pcm_slot(spec, per_pin); 1385 1391 if (idx == -EBUSY) 1386 1392 return; 1393 + found: 1387 1394 per_pin->pcm_idx = idx; 1388 1395 per_pin->pcm = get_hdmi_pcm(spec, idx); 1389 1396 set_bit(idx, &spec->pcm_bitmap); ··· 1407 1398 return; 1408 1399 idx = per_pin->pcm_idx; 1409 1400 per_pin->pcm_idx = -1; 1401 + per_pin->prev_pcm_idx = idx; /* remember the previous index */ 1410 1402 per_pin->pcm = NULL; 1411 1403 if (idx >= 0 && idx < spec->pcm_used) 1412 1404 clear_bit(idx, &spec->pcm_bitmap); ··· 1934 1924 1935 1925 per_pin->pcm = NULL; 1936 1926 per_pin->pcm_idx = -1; 1927 + per_pin->prev_pcm_idx = -1; 1937 1928 per_pin->pin_nid = pin_nid; 1938 1929 per_pin->pin_nid_idx = spec->num_nids; 1939 1930 per_pin->dev_id = i; ··· 4622 4611 HDA_CODEC_ENTRY(0x80862815, "Alderlake HDMI", patch_i915_tgl_hdmi), 4623 4612 HDA_CODEC_ENTRY(0x80862816, "Rocketlake HDMI", patch_i915_tgl_hdmi), 4624 4613 HDA_CODEC_ENTRY(0x80862818, "Raptorlake HDMI", patch_i915_tgl_hdmi), 4625 - HDA_CODEC_ENTRY(0x80862819, "DG2 HDMI", patch_i915_adlp_hdmi), 4614 + HDA_CODEC_ENTRY(0x80862819, "DG2 HDMI", patch_i915_tgl_hdmi), 4626 4615 HDA_CODEC_ENTRY(0x8086281a, "Jasperlake HDMI", patch_i915_icl_hdmi), 4627 4616 HDA_CODEC_ENTRY(0x8086281b, "Elkhartlake HDMI", patch_i915_icl_hdmi), 4628 4617 HDA_CODEC_ENTRY(0x8086281c, "Alderlake-P HDMI", patch_i915_adlp_hdmi),
+33 -1
sound/pci/hda/patch_realtek.c
··· 2624 2624 SND_PCI_QUIRK(0x1462, 0xda57, "MSI Z270-Gaming", ALC1220_FIXUP_GB_DUAL_CODECS), 2625 2625 SND_PCI_QUIRK_VENDOR(0x1462, "MSI", ALC882_FIXUP_GPIO3), 2626 2626 SND_PCI_QUIRK(0x147b, 0x107a, "Abit AW9D-MAX", ALC882_FIXUP_ABIT_AW9D_MAX), 2627 + SND_PCI_QUIRK(0x1558, 0x3702, "Clevo X370SN[VW]", ALC1220_FIXUP_CLEVO_PB51ED_PINS), 2627 2628 SND_PCI_QUIRK(0x1558, 0x50d3, "Clevo PC50[ER][CDF]", ALC1220_FIXUP_CLEVO_PB51ED_PINS), 2628 2629 SND_PCI_QUIRK(0x1558, 0x65d1, "Clevo PB51[ER][CDF]", ALC1220_FIXUP_CLEVO_PB51ED_PINS), 2629 2630 SND_PCI_QUIRK(0x1558, 0x65d2, "Clevo PB51R[CDF]", ALC1220_FIXUP_CLEVO_PB51ED_PINS), ··· 6960 6959 ALC269_FIXUP_DELL_M101Z, 6961 6960 ALC269_FIXUP_SKU_IGNORE, 6962 6961 ALC269_FIXUP_ASUS_G73JW, 6962 + ALC269_FIXUP_ASUS_N7601ZM_PINS, 6963 + ALC269_FIXUP_ASUS_N7601ZM, 6963 6964 ALC269_FIXUP_LENOVO_EAPD, 6964 6965 ALC275_FIXUP_SONY_HWEQ, 6965 6966 ALC275_FIXUP_SONY_DISABLE_AAMIX, ··· 7257 7254 { 0x17, 0x99130111 }, /* subwoofer */ 7258 7255 { } 7259 7256 } 7257 + }, 7258 + [ALC269_FIXUP_ASUS_N7601ZM_PINS] = { 7259 + .type = HDA_FIXUP_PINS, 7260 + .v.pins = (const struct hda_pintbl[]) { 7261 + { 0x19, 0x03A11050 }, 7262 + { 0x1a, 0x03A11C30 }, 7263 + { 0x21, 0x03211420 }, 7264 + { } 7265 + } 7266 + }, 7267 + [ALC269_FIXUP_ASUS_N7601ZM] = { 7268 + .type = HDA_FIXUP_VERBS, 7269 + .v.verbs = (const struct hda_verb[]) { 7270 + {0x20, AC_VERB_SET_COEF_INDEX, 0x62}, 7271 + {0x20, AC_VERB_SET_PROC_COEF, 0xa007}, 7272 + {0x20, AC_VERB_SET_COEF_INDEX, 0x10}, 7273 + {0x20, AC_VERB_SET_PROC_COEF, 0x8420}, 7274 + {0x20, AC_VERB_SET_COEF_INDEX, 0x0f}, 7275 + {0x20, AC_VERB_SET_PROC_COEF, 0x7774}, 7276 + { } 7277 + }, 7278 + .chained = true, 7279 + .chain_id = ALC269_FIXUP_ASUS_N7601ZM_PINS, 7260 7280 }, 7261 7281 [ALC269_FIXUP_LENOVO_EAPD] = { 7262 7282 .type = HDA_FIXUP_VERBS, ··· 9288 9262 SND_PCI_QUIRK(0x1028, 0x0a62, "Dell Precision 5560", ALC289_FIXUP_DUAL_SPK), 9289 9263 SND_PCI_QUIRK(0x1028, 0x0a9d, "Dell Latitude 5430", ALC269_FIXUP_DELL4_MIC_NO_PRESENCE), 9290 9264 SND_PCI_QUIRK(0x1028, 0x0a9e, "Dell Latitude 5430", ALC269_FIXUP_DELL4_MIC_NO_PRESENCE), 9291 - SND_PCI_QUIRK(0x1028, 0x0ac9, "Dell Precision 3260", ALC283_FIXUP_CHROME_BOOK), 9292 9265 SND_PCI_QUIRK(0x1028, 0x0b19, "Dell XPS 15 9520", ALC289_FIXUP_DUAL_SPK), 9293 9266 SND_PCI_QUIRK(0x1028, 0x0b1a, "Dell Precision 5570", ALC289_FIXUP_DUAL_SPK), 9294 9267 SND_PCI_QUIRK(0x1028, 0x0b37, "Dell Inspiron 16 Plus 7620 2-in-1", ALC295_FIXUP_DELL_INSPIRON_TOP_SPEAKERS), ··· 9468 9443 SND_PCI_QUIRK(0x103c, 0x8b47, "HP", ALC245_FIXUP_CS35L41_SPI_2_HP_GPIO_LED), 9469 9444 SND_PCI_QUIRK(0x103c, 0x8b5d, "HP", ALC236_FIXUP_HP_MUTE_LED_MICMUTE_VREF), 9470 9445 SND_PCI_QUIRK(0x103c, 0x8b5e, "HP", ALC236_FIXUP_HP_MUTE_LED_MICMUTE_VREF), 9446 + SND_PCI_QUIRK(0x103c, 0x8b65, "HP ProBook 455 15.6 inch G10 Notebook PC", ALC236_FIXUP_HP_MUTE_LED_MICMUTE_VREF), 9447 + SND_PCI_QUIRK(0x103c, 0x8b66, "HP", ALC236_FIXUP_HP_MUTE_LED_MICMUTE_VREF), 9471 9448 SND_PCI_QUIRK(0x103c, 0x8b7a, "HP", ALC236_FIXUP_HP_GPIO_LED), 9472 9449 SND_PCI_QUIRK(0x103c, 0x8b7d, "HP", ALC236_FIXUP_HP_GPIO_LED), 9473 9450 SND_PCI_QUIRK(0x103c, 0x8b87, "HP", ALC236_FIXUP_HP_GPIO_LED), ··· 9491 9464 SND_PCI_QUIRK(0x1043, 0x1271, "ASUS X430UN", ALC256_FIXUP_ASUS_MIC_NO_PRESENCE), 9492 9465 SND_PCI_QUIRK(0x1043, 0x1290, "ASUS X441SA", ALC233_FIXUP_EAPD_COEF_AND_MIC_NO_PRESENCE), 9493 9466 SND_PCI_QUIRK(0x1043, 0x12a0, "ASUS X441UV", ALC233_FIXUP_EAPD_COEF_AND_MIC_NO_PRESENCE), 9467 + SND_PCI_QUIRK(0x1043, 0x12a3, "Asus N7691ZM", ALC269_FIXUP_ASUS_N7601ZM), 9494 9468 SND_PCI_QUIRK(0x1043, 0x12af, "ASUS UX582ZS", ALC245_FIXUP_CS35L41_SPI_2), 9495 9469 SND_PCI_QUIRK(0x1043, 0x12e0, "ASUS X541SA", ALC256_FIXUP_ASUS_MIC), 9496 9470 SND_PCI_QUIRK(0x1043, 0x12f0, "ASUS X541UV", ALC256_FIXUP_ASUS_MIC), ··· 9689 9661 SND_PCI_QUIRK(0x17aa, 0x22f1, "Thinkpad", ALC287_FIXUP_CS35L41_I2C_2), 9690 9662 SND_PCI_QUIRK(0x17aa, 0x22f2, "Thinkpad", ALC287_FIXUP_CS35L41_I2C_2), 9691 9663 SND_PCI_QUIRK(0x17aa, 0x22f3, "Thinkpad", ALC287_FIXUP_CS35L41_I2C_2), 9664 + SND_PCI_QUIRK(0x17aa, 0x2318, "Thinkpad Z13 Gen2", ALC287_FIXUP_CS35L41_I2C_2), 9665 + SND_PCI_QUIRK(0x17aa, 0x2319, "Thinkpad Z16 Gen2", ALC287_FIXUP_CS35L41_I2C_2), 9666 + SND_PCI_QUIRK(0x17aa, 0x231a, "Thinkpad Z16 Gen2", ALC287_FIXUP_CS35L41_I2C_2), 9692 9667 SND_PCI_QUIRK(0x17aa, 0x30bb, "ThinkCentre AIO", ALC233_FIXUP_LENOVO_LINE2_MIC_HOTKEY), 9693 9668 SND_PCI_QUIRK(0x17aa, 0x30e2, "ThinkCentre AIO", ALC233_FIXUP_LENOVO_LINE2_MIC_HOTKEY), 9694 9669 SND_PCI_QUIRK(0x17aa, 0x310c, "ThinkCentre Station", ALC294_FIXUP_LENOVO_MIC_LOCATION), ··· 9744 9713 SND_PCI_QUIRK(0x17aa, 0x511e, "Thinkpad", ALC298_FIXUP_TPT470_DOCK), 9745 9714 SND_PCI_QUIRK(0x17aa, 0x511f, "Thinkpad", ALC298_FIXUP_TPT470_DOCK), 9746 9715 SND_PCI_QUIRK(0x17aa, 0x9e54, "LENOVO NB", ALC269_FIXUP_LENOVO_EAPD), 9716 + SND_PCI_QUIRK(0x17aa, 0x9e56, "Lenovo ZhaoYang CF4620Z", ALC286_FIXUP_SONY_MIC_NO_PRESENCE), 9747 9717 SND_PCI_QUIRK(0x1849, 0x1233, "ASRock NUC Box 1100", ALC233_FIXUP_NO_AUDIO_JACK), 9748 9718 SND_PCI_QUIRK(0x1849, 0xa233, "Positivo Master C6300", ALC269_FIXUP_HEADSET_MIC), 9749 9719 SND_PCI_QUIRK(0x19e5, 0x3204, "Huawei MACH-WX9", ALC256_FIXUP_HUAWEI_MACH_WX9_PINS),
+10
sound/pci/hda/patch_sigmatel.c
··· 1707 1707 }; 1708 1708 1709 1709 static const struct hda_pintbl ref92hd73xx_pin_configs[] = { 1710 + // Port A-H 1710 1711 { 0x0a, 0x02214030 }, 1711 1712 { 0x0b, 0x02a19040 }, 1712 1713 { 0x0c, 0x01a19020 }, ··· 1716 1715 { 0x0f, 0x01014010 }, 1717 1716 { 0x10, 0x01014020 }, 1718 1717 { 0x11, 0x01014030 }, 1718 + // CD in 1719 1719 { 0x12, 0x02319040 }, 1720 + // Digial Mic ins 1720 1721 { 0x13, 0x90a000f0 }, 1721 1722 { 0x14, 0x90a000f0 }, 1723 + // Digital outs 1722 1724 { 0x22, 0x01452050 }, 1723 1725 { 0x23, 0x01452050 }, 1724 1726 {} ··· 1762 1758 }; 1763 1759 1764 1760 static const struct hda_pintbl intel_dg45id_pin_configs[] = { 1761 + // Analog outputs 1765 1762 { 0x0a, 0x02214230 }, 1766 1763 { 0x0b, 0x02A19240 }, 1767 1764 { 0x0c, 0x01013214 }, ··· 1770 1765 { 0x0e, 0x01A19250 }, 1771 1766 { 0x0f, 0x01011212 }, 1772 1767 { 0x10, 0x01016211 }, 1768 + // Digital output 1769 + { 0x22, 0x01451380 }, 1770 + { 0x23, 0x40f000f0 }, 1773 1771 {} 1774 1772 }; 1775 1773 ··· 1963 1955 "DFI LanParty", STAC_92HD73XX_REF), 1964 1956 SND_PCI_QUIRK(PCI_VENDOR_ID_DFI, 0x3101, 1965 1957 "DFI LanParty", STAC_92HD73XX_REF), 1958 + SND_PCI_QUIRK(PCI_VENDOR_ID_INTEL, 0x5001, 1959 + "Intel DP45SG", STAC_92HD73XX_INTEL), 1966 1960 SND_PCI_QUIRK(PCI_VENDOR_ID_INTEL, 0x5002, 1967 1961 "Intel DG45ID", STAC_92HD73XX_INTEL), 1968 1962 SND_PCI_QUIRK(PCI_VENDOR_ID_INTEL, 0x5003,
+1 -1
sound/pci/ymfpci/ymfpci.c
··· 172 172 return -ENOENT; 173 173 } 174 174 175 - err = snd_card_new(&pci->dev, index[dev], id[dev], THIS_MODULE, 175 + err = snd_devm_card_new(&pci->dev, index[dev], id[dev], THIS_MODULE, 176 176 sizeof(*chip), &card); 177 177 if (err < 0) 178 178 return err;
+1 -1
sound/pci/ymfpci/ymfpci_main.c
··· 2160 2160 chip->work_base = ptr; 2161 2161 chip->work_base_addr = ptr_addr; 2162 2162 2163 - snd_BUG_ON(ptr + chip->work_size != 2163 + snd_BUG_ON(ptr + PAGE_ALIGN(chip->work_size) != 2164 2164 chip->work_ptr->area + chip->work_ptr->bytes); 2165 2165 2166 2166 snd_ymfpci_writel(chip, YDSXGR_PLAYCTRLBASE, chip->bank_base_playback_addr);
+2 -2
sound/soc/codecs/max98373.c
··· 31 31 MAX98373_GLOBAL_EN_MASK, 1); 32 32 usleep_range(30000, 31000); 33 33 break; 34 - case SND_SOC_DAPM_POST_PMD: 34 + case SND_SOC_DAPM_PRE_PMD: 35 35 regmap_update_bits(max98373->regmap, 36 36 MAX98373_R20FF_GLOBAL_SHDN, 37 37 MAX98373_GLOBAL_EN_MASK, 0); ··· 64 64 static const struct snd_soc_dapm_widget max98373_dapm_widgets[] = { 65 65 SND_SOC_DAPM_DAC_E("Amp Enable", "HiFi Playback", 66 66 MAX98373_R202B_PCM_RX_EN, 0, 0, max98373_dac_event, 67 - SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_POST_PMD), 67 + SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD), 68 68 SND_SOC_DAPM_MUX("DAI Sel Mux", SND_SOC_NOPM, 0, 0, 69 69 &max98373_dai_controls), 70 70 SND_SOC_DAPM_OUTPUT("BE_OUT"),
+8 -3
sound/soc/fsl/fsl_asrc_dma.c
··· 209 209 be_chan = soc_component_to_pcm(component_be)->chan[substream->stream]; 210 210 tmp_chan = be_chan; 211 211 } 212 - if (!tmp_chan) 213 - tmp_chan = dma_request_slave_channel(dev_be, tx ? "tx" : "rx"); 212 + if (!tmp_chan) { 213 + tmp_chan = dma_request_chan(dev_be, tx ? "tx" : "rx"); 214 + if (IS_ERR(tmp_chan)) { 215 + dev_err(dev, "failed to request DMA channel for Back-End\n"); 216 + return -EINVAL; 217 + } 218 + } 214 219 215 220 /* 216 221 * An EDMA DEV_TO_DEV channel is fixed and bound with DMA event of each 217 222 * peripheral, unlike SDMA channel that is allocated dynamically. So no 218 223 * need to configure dma_request and dma_request2, but get dma_chan of 219 - * Back-End device directly via dma_request_slave_channel. 224 + * Back-End device directly via dma_request_chan. 220 225 */ 221 226 if (!asrc->use_edma) { 222 227 /* Get DMA request of Back-End */
+1 -1
sound/soc/fsl/fsl_sai.c
··· 1544 1544 .use_imx_pcm = true, 1545 1545 .use_edma = true, 1546 1546 .fifo_depth = 64, 1547 - .pins = 1, 1547 + .pins = 4, 1548 1548 .reg_offset = 0, 1549 1549 .mclk0_is_mclk1 = false, 1550 1550 .flags = 0,
+6 -4
sound/soc/sof/ipc4-topology.c
··· 2349 2349 } 2350 2350 2351 2351 if (!src_fw_module || !sink_fw_module) { 2352 - /* The NULL module will print as "(efault)" */ 2353 - dev_err(sdev->dev, "source %s or sink %s widget weren't set up properly\n", 2354 - src_fw_module->man4_module_entry.name, 2355 - sink_fw_module->man4_module_entry.name); 2352 + dev_err(sdev->dev, 2353 + "cannot bind %s -> %s, no firmware module for: %s%s\n", 2354 + src_widget->widget->name, sink_widget->widget->name, 2355 + src_fw_module ? "" : " source", 2356 + sink_fw_module ? "" : " sink"); 2357 + 2356 2358 return -ENODEV; 2357 2359 } 2358 2360
+7 -1
sound/soc/sof/pm.c
··· 188 188 const struct sof_ipc_tplg_ops *tplg_ops = sof_ipc_get_ops(sdev, tplg); 189 189 pm_message_t pm_state; 190 190 u32 target_state = snd_sof_dsp_power_target(sdev); 191 + u32 old_state = sdev->dsp_power_state.state; 191 192 int ret; 192 193 193 194 /* do nothing if dsp suspend callback is not set */ ··· 198 197 if (runtime_suspend && !sof_ops(sdev)->runtime_suspend) 199 198 return 0; 200 199 201 - if (tplg_ops && tplg_ops->tear_down_all_pipelines) 200 + /* we need to tear down pipelines only if the DSP hardware is 201 + * active, which happens for PCI devices. if the device is 202 + * suspended, it is brought back to full power and then 203 + * suspended again 204 + */ 205 + if (tplg_ops && tplg_ops->tear_down_all_pipelines && (old_state == SOF_DSP_PM_D0)) 202 206 tplg_ops->tear_down_all_pipelines(sdev, false); 203 207 204 208 if (sdev->fw_state != SOF_FW_BOOT_COMPLETE)