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 up fixes

Merge branch 'for-7.0' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into asoc-7.1

to get fixes into our development branch and resolve interactions with
the match tables.

+128 -12
+1
Documentation/devicetree/bindings/sound/rockchip-spdif.yaml
··· 33 33 - const: rockchip,rk3066-spdif 34 34 - items: 35 35 - enum: 36 + - rockchip,rk3576-spdif 36 37 - rockchip,rk3588-spdif 37 38 - const: rockchip,rk3568-spdif 38 39
+1 -1
Documentation/devicetree/bindings/sound/st,stm32-sai.yaml
··· 164 164 properties: 165 165 compatible: 166 166 contains: 167 - const: st,stm32mph7-sai 167 + const: st,stm32h7-sai 168 168 then: 169 169 properties: 170 170 clocks:
+14 -1
sound/soc/amd/acp-config.c
··· 23 23 24 24 static int acp_quirk_data; 25 25 26 + static const struct dmi_system_id acp70_acpi_flag_override_table[] = { 27 + { 28 + .matches = { 29 + DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK COMPUTER INC."), 30 + DMI_MATCH(DMI_PRODUCT_NAME, "HN7306EA"), 31 + }, 32 + }, 33 + {} 34 + }; 35 + 26 36 static const struct config_entry config_table[] = { 27 37 { 28 38 .flags = FLAG_AMD_SOF, ··· 196 186 */ 197 187 if (!pci->revision) 198 188 return 0; 199 - else if (pci->revision >= ACP_7_0_REV) 189 + else if (pci->revision >= ACP_7_0_REV) { 190 + if (dmi_check_system(acp70_acpi_flag_override_table)) 191 + return 0; 200 192 return snd_amd_acp_acpi_find_config(pci); 193 + } 201 194 202 195 for (i = 0; i < ARRAY_SIZE(config_table); i++, table++) { 203 196 if (table->device != device)
+8
sound/soc/amd/acp/acp-sdw-legacy-mach.c
··· 111 111 }, 112 112 .driver_data = (void *)(ASOC_SDW_CODEC_SPKR), 113 113 }, 114 + { 115 + .callback = soc_sdw_quirk_cb, 116 + .matches = { 117 + DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK COMPUTER INC."), 118 + DMI_MATCH(DMI_PRODUCT_NAME, "HN7306EA"), 119 + }, 120 + .driver_data = (void *)(ASOC_SDW_ACP_DMIC), 121 + }, 114 122 {} 115 123 }; 116 124
+61
sound/soc/amd/acp/amd-acp70-acpi-match.c
··· 69 69 }, 70 70 }; 71 71 72 + static const struct snd_soc_acpi_endpoint jack_dmic_endpoints[] = { 73 + /* Jack Endpoint */ 74 + { 75 + .num = 0, 76 + .aggregated = 0, 77 + .group_position = 0, 78 + .group_id = 0, 79 + }, 80 + /* DMIC Endpoint */ 81 + { 82 + /* 83 + * rt721 endpoint #2 maps to AIF3 (internal DMIC capture). 84 + * Endpoint #1 is AIF2 amp path and is handled by external amps 85 + * on this platform. 86 + */ 87 + .num = 2, 88 + .aggregated = 0, 89 + .group_position = 0, 90 + .group_id = 0, 91 + }, 92 + }; 93 + 72 94 static const struct snd_soc_acpi_adr_device rt712_vb_1_group1_adr[] = { 73 95 { 74 96 .adr = 0x000130025D071201ull, ··· 585 563 {} 586 564 }; 587 565 566 + static const struct snd_soc_acpi_adr_device rt721_l1u0_tas2783x2_l1u8b_adr[] = { 567 + { 568 + .adr = 0x000130025D072101ull, 569 + /* 570 + * On this platform speakers are provided by two TAS2783 amps. 571 + * Keep rt721 as UAJ + DMIC only. 572 + */ 573 + .num_endpoints = ARRAY_SIZE(jack_dmic_endpoints), 574 + .endpoints = jack_dmic_endpoints, 575 + .name_prefix = "rt721", 576 + }, 577 + { 578 + .adr = 0x0001380102000001ull, 579 + .num_endpoints = 1, 580 + .endpoints = &spk_l_endpoint, 581 + .name_prefix = "tas2783-1", 582 + }, 583 + { 584 + .adr = 0x00013B0102000001ull, 585 + .num_endpoints = 1, 586 + .endpoints = &spk_r_endpoint, 587 + .name_prefix = "tas2783-2", 588 + }, 589 + }; 590 + 591 + static const struct snd_soc_acpi_link_adr acp70_rt721_l1u0_tas2783x2_l1u8b[] = { 592 + { 593 + .mask = BIT(1), 594 + .num_adr = ARRAY_SIZE(rt721_l1u0_tas2783x2_l1u8b_adr), 595 + .adr_d = rt721_l1u0_tas2783x2_l1u8b_adr, 596 + }, 597 + {} 598 + }; 599 + 588 600 struct snd_soc_acpi_mach snd_soc_acpi_amd_acp70_sdw_machines[] = { 589 601 { 590 602 .link_mask = BIT(0) | BIT(1), ··· 704 648 .link_mask = BIT(1), 705 649 .links = acp70_alc712_vb_l1, 706 650 .machine_check = snd_soc_acpi_amd_sdca_is_device_rt712_vb, 651 + .drv_name = "amd_sdw", 652 + }, 653 + { 654 + .link_mask = BIT(1), 655 + .links = acp70_rt721_l1u0_tas2783x2_l1u8b, 707 656 .drv_name = "amd_sdw", 708 657 }, 709 658 {},
+21
sound/soc/amd/yc/acp6x-mach.c
··· 727 727 { 728 728 .driver_data = &acp6x_card, 729 729 .matches = { 730 + DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK COMPUTER INC."), 731 + DMI_MATCH(DMI_BOARD_NAME, "BM1403CDA"), 732 + } 733 + }, 734 + { 735 + .driver_data = &acp6x_card, 736 + .matches = { 737 + DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK COMPUTER INC."), 738 + DMI_MATCH(DMI_BOARD_NAME, "BM1403CDA"), 739 + } 740 + }, 741 + { 742 + .driver_data = &acp6x_card, 743 + .matches = { 730 744 DMI_MATCH(DMI_BOARD_VENDOR, "Micro-Star International Co., Ltd."), 731 745 DMI_MATCH(DMI_PRODUCT_NAME, "Thin A15 B7VF"), 746 + } 747 + }, 748 + { 749 + .driver_data = &acp6x_card, 750 + .matches = { 751 + DMI_MATCH(DMI_BOARD_VENDOR, "Micro-Star International Co., Ltd."), 752 + DMI_MATCH(DMI_PRODUCT_NAME, "Thin A15 B7VE"), 732 753 } 733 754 }, 734 755 {}
+4 -2
sound/soc/codecs/sma1307.c
··· 1759 1759 sma1307->set.mode_size * 2 * sizeof(int), 1760 1760 GFP_KERNEL); 1761 1761 if (!sma1307->set.mode_set[i]) { 1762 - for (int j = 0; j < i; j++) 1763 - kfree(sma1307->set.mode_set[j]); 1762 + for (int j = 0; j < i; j++) { 1763 + devm_kfree(sma1307->dev, sma1307->set.mode_set[j]); 1764 + sma1307->set.mode_set[j] = NULL; 1765 + } 1764 1766 sma1307->set.status = false; 1765 1767 return; 1766 1768 }
+3
sound/soc/codecs/tas2781-fmwlib.c
··· 2550 2550 int k = i * (cali_data->cali_dat_sz_per_dev + 1); 2551 2551 int rc; 2552 2552 2553 + if (!data || !cali_data->total_sz) 2554 + return; 2555 + 2553 2556 if (data[k] != i) { 2554 2557 dev_err(priv->dev, "%s: no cal-data for dev %d from usr-spc\n", 2555 2558 __func__, i);
+1 -1
sound/soc/codecs/wcd934x.c
··· 2172 2172 u32 def_dmic_rate, dmic_clk_drv; 2173 2173 int ret; 2174 2174 2175 - ret = wcd_dt_parse_mbhc_data(comp->dev, &wcd->mbhc_cfg); 2175 + ret = wcd_dt_parse_micbias_info(&wcd->common); 2176 2176 if (ret) 2177 2177 return ret; 2178 2178
+2
sound/soc/fsl/imx-card.c
··· 710 710 link->ops = &imx_aif_ops; 711 711 } 712 712 713 + playback_only = false; 714 + capture_only = false; 713 715 graph_util_parse_link_direction(np, &playback_only, &capture_only); 714 716 link->playback_only = playback_only; 715 717 link->capture_only = capture_only;
+2 -2
sound/soc/generic/simple-card-utils.c
··· 1202 1202 bool is_playback_only = of_property_read_bool(np, "playback-only"); 1203 1203 bool is_capture_only = of_property_read_bool(np, "capture-only"); 1204 1204 1205 - if (np && playback_only) 1205 + if (playback_only && is_playback_only) 1206 1206 *playback_only = is_playback_only; 1207 - if (np && capture_only) 1207 + if (capture_only && is_capture_only) 1208 1208 *capture_only = is_capture_only; 1209 1209 } 1210 1210 EXPORT_SYMBOL_GPL(graph_util_parse_link_direction);
+9 -1
sound/soc/intel/catpt/device.c
··· 281 281 if (IS_ERR(cdev->pci_ba)) 282 282 return PTR_ERR(cdev->pci_ba); 283 283 284 - /* alloc buffer for storing DRAM context during dx transitions */ 284 + /* 285 + * As per design HOST is responsible for preserving firmware's runtime 286 + * context during D0 -> D3 -> D0 transitions. Addresses used for DMA 287 + * to/from HOST memory shall be outside the reserved range of 0xFFFxxxxx. 288 + */ 289 + ret = dma_coerce_mask_and_coherent(cdev->dev, DMA_BIT_MASK(31)); 290 + if (ret) 291 + return ret; 292 + 285 293 cdev->dxbuf_vaddr = dmam_alloc_coherent(dev, catpt_dram_size(cdev), 286 294 &cdev->dxbuf_paddr, GFP_KERNEL); 287 295 if (!cdev->dxbuf_vaddr)
-3
sound/soc/intel/catpt/dsp.c
··· 125 125 dmac->dev = cdev->dev; 126 126 dmac->irq = cdev->irq; 127 127 128 - ret = dma_coerce_mask_and_coherent(cdev->dev, DMA_BIT_MASK(31)); 129 - if (ret) 130 - return ret; 131 128 /* 132 129 * Caller is responsible for putting device in D0 to allow 133 130 * for I/O and memory access before probing DW.
+1 -1
sound/soc/sof/topology.c
··· 736 736 asize = le32_to_cpu(array->size); 737 737 738 738 /* validate asize */ 739 - if (asize < 0) { /* FIXME: A zero-size array makes no sense */ 739 + if (asize < sizeof(*array)) { 740 740 dev_err(scomp->dev, "error: invalid array size 0x%x\n", 741 741 asize); 742 742 return -EINVAL;