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

Pull 6.9-rc devel branch for further updates.

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

+119 -37
+8 -1
sound/core/init.c
··· 516 516 } 517 517 } 518 518 519 + #ifdef CONFIG_PM 520 + /* wake up sleepers here before other callbacks for avoiding potential 521 + * deadlocks with other locks (e.g. in kctls); 522 + * then this notifies the shutdown and sleepers would abort immediately 523 + */ 524 + wake_up_all(&card->power_sleep); 525 + #endif 526 + 519 527 /* notify all connected devices about disconnection */ 520 528 /* at this point, they cannot respond to any calls except release() */ 521 529 ··· 551 543 } 552 544 553 545 #ifdef CONFIG_PM 554 - wake_up(&card->power_sleep); 555 546 snd_power_sync_ref(card); 556 547 #endif 557 548 }
+82 -16
sound/soc/amd/acp/acp-legacy-common.c
··· 358 358 } 359 359 EXPORT_SYMBOL_NS_GPL(smn_read, SND_SOC_ACP_COMMON); 360 360 361 - int check_acp_pdm(struct pci_dev *pci, struct acp_chip_info *chip) 361 + static void check_acp3x_config(struct acp_chip_info *chip) 362 362 { 363 - struct acpi_device *pdm_dev; 364 - const union acpi_object *obj; 365 - u32 pdm_addr, val; 363 + u32 val; 364 + 365 + val = readl(chip->base + ACP3X_PIN_CONFIG); 366 + switch (val) { 367 + case ACP_CONFIG_4: 368 + chip->is_i2s_config = true; 369 + chip->is_pdm_config = true; 370 + break; 371 + default: 372 + chip->is_pdm_config = true; 373 + break; 374 + } 375 + } 376 + 377 + static void check_acp6x_config(struct acp_chip_info *chip) 378 + { 379 + u32 val; 366 380 367 381 val = readl(chip->base + ACP_PIN_CONFIG); 368 382 switch (val) { ··· 385 371 case ACP_CONFIG_6: 386 372 case ACP_CONFIG_7: 387 373 case ACP_CONFIG_8: 388 - case ACP_CONFIG_10: 389 374 case ACP_CONFIG_11: 375 + case ACP_CONFIG_14: 376 + chip->is_pdm_config = true; 377 + break; 378 + case ACP_CONFIG_9: 379 + chip->is_i2s_config = true; 380 + break; 381 + case ACP_CONFIG_10: 390 382 case ACP_CONFIG_12: 391 383 case ACP_CONFIG_13: 392 - case ACP_CONFIG_14: 384 + chip->is_i2s_config = true; 385 + chip->is_pdm_config = true; 393 386 break; 394 387 default: 395 - return -EINVAL; 388 + break; 396 389 } 390 + } 391 + 392 + static void check_acp70_config(struct acp_chip_info *chip) 393 + { 394 + u32 val; 395 + 396 + val = readl(chip->base + ACP_PIN_CONFIG); 397 + switch (val) { 398 + case ACP_CONFIG_4: 399 + case ACP_CONFIG_5: 400 + case ACP_CONFIG_6: 401 + case ACP_CONFIG_7: 402 + case ACP_CONFIG_8: 403 + case ACP_CONFIG_11: 404 + case ACP_CONFIG_14: 405 + case ACP_CONFIG_17: 406 + case ACP_CONFIG_18: 407 + chip->is_pdm_config = true; 408 + break; 409 + case ACP_CONFIG_9: 410 + chip->is_i2s_config = true; 411 + break; 412 + case ACP_CONFIG_10: 413 + case ACP_CONFIG_12: 414 + case ACP_CONFIG_13: 415 + case ACP_CONFIG_19: 416 + case ACP_CONFIG_20: 417 + chip->is_i2s_config = true; 418 + chip->is_pdm_config = true; 419 + break; 420 + default: 421 + break; 422 + } 423 + } 424 + 425 + void check_acp_config(struct pci_dev *pci, struct acp_chip_info *chip) 426 + { 427 + struct acpi_device *pdm_dev; 428 + const union acpi_object *obj; 429 + u32 pdm_addr; 397 430 398 431 switch (chip->acp_rev) { 399 432 case ACP3X_DEV: 400 433 pdm_addr = ACP_RENOIR_PDM_ADDR; 434 + check_acp3x_config(chip); 401 435 break; 402 436 case ACP6X_DEV: 403 437 pdm_addr = ACP_REMBRANDT_PDM_ADDR; 438 + check_acp6x_config(chip); 404 439 break; 405 440 case ACP63_DEV: 406 441 pdm_addr = ACP63_PDM_ADDR; 442 + check_acp6x_config(chip); 407 443 break; 408 444 case ACP70_DEV: 409 445 pdm_addr = ACP70_PDM_ADDR; 446 + check_acp70_config(chip); 410 447 break; 411 448 default: 412 - return -EINVAL; 449 + break; 413 450 } 414 451 415 - pdm_dev = acpi_find_child_device(ACPI_COMPANION(&pci->dev), pdm_addr, 0); 416 - if (pdm_dev) { 417 - if (!acpi_dev_get_property(pdm_dev, "acp-audio-device-type", 418 - ACPI_TYPE_INTEGER, &obj) && 419 - obj->integer.value == pdm_addr) 420 - return 0; 452 + if (chip->is_pdm_config) { 453 + pdm_dev = acpi_find_child_device(ACPI_COMPANION(&pci->dev), pdm_addr, 0); 454 + if (pdm_dev) { 455 + if (!acpi_dev_get_property(pdm_dev, "acp-audio-device-type", 456 + ACPI_TYPE_INTEGER, &obj) && 457 + obj->integer.value == pdm_addr) 458 + chip->is_pdm_dev = true; 459 + } 421 460 } 422 - return -ENODEV; 423 461 } 424 - EXPORT_SYMBOL_NS_GPL(check_acp_pdm, SND_SOC_ACP_COMMON); 462 + EXPORT_SYMBOL_NS_GPL(check_acp_config, SND_SOC_ACP_COMMON); 425 463 426 464 MODULE_LICENSE("Dual BSD/GPL");
+4 -5
sound/soc/amd/acp/acp-pci.c
··· 100 100 ret = -EINVAL; 101 101 goto release_regions; 102 102 } 103 - 104 103 dmic_dev = platform_device_register_data(dev, "dmic-codec", PLATFORM_DEVID_NONE, NULL, 0); 105 104 if (IS_ERR(dmic_dev)) { 106 105 dev_err(dev, "failed to create DMIC device\n"); ··· 118 119 if (ret) 119 120 goto unregister_dmic_dev; 120 121 122 + check_acp_config(pci, chip); 123 + if (!chip->is_pdm_dev && !chip->is_i2s_config) 124 + goto skip_pdev_creation; 125 + 121 126 res = devm_kcalloc(&pci->dev, num_res, sizeof(struct resource), GFP_KERNEL); 122 127 if (!res) { 123 128 ret = -ENOMEM; ··· 138 135 res[i].end = res[i].start; 139 136 } 140 137 } 141 - 142 - ret = check_acp_pdm(pci, chip); 143 - if (ret < 0) 144 - goto skip_pdev_creation; 145 138 146 139 chip->flag = flag; 147 140 memset(&pdevinfo, 0, sizeof(pdevinfo));
+9 -1
sound/soc/amd/acp/amd.h
··· 138 138 void __iomem *base; /* ACP memory PCI base */ 139 139 struct platform_device *chip_pdev; 140 140 unsigned int flag; /* Distinguish b/w Legacy or Only PDM */ 141 + bool is_pdm_dev; /* flag set to true when ACP PDM controller exists */ 142 + bool is_pdm_config; /* flag set to true when PDM configuration is selected from BIOS */ 143 + bool is_i2s_config; /* flag set to true when I2S configuration is selected from BIOS */ 141 144 }; 142 145 143 146 struct acp_stream { ··· 215 212 ACP_CONFIG_13, 216 213 ACP_CONFIG_14, 217 214 ACP_CONFIG_15, 215 + ACP_CONFIG_16, 216 + ACP_CONFIG_17, 217 + ACP_CONFIG_18, 218 + ACP_CONFIG_19, 219 + ACP_CONFIG_20, 218 220 }; 219 221 220 222 extern const struct snd_soc_dai_ops asoc_acp_cpu_dai_ops; ··· 248 240 int restore_acp_i2s_params(struct snd_pcm_substream *substream, 249 241 struct acp_dev_data *adata, struct acp_stream *stream); 250 242 251 - int check_acp_pdm(struct pci_dev *pci, struct acp_chip_info *chip); 243 + void check_acp_config(struct pci_dev *pci, struct acp_chip_info *chip); 252 244 253 245 static inline u64 acp_get_byte_count(struct acp_dev_data *adata, int dai_id, int direction) 254 246 {
+1
sound/soc/amd/acp/chip_offset_byte.h
··· 20 20 #define ACP_SOFT_RESET 0x1000 21 21 #define ACP_CONTROL 0x1004 22 22 #define ACP_PIN_CONFIG 0x1440 23 + #define ACP3X_PIN_CONFIG 0x1400 23 24 24 25 #define ACP_EXTERNAL_INTR_REG_ADDR(adata, offset, ctrl) \ 25 26 (adata->acp_base + adata->rsrc->irq_reg_offset + offset + (ctrl * 0x04))
+1 -1
sound/soc/generic/audio-graph-card2.c
··· 1197 1197 { 1198 1198 struct device_node *ports = of_get_parent(lnk); 1199 1199 struct device_node *port0 = lnk; 1200 - struct device_node *port1 = of_get_next_child(ports, lnk); 1200 + struct device_node *port1 = of_get_next_child(ports, of_node_get(lnk)); 1201 1201 struct device_node *ep0 = port_to_endpoint(port0); 1202 1202 struct device_node *ep1 = port_to_endpoint(port1); 1203 1203 struct device_node *codec0 = of_graph_get_remote_port(ep0);
+1 -1
sound/soc/intel/avs/boards/es8336.c
··· 113 113 if (!pins) 114 114 return -ENOMEM; 115 115 116 - ret = snd_soc_card_jack_new_pins(card, "Headset", SND_JACK_HEADSET | SND_JACK_BTN_0, 116 + ret = snd_soc_card_jack_new_pins(card, "Headset Jack", SND_JACK_HEADSET | SND_JACK_BTN_0, 117 117 &data->jack, pins, num_pins); 118 118 if (ret) 119 119 return ret;
+1 -1
sound/soc/intel/avs/boards/nau8825.c
··· 96 96 * 4 buttons here map to the google Reference headset. 97 97 * The use of these buttons can be decided by the user space. 98 98 */ 99 - ret = snd_soc_card_jack_new_pins(card, "Headset", SND_JACK_HEADSET | SND_JACK_BTN_0 | 99 + ret = snd_soc_card_jack_new_pins(card, "Headset Jack", SND_JACK_HEADSET | SND_JACK_BTN_0 | 100 100 SND_JACK_BTN_1 | SND_JACK_BTN_2 | SND_JACK_BTN_3, 101 101 jack, pins, num_pins); 102 102 if (ret)
+2 -1
sound/soc/intel/avs/boards/rt274.c
··· 102 102 if (!pins) 103 103 return -ENOMEM; 104 104 105 - ret = snd_soc_card_jack_new_pins(card, "Headset", SND_JACK_HEADSET, jack, pins, num_pins); 105 + ret = snd_soc_card_jack_new_pins(card, "Headset Jack", SND_JACK_HEADSET, jack, pins, 106 + num_pins); 106 107 if (ret) 107 108 return ret; 108 109
+2 -2
sound/soc/intel/avs/boards/rt286.c
··· 63 63 if (!pins) 64 64 return -ENOMEM; 65 65 66 - ret = snd_soc_card_jack_new_pins(card, "Headset", SND_JACK_HEADSET | SND_JACK_BTN_0, jack, 67 - pins, num_pins); 66 + ret = snd_soc_card_jack_new_pins(card, "Headset Jack", SND_JACK_HEADSET | SND_JACK_BTN_0, 67 + jack, pins, num_pins); 68 68 if (ret) 69 69 return ret; 70 70
+2 -2
sound/soc/intel/avs/boards/rt298.c
··· 74 74 if (!pins) 75 75 return -ENOMEM; 76 76 77 - ret = snd_soc_card_jack_new_pins(card, "Headset", SND_JACK_HEADSET | SND_JACK_BTN_0, jack, 78 - pins, num_pins); 77 + ret = snd_soc_card_jack_new_pins(card, "Headset Jack", SND_JACK_HEADSET | SND_JACK_BTN_0, 78 + jack, pins, num_pins); 79 79 if (ret) 80 80 return ret; 81 81
+2 -2
sound/soc/mediatek/mt8192/mt8192-dai-tdm.c
··· 566 566 tdm_con |= 1 << DELAY_DATA_SFT; 567 567 tdm_con |= get_tdm_lrck_width(format) << LRCK_TDM_WIDTH_SFT; 568 568 } else if (tdm_priv->tdm_out_mode == TDM_OUT_DSP_A) { 569 - tdm_con |= 0 << DELAY_DATA_SFT; 569 + tdm_con |= 1 << DELAY_DATA_SFT; 570 570 tdm_con |= 0 << LRCK_TDM_WIDTH_SFT; 571 571 } else if (tdm_priv->tdm_out_mode == TDM_OUT_DSP_B) { 572 - tdm_con |= 1 << DELAY_DATA_SFT; 572 + tdm_con |= 0 << DELAY_DATA_SFT; 573 573 tdm_con |= 0 << LRCK_TDM_WIDTH_SFT; 574 574 } 575 575
+4 -4
sound/soc/sof/amd/Makefile
··· 12 12 snd-sof-amd-acp63-objs := pci-acp63.o acp63.o 13 13 14 14 obj-$(CONFIG_SND_SOC_SOF_AMD_COMMON) += snd-sof-amd-acp.o 15 - obj-$(CONFIG_SND_SOC_SOF_AMD_RENOIR) +=snd-sof-amd-renoir.o 16 - obj-$(CONFIG_SND_SOC_SOF_AMD_REMBRANDT) +=snd-sof-amd-rembrandt.o 17 - obj-$(CONFIG_SND_SOC_SOF_AMD_VANGOGH) +=snd-sof-amd-vangogh.o 18 - obj-$(CONFIG_SND_SOC_SOF_AMD_ACP63) +=snd-sof-amd-acp63.o 15 + obj-$(CONFIG_SND_SOC_SOF_AMD_RENOIR) += snd-sof-amd-renoir.o 16 + obj-$(CONFIG_SND_SOC_SOF_AMD_REMBRANDT) += snd-sof-amd-rembrandt.o 17 + obj-$(CONFIG_SND_SOC_SOF_AMD_VANGOGH) += snd-sof-amd-vangogh.o 18 + obj-$(CONFIG_SND_SOC_SOF_AMD_ACP63) += snd-sof-amd-acp63.o