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

Configure Feed

Select the types of activity you want to include in your feed.

ASoC: Merge fixes

So they can be used as a basis for new work.

+93 -12
+7
sound/soc/amd/yc/acp6x-mach.c
··· 269 269 DMI_MATCH(DMI_BOARD_NAME, "8A43"), 270 270 } 271 271 }, 272 + { 273 + .driver_data = &acp6x_card, 274 + .matches = { 275 + DMI_MATCH(DMI_BOARD_VENDOR, "HP"), 276 + DMI_MATCH(DMI_BOARD_NAME, "8A22"), 277 + } 278 + }, 272 279 {} 273 280 }; 274 281
+6
sound/soc/codecs/da7213.c
··· 2022 2022 return ret; 2023 2023 } 2024 2024 2025 + static void da7213_i2c_remove(struct i2c_client *i2c) 2026 + { 2027 + pm_runtime_disable(&i2c->dev); 2028 + } 2029 + 2025 2030 static int __maybe_unused da7213_runtime_suspend(struct device *dev) 2026 2031 { 2027 2032 struct da7213_priv *da7213 = dev_get_drvdata(dev); ··· 2070 2065 .pm = &da7213_pm, 2071 2066 }, 2072 2067 .probe_new = da7213_i2c_probe, 2068 + .remove = da7213_i2c_remove, 2073 2069 .id_table = da7213_i2c_id, 2074 2070 }; 2075 2071
+11 -6
sound/soc/codecs/hdac_hdmi.c
··· 436 436 return 0; 437 437 } 438 438 439 - static int hdac_hdmi_set_tdm_slot(struct snd_soc_dai *dai, 440 - unsigned int tx_mask, unsigned int rx_mask, 441 - int slots, int slot_width) 439 + static int hdac_hdmi_set_stream(struct snd_soc_dai *dai, 440 + void *stream, int direction) 442 441 { 443 442 struct hdac_hdmi_priv *hdmi = snd_soc_dai_get_drvdata(dai); 444 443 struct hdac_device *hdev = hdmi->hdev; 445 444 struct hdac_hdmi_dai_port_map *dai_map; 446 445 struct hdac_hdmi_pcm *pcm; 446 + struct hdac_stream *hstream; 447 447 448 - dev_dbg(&hdev->dev, "%s: strm_tag: %d\n", __func__, tx_mask); 448 + if (!stream) 449 + return -EINVAL; 450 + 451 + hstream = (struct hdac_stream *)stream; 452 + 453 + dev_dbg(&hdev->dev, "%s: strm_tag: %d\n", __func__, hstream->stream_tag); 449 454 450 455 dai_map = &hdmi->dai_map[dai->id]; 451 456 452 457 pcm = hdac_hdmi_get_pcm_from_cvt(hdmi, dai_map->cvt); 453 458 454 459 if (pcm) 455 - pcm->stream_tag = (tx_mask << 4); 460 + pcm->stream_tag = (hstream->stream_tag << 4); 456 461 457 462 return 0; 458 463 } ··· 1549 1544 .startup = hdac_hdmi_pcm_open, 1550 1545 .shutdown = hdac_hdmi_pcm_close, 1551 1546 .hw_params = hdac_hdmi_set_hw_params, 1552 - .set_tdm_slot = hdac_hdmi_set_tdm_slot, 1547 + .set_stream = hdac_hdmi_set_stream, 1553 1548 }; 1554 1549 1555 1550 /*
+2 -2
sound/soc/codecs/lpass-rx-macro.c
··· 3688 3688 regcache_cache_only(rx->regmap, true); 3689 3689 regcache_mark_dirty(rx->regmap); 3690 3690 3691 - clk_disable_unprepare(rx->mclk); 3692 - clk_disable_unprepare(rx->npl); 3693 3691 clk_disable_unprepare(rx->fsgen); 3692 + clk_disable_unprepare(rx->npl); 3693 + clk_disable_unprepare(rx->mclk); 3694 3694 3695 3695 return 0; 3696 3696 }
+2 -2
sound/soc/codecs/lpass-tx-macro.c
··· 2104 2104 regcache_cache_only(tx->regmap, true); 2105 2105 regcache_mark_dirty(tx->regmap); 2106 2106 2107 - clk_disable_unprepare(tx->mclk); 2108 - clk_disable_unprepare(tx->npl); 2109 2107 clk_disable_unprepare(tx->fsgen); 2108 + clk_disable_unprepare(tx->npl); 2109 + clk_disable_unprepare(tx->mclk); 2110 2110 2111 2111 return 0; 2112 2112 }
+2 -2
sound/soc/codecs/lpass-wsa-macro.c
··· 2514 2514 regcache_cache_only(wsa->regmap, true); 2515 2515 regcache_mark_dirty(wsa->regmap); 2516 2516 2517 - clk_disable_unprepare(wsa->mclk); 2518 - clk_disable_unprepare(wsa->npl); 2519 2517 clk_disable_unprepare(wsa->fsgen); 2518 + clk_disable_unprepare(wsa->npl); 2519 + clk_disable_unprepare(wsa->mclk); 2520 2520 2521 2521 return 0; 2522 2522 }
+12
sound/soc/intel/boards/bytcr_rt5640.c
··· 533 533 534 534 /* Please keep this list alphabetically sorted */ 535 535 static const struct dmi_system_id byt_rt5640_quirk_table[] = { 536 + { /* Acer Iconia One 7 B1-750 */ 537 + .matches = { 538 + DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Insyde"), 539 + DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "VESPA2"), 540 + }, 541 + .driver_data = (void *)(BYT_RT5640_DMIC1_MAP | 542 + BYT_RT5640_JD_SRC_JD1_IN4P | 543 + BYT_RT5640_OVCD_TH_1500UA | 544 + BYT_RT5640_OVCD_SF_0P75 | 545 + BYT_RT5640_SSP0_AIF1 | 546 + BYT_RT5640_MCLK_EN), 547 + }, 536 548 { /* Acer Iconia Tab 8 W1-810 */ 537 549 .matches = { 538 550 DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Acer"),
+11
sound/soc/intel/boards/sof_sdw.c
··· 213 213 SOF_SDW_PCH_DMIC | 214 214 RT711_JD1), 215 215 }, 216 + { 217 + /* NUC15 'Rooks County' LAPRC510 and LAPRC710 skews */ 218 + .callback = sof_sdw_quirk_cb, 219 + .matches = { 220 + DMI_MATCH(DMI_SYS_VENDOR, "Intel(R) Client Systems"), 221 + DMI_MATCH(DMI_PRODUCT_NAME, "LAPRC"), 222 + }, 223 + .driver_data = (void *)(SOF_SDW_TGL_HDMI | 224 + SOF_SDW_PCH_DMIC | 225 + RT711_JD2_100K), 226 + }, 216 227 /* TigerLake-SDCA devices */ 217 228 { 218 229 .callback = sof_sdw_quirk_cb,
+20
sound/soc/intel/common/soc-acpi-intel-adl-match.c
··· 354 354 {} 355 355 }; 356 356 357 + static const struct snd_soc_acpi_link_adr adl_sdw_rt711_link0_rt1316_link2[] = { 358 + { 359 + .mask = BIT(0), 360 + .num_adr = ARRAY_SIZE(rt711_sdca_0_adr), 361 + .adr_d = rt711_sdca_0_adr, 362 + }, 363 + { 364 + .mask = BIT(2), 365 + .num_adr = ARRAY_SIZE(rt1316_2_single_adr), 366 + .adr_d = rt1316_2_single_adr, 367 + }, 368 + {} 369 + }; 370 + 357 371 static const struct snd_soc_acpi_adr_device mx8373_2_adr[] = { 358 372 { 359 373 .adr = 0x000223019F837300ull, ··· 637 623 .links = adl_sdw_rt711_link0_rt1316_link3, 638 624 .drv_name = "sof_sdw", 639 625 .sof_tplg_filename = "sof-adl-rt711-l0-rt1316-l3.tplg", 626 + }, 627 + { 628 + .link_mask = 0x5, /* 2 active links required */ 629 + .links = adl_sdw_rt711_link0_rt1316_link2, 630 + .drv_name = "sof_sdw", 631 + .sof_tplg_filename = "sof-adl-rt711-l0-rt1316-l2.tplg", 640 632 }, 641 633 { 642 634 .link_mask = 0x1, /* link0 required */
+4
sound/soc/soc-pcm.c
··· 1662 1662 struct snd_pcm_hardware *hw = &runtime->hw; 1663 1663 struct snd_soc_dai *dai; 1664 1664 int stream = substream->stream; 1665 + u64 formats = hw->formats; 1665 1666 int i; 1666 1667 1667 1668 soc_pcm_hw_init(hw); 1669 + 1670 + if (formats) 1671 + hw->formats &= formats; 1668 1672 1669 1673 for_each_rtd_cpu_dais(fe, i, dai) { 1670 1674 struct snd_soc_pcm_stream *cpu_stream;
+8
sound/soc/sof/ipc4-topology.c
··· 2348 2348 return 0; 2349 2349 } 2350 2350 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); 2356 + return -ENODEV; 2357 + } 2358 + 2351 2359 sroute->src_queue_id = sof_ipc4_get_queue_id(src_widget, sink_widget, 2352 2360 SOF_PIN_TYPE_OUTPUT); 2353 2361 if (sroute->src_queue_id < 0) {
+8
sound/soc/sof/ipc4.c
··· 405 405 static int sof_ipc4_set_get_data(struct snd_sof_dev *sdev, void *data, 406 406 size_t payload_bytes, bool set) 407 407 { 408 + const struct sof_dsp_power_state target_state = { 409 + .state = SOF_DSP_PM_D0, 410 + }; 408 411 size_t payload_limit = sdev->ipc->max_payload_size; 409 412 struct sof_ipc4_msg *ipc4_msg = data; 410 413 struct sof_ipc4_msg tx = {{ 0 }}; ··· 437 434 tx.extension |= SOF_IPC4_MOD_EXT_MSG_SIZE(payload_bytes); 438 435 439 436 tx.extension |= SOF_IPC4_MOD_EXT_MSG_FIRST_BLOCK(1); 437 + 438 + /* ensure the DSP is in D0i0 before sending IPC */ 439 + ret = snd_sof_dsp_set_power_state(sdev, &target_state); 440 + if (ret < 0) 441 + return ret; 440 442 441 443 /* Serialise IPC TX */ 442 444 mutex_lock(&sdev->ipc->tx_mutex);