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

Get ready for 6.15 merge window

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

+131 -72
+4
Documentation/devicetree/bindings/sound/fsl,sai.yaml
··· 41 41 - fsl,imx93-sai 42 42 - fsl,imx95-sai 43 43 - fsl,vf610-sai 44 + - items: 45 + - enum: 46 + - fsl,imx94-sai 47 + - const: fsl,imx95-sai 44 48 45 49 reg: 46 50 maxItems: 1
+77 -70
sound/core/timer.c
··· 1515 1515 id->subdevice = timer->tmr_subdevice; 1516 1516 } 1517 1517 1518 - static int snd_timer_user_next_device(struct snd_timer_id __user *_tid) 1518 + static void get_next_device(struct snd_timer_id *id) 1519 1519 { 1520 - struct snd_timer_id id; 1521 1520 struct snd_timer *timer; 1522 1521 struct list_head *p; 1523 1522 1524 - if (copy_from_user(&id, _tid, sizeof(id))) 1525 - return -EFAULT; 1526 - guard(mutex)(&register_mutex); 1527 - if (id.dev_class < 0) { /* first item */ 1523 + if (id->dev_class < 0) { /* first item */ 1528 1524 if (list_empty(&snd_timer_list)) 1529 - snd_timer_user_zero_id(&id); 1525 + snd_timer_user_zero_id(id); 1530 1526 else { 1531 1527 timer = list_entry(snd_timer_list.next, 1532 1528 struct snd_timer, device_list); 1533 - snd_timer_user_copy_id(&id, timer); 1529 + snd_timer_user_copy_id(id, timer); 1534 1530 } 1535 1531 } else { 1536 - switch (id.dev_class) { 1532 + switch (id->dev_class) { 1537 1533 case SNDRV_TIMER_CLASS_GLOBAL: 1538 - id.device = id.device < 0 ? 0 : id.device + 1; 1534 + id->device = id->device < 0 ? 0 : id->device + 1; 1539 1535 list_for_each(p, &snd_timer_list) { 1540 1536 timer = list_entry(p, struct snd_timer, device_list); 1541 1537 if (timer->tmr_class > SNDRV_TIMER_CLASS_GLOBAL) { 1542 - snd_timer_user_copy_id(&id, timer); 1538 + snd_timer_user_copy_id(id, timer); 1543 1539 break; 1544 1540 } 1545 - if (timer->tmr_device >= id.device) { 1546 - snd_timer_user_copy_id(&id, timer); 1541 + if (timer->tmr_device >= id->device) { 1542 + snd_timer_user_copy_id(id, timer); 1547 1543 break; 1548 1544 } 1549 1545 } 1550 1546 if (p == &snd_timer_list) 1551 - snd_timer_user_zero_id(&id); 1547 + snd_timer_user_zero_id(id); 1552 1548 break; 1553 1549 case SNDRV_TIMER_CLASS_CARD: 1554 1550 case SNDRV_TIMER_CLASS_PCM: 1555 - if (id.card < 0) { 1556 - id.card = 0; 1551 + if (id->card < 0) { 1552 + id->card = 0; 1557 1553 } else { 1558 - if (id.device < 0) { 1559 - id.device = 0; 1554 + if (id->device < 0) { 1555 + id->device = 0; 1560 1556 } else { 1561 - if (id.subdevice < 0) 1562 - id.subdevice = 0; 1563 - else if (id.subdevice < INT_MAX) 1564 - id.subdevice++; 1557 + if (id->subdevice < 0) 1558 + id->subdevice = 0; 1559 + else if (id->subdevice < INT_MAX) 1560 + id->subdevice++; 1565 1561 } 1566 1562 } 1567 1563 list_for_each(p, &snd_timer_list) { 1568 1564 timer = list_entry(p, struct snd_timer, device_list); 1569 - if (timer->tmr_class > id.dev_class) { 1570 - snd_timer_user_copy_id(&id, timer); 1565 + if (timer->tmr_class > id->dev_class) { 1566 + snd_timer_user_copy_id(id, timer); 1571 1567 break; 1572 1568 } 1573 - if (timer->tmr_class < id.dev_class) 1569 + if (timer->tmr_class < id->dev_class) 1574 1570 continue; 1575 - if (timer->card->number > id.card) { 1576 - snd_timer_user_copy_id(&id, timer); 1571 + if (timer->card->number > id->card) { 1572 + snd_timer_user_copy_id(id, timer); 1577 1573 break; 1578 1574 } 1579 - if (timer->card->number < id.card) 1575 + if (timer->card->number < id->card) 1580 1576 continue; 1581 - if (timer->tmr_device > id.device) { 1582 - snd_timer_user_copy_id(&id, timer); 1577 + if (timer->tmr_device > id->device) { 1578 + snd_timer_user_copy_id(id, timer); 1583 1579 break; 1584 1580 } 1585 - if (timer->tmr_device < id.device) 1581 + if (timer->tmr_device < id->device) 1586 1582 continue; 1587 - if (timer->tmr_subdevice > id.subdevice) { 1588 - snd_timer_user_copy_id(&id, timer); 1583 + if (timer->tmr_subdevice > id->subdevice) { 1584 + snd_timer_user_copy_id(id, timer); 1589 1585 break; 1590 1586 } 1591 - if (timer->tmr_subdevice < id.subdevice) 1587 + if (timer->tmr_subdevice < id->subdevice) 1592 1588 continue; 1593 - snd_timer_user_copy_id(&id, timer); 1589 + snd_timer_user_copy_id(id, timer); 1594 1590 break; 1595 1591 } 1596 1592 if (p == &snd_timer_list) 1597 - snd_timer_user_zero_id(&id); 1593 + snd_timer_user_zero_id(id); 1598 1594 break; 1599 1595 default: 1600 - snd_timer_user_zero_id(&id); 1596 + snd_timer_user_zero_id(id); 1601 1597 } 1602 1598 } 1599 + } 1600 + 1601 + static int snd_timer_user_next_device(struct snd_timer_id __user *_tid) 1602 + { 1603 + struct snd_timer_id id; 1604 + 1605 + if (copy_from_user(&id, _tid, sizeof(id))) 1606 + return -EFAULT; 1607 + scoped_guard(mutex, &register_mutex) 1608 + get_next_device(&id); 1603 1609 if (copy_to_user(_tid, &id, sizeof(*_tid))) 1604 1610 return -EFAULT; 1605 1611 return 0; ··· 1626 1620 tid = ginfo->tid; 1627 1621 memset(ginfo, 0, sizeof(*ginfo)); 1628 1622 ginfo->tid = tid; 1629 - guard(mutex)(&register_mutex); 1630 - t = snd_timer_find(&tid); 1631 - if (!t) 1632 - return -ENODEV; 1633 - ginfo->card = t->card ? t->card->number : -1; 1634 - if (t->hw.flags & SNDRV_TIMER_HW_SLAVE) 1635 - ginfo->flags |= SNDRV_TIMER_FLG_SLAVE; 1636 - strscpy(ginfo->id, t->id, sizeof(ginfo->id)); 1637 - strscpy(ginfo->name, t->name, sizeof(ginfo->name)); 1638 - scoped_guard(spinlock_irq, &t->lock) 1639 - ginfo->resolution = snd_timer_hw_resolution(t); 1640 - if (t->hw.resolution_min > 0) { 1641 - ginfo->resolution_min = t->hw.resolution_min; 1642 - ginfo->resolution_max = t->hw.resolution_max; 1643 - } 1644 - list_for_each(p, &t->open_list_head) { 1645 - ginfo->clients++; 1623 + scoped_guard(mutex, &register_mutex) { 1624 + t = snd_timer_find(&tid); 1625 + if (!t) 1626 + return -ENODEV; 1627 + ginfo->card = t->card ? t->card->number : -1; 1628 + if (t->hw.flags & SNDRV_TIMER_HW_SLAVE) 1629 + ginfo->flags |= SNDRV_TIMER_FLG_SLAVE; 1630 + strscpy(ginfo->id, t->id, sizeof(ginfo->id)); 1631 + strscpy(ginfo->name, t->name, sizeof(ginfo->name)); 1632 + scoped_guard(spinlock_irq, &t->lock) 1633 + ginfo->resolution = snd_timer_hw_resolution(t); 1634 + if (t->hw.resolution_min > 0) { 1635 + ginfo->resolution_min = t->hw.resolution_min; 1636 + ginfo->resolution_max = t->hw.resolution_max; 1637 + } 1638 + list_for_each(p, &t->open_list_head) { 1639 + ginfo->clients++; 1640 + } 1646 1641 } 1647 1642 if (copy_to_user(_ginfo, ginfo, sizeof(*ginfo))) 1648 1643 return -EFAULT; ··· 1681 1674 struct snd_timer_gstatus gstatus; 1682 1675 struct snd_timer_id tid; 1683 1676 struct snd_timer *t; 1684 - int err = 0; 1685 1677 1686 1678 if (copy_from_user(&gstatus, _gstatus, sizeof(gstatus))) 1687 1679 return -EFAULT; 1688 1680 tid = gstatus.tid; 1689 1681 memset(&gstatus, 0, sizeof(gstatus)); 1690 1682 gstatus.tid = tid; 1691 - guard(mutex)(&register_mutex); 1692 - t = snd_timer_find(&tid); 1693 - if (t != NULL) { 1694 - guard(spinlock_irq)(&t->lock); 1695 - gstatus.resolution = snd_timer_hw_resolution(t); 1696 - if (t->hw.precise_resolution) { 1697 - t->hw.precise_resolution(t, &gstatus.resolution_num, 1698 - &gstatus.resolution_den); 1683 + scoped_guard(mutex, &register_mutex) { 1684 + t = snd_timer_find(&tid); 1685 + if (t != NULL) { 1686 + guard(spinlock_irq)(&t->lock); 1687 + gstatus.resolution = snd_timer_hw_resolution(t); 1688 + if (t->hw.precise_resolution) { 1689 + t->hw.precise_resolution(t, &gstatus.resolution_num, 1690 + &gstatus.resolution_den); 1691 + } else { 1692 + gstatus.resolution_num = gstatus.resolution; 1693 + gstatus.resolution_den = 1000000000uL; 1694 + } 1699 1695 } else { 1700 - gstatus.resolution_num = gstatus.resolution; 1701 - gstatus.resolution_den = 1000000000uL; 1696 + return -ENODEV; 1702 1697 } 1703 - } else { 1704 - err = -ENODEV; 1705 1698 } 1706 - if (err >= 0 && copy_to_user(_gstatus, &gstatus, sizeof(gstatus))) 1707 - err = -EFAULT; 1708 - return err; 1699 + if (copy_to_user(_gstatus, &gstatus, sizeof(gstatus))) 1700 + return -EFAULT; 1701 + return 0; 1709 1702 } 1710 1703 1711 1704 static int snd_timer_user_tselect(struct file *file,
+36
sound/pci/hda/patch_realtek.c
··· 10723 10723 SND_PCI_QUIRK(0x103c, 0x8cf5, "HP ZBook Studio 16", ALC245_FIXUP_CS35L41_SPI_4_HP_GPIO_LED), 10724 10724 SND_PCI_QUIRK(0x103c, 0x8d01, "HP ZBook Power 14 G12", ALC285_FIXUP_HP_GPIO_LED), 10725 10725 SND_PCI_QUIRK(0x103c, 0x8d84, "HP EliteBook X G1i", ALC285_FIXUP_HP_GPIO_LED), 10726 + SND_PCI_QUIRK(0x103c, 0x8d85, "HP EliteBook 14 G12", ALC285_FIXUP_HP_GPIO_LED), 10727 + SND_PCI_QUIRK(0x103c, 0x8d86, "HP Elite X360 14 G12", ALC285_FIXUP_HP_GPIO_LED), 10728 + SND_PCI_QUIRK(0x103c, 0x8d8c, "HP EliteBook 13 G12", ALC285_FIXUP_HP_GPIO_LED), 10729 + SND_PCI_QUIRK(0x103c, 0x8d8d, "HP Elite X360 13 G12", ALC285_FIXUP_HP_GPIO_LED), 10730 + SND_PCI_QUIRK(0x103c, 0x8d8e, "HP EliteBook 14 G12", ALC285_FIXUP_HP_GPIO_LED), 10731 + SND_PCI_QUIRK(0x103c, 0x8d8f, "HP EliteBook 14 G12", ALC285_FIXUP_HP_GPIO_LED), 10732 + SND_PCI_QUIRK(0x103c, 0x8d90, "HP EliteBook 16 G12", ALC285_FIXUP_HP_GPIO_LED), 10726 10733 SND_PCI_QUIRK(0x103c, 0x8d91, "HP ZBook Firefly 14 G12", ALC285_FIXUP_HP_GPIO_LED), 10727 10734 SND_PCI_QUIRK(0x103c, 0x8d92, "HP ZBook Firefly 16 G12", ALC285_FIXUP_HP_GPIO_LED), 10735 + SND_PCI_QUIRK(0x103c, 0x8d9b, "HP 17 Turbine OmniBook 7 UMA", ALC287_FIXUP_CS35L41_I2C_2), 10736 + SND_PCI_QUIRK(0x103c, 0x8d9c, "HP 17 Turbine OmniBook 7 DIS", ALC287_FIXUP_CS35L41_I2C_2), 10737 + SND_PCI_QUIRK(0x103c, 0x8d9d, "HP 17 Turbine OmniBook X UMA", ALC287_FIXUP_CS35L41_I2C_2), 10738 + SND_PCI_QUIRK(0x103c, 0x8d9e, "HP 17 Turbine OmniBook X DIS", ALC287_FIXUP_CS35L41_I2C_2), 10739 + SND_PCI_QUIRK(0x103c, 0x8d9f, "HP 14 Cadet (x360)", ALC287_FIXUP_CS35L41_I2C_2), 10740 + SND_PCI_QUIRK(0x103c, 0x8da0, "HP 16 Clipper OmniBook 7(X360)", ALC287_FIXUP_CS35L41_I2C_2), 10741 + SND_PCI_QUIRK(0x103c, 0x8da1, "HP 16 Clipper OmniBook X", ALC287_FIXUP_CS35L41_I2C_2), 10742 + SND_PCI_QUIRK(0x103c, 0x8da7, "HP 14 Enstrom OmniBook X", ALC287_FIXUP_CS35L41_I2C_2), 10743 + SND_PCI_QUIRK(0x103c, 0x8da8, "HP 16 Piston OmniBook X", ALC287_FIXUP_CS35L41_I2C_2), 10728 10744 SND_PCI_QUIRK(0x103c, 0x8de8, "HP Gemtree", ALC245_FIXUP_TAS2781_SPI_2), 10729 10745 SND_PCI_QUIRK(0x103c, 0x8de9, "HP Gemtree", ALC245_FIXUP_TAS2781_SPI_2), 10746 + SND_PCI_QUIRK(0x103c, 0x8dec, "HP EliteBook 640 G12", ALC236_FIXUP_HP_GPIO_LED), 10747 + SND_PCI_QUIRK(0x103c, 0x8dee, "HP EliteBook 660 G12", ALC236_FIXUP_HP_GPIO_LED), 10748 + SND_PCI_QUIRK(0x103c, 0x8df0, "HP EliteBook 630 G12", ALC236_FIXUP_HP_GPIO_LED), 10749 + SND_PCI_QUIRK(0x103c, 0x8dfc, "HP EliteBook 645 G12", ALC236_FIXUP_HP_GPIO_LED), 10750 + SND_PCI_QUIRK(0x103c, 0x8dfe, "HP EliteBook 665 G12", ALC236_FIXUP_HP_GPIO_LED), 10751 + SND_PCI_QUIRK(0x103c, 0x8e11, "HP Trekker", ALC287_FIXUP_CS35L41_I2C_2), 10752 + SND_PCI_QUIRK(0x103c, 0x8e12, "HP Trekker", ALC287_FIXUP_CS35L41_I2C_2), 10753 + SND_PCI_QUIRK(0x103c, 0x8e13, "HP Trekker", ALC287_FIXUP_CS35L41_I2C_2), 10754 + SND_PCI_QUIRK(0x103c, 0x8e14, "HP ZBook Firefly 14 G12", ALC285_FIXUP_HP_GPIO_LED), 10755 + SND_PCI_QUIRK(0x103c, 0x8e15, "HP ZBook Firefly 14 G12", ALC285_FIXUP_HP_GPIO_LED), 10756 + SND_PCI_QUIRK(0x103c, 0x8e16, "HP ZBook Firefly 14 G12", ALC285_FIXUP_HP_GPIO_LED), 10757 + SND_PCI_QUIRK(0x103c, 0x8e17, "HP ZBook Firefly 14 G12", ALC285_FIXUP_HP_GPIO_LED), 10730 10758 SND_PCI_QUIRK(0x103c, 0x8e18, "HP ZBook Firefly 14 G12A", ALC285_FIXUP_HP_GPIO_LED), 10731 10759 SND_PCI_QUIRK(0x103c, 0x8e19, "HP ZBook Firefly 14 G12A", ALC285_FIXUP_HP_GPIO_LED), 10732 10760 SND_PCI_QUIRK(0x103c, 0x8e1a, "HP ZBook Firefly 14 G12A", ALC285_FIXUP_HP_GPIO_LED), 10761 + SND_PCI_QUIRK(0x103c, 0x8e1b, "HP EliteBook G12", ALC285_FIXUP_HP_GPIO_LED), 10762 + SND_PCI_QUIRK(0x103c, 0x8e1c, "HP EliteBook G12", ALC285_FIXUP_HP_GPIO_LED), 10763 + SND_PCI_QUIRK(0x103c, 0x8e2c, "HP EliteBook 16 G12", ALC285_FIXUP_HP_GPIO_LED), 10764 + SND_PCI_QUIRK(0x103c, 0x8e36, "HP 14 Enstrom OmniBook X", ALC287_FIXUP_CS35L41_I2C_2), 10765 + SND_PCI_QUIRK(0x103c, 0x8e37, "HP 16 Piston OmniBook X", ALC287_FIXUP_CS35L41_I2C_2), 10766 + SND_PCI_QUIRK(0x103c, 0x8e60, "HP Trekker ", ALC287_FIXUP_CS35L41_I2C_2), 10767 + SND_PCI_QUIRK(0x103c, 0x8e61, "HP Trekker ", ALC287_FIXUP_CS35L41_I2C_2), 10768 + SND_PCI_QUIRK(0x103c, 0x8e62, "HP Trekker ", ALC287_FIXUP_CS35L41_I2C_2), 10733 10769 SND_PCI_QUIRK(0x1043, 0x103e, "ASUS X540SA", ALC256_FIXUP_ASUS_MIC), 10734 10770 SND_PCI_QUIRK(0x1043, 0x103f, "ASUS TX300", ALC282_FIXUP_ASUS_TX300), 10735 10771 SND_PCI_QUIRK(0x1043, 0x1054, "ASUS G614FH/FM/FP", ALC287_FIXUP_CS35L41_I2C_2),
+7
sound/soc/amd/yc/acp6x-mach.c
··· 584 584 DMI_MATCH(DMI_PRODUCT_VERSION, "pang13"), 585 585 } 586 586 }, 587 + { 588 + .driver_data = &acp6x_card, 589 + .matches = { 590 + DMI_MATCH(DMI_BOARD_VENDOR, "Micro-Star International Co., Ltd."), 591 + DMI_MATCH(DMI_PRODUCT_NAME, "Bravo 15 C7UCX"), 592 + } 593 + }, 587 594 {} 588 595 }; 589 596
+5 -2
sound/soc/generic/simple-card-utils.c
··· 1077 1077 int graph_util_parse_dai(struct device *dev, struct device_node *ep, 1078 1078 struct snd_soc_dai_link_component *dlc, int *is_single_link) 1079 1079 { 1080 + struct device_node *node; 1080 1081 struct of_phandle_args args = {}; 1081 1082 struct snd_soc_dai *dai; 1082 1083 int ret; ··· 1085 1084 if (!ep) 1086 1085 return 0; 1087 1086 1088 - struct device_node *node __free(device_node) = of_graph_get_port_parent(ep); 1087 + node = of_graph_get_port_parent(ep); 1089 1088 1090 1089 /* 1091 1090 * Try to find from DAI node ··· 1127 1126 * if he unbinded CPU or Codec. 1128 1127 */ 1129 1128 ret = snd_soc_get_dlc(&args, dlc); 1130 - if (ret < 0) 1129 + if (ret < 0) { 1130 + of_node_put(node); 1131 1131 return ret; 1132 + } 1132 1133 1133 1134 parse_dai_end: 1134 1135 if (is_single_link)
+2
sound/soc/ti/j721e-evm.c
··· 182 182 clk_id = J721E_CLK_PARENT_48000; 183 183 else if (!(rate % 11025) && priv->pll_rates[J721E_CLK_PARENT_44100]) 184 184 clk_id = J721E_CLK_PARENT_44100; 185 + else if (!(rate % 11025) && priv->pll_rates[J721E_CLK_PARENT_48000]) 186 + clk_id = J721E_CLK_PARENT_48000; 185 187 else 186 188 return ret; 187 189