Skip to content

Commit 41a5070

Browse files
committed
Merge branch 'for-linus' into for-next
Get ready for 6.15 merge window Signed-off-by: Takashi Iwai <tiwai@suse.de>
2 parents ee3d1f0 + 2995102 commit 41a5070

File tree

6 files changed

+131
-72
lines changed

6 files changed

+131
-72
lines changed

Documentation/devicetree/bindings/sound/fsl,sai.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,10 @@ properties:
4141
- fsl,imx93-sai
4242
- fsl,imx95-sai
4343
- fsl,vf610-sai
44+
- items:
45+
- enum:
46+
- fsl,imx94-sai
47+
- const: fsl,imx95-sai
4448

4549
reg:
4650
maxItems: 1

sound/core/timer.c

Lines changed: 77 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -1515,91 +1515,97 @@ static void snd_timer_user_copy_id(struct snd_timer_id *id, struct snd_timer *ti
15151515
id->subdevice = timer->tmr_subdevice;
15161516
}
15171517

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)
15191519
{
1520-
struct snd_timer_id id;
15211520
struct snd_timer *timer;
15221521
struct list_head *p;
15231522

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 */
15281524
if (list_empty(&snd_timer_list))
1529-
snd_timer_user_zero_id(&id);
1525+
snd_timer_user_zero_id(id);
15301526
else {
15311527
timer = list_entry(snd_timer_list.next,
15321528
struct snd_timer, device_list);
1533-
snd_timer_user_copy_id(&id, timer);
1529+
snd_timer_user_copy_id(id, timer);
15341530
}
15351531
} else {
1536-
switch (id.dev_class) {
1532+
switch (id->dev_class) {
15371533
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;
15391535
list_for_each(p, &snd_timer_list) {
15401536
timer = list_entry(p, struct snd_timer, device_list);
15411537
if (timer->tmr_class > SNDRV_TIMER_CLASS_GLOBAL) {
1542-
snd_timer_user_copy_id(&id, timer);
1538+
snd_timer_user_copy_id(id, timer);
15431539
break;
15441540
}
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);
15471543
break;
15481544
}
15491545
}
15501546
if (p == &snd_timer_list)
1551-
snd_timer_user_zero_id(&id);
1547+
snd_timer_user_zero_id(id);
15521548
break;
15531549
case SNDRV_TIMER_CLASS_CARD:
15541550
case SNDRV_TIMER_CLASS_PCM:
1555-
if (id.card < 0) {
1556-
id.card = 0;
1551+
if (id->card < 0) {
1552+
id->card = 0;
15571553
} else {
1558-
if (id.device < 0) {
1559-
id.device = 0;
1554+
if (id->device < 0) {
1555+
id->device = 0;
15601556
} 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++;
15651561
}
15661562
}
15671563
list_for_each(p, &snd_timer_list) {
15681564
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);
15711567
break;
15721568
}
1573-
if (timer->tmr_class < id.dev_class)
1569+
if (timer->tmr_class < id->dev_class)
15741570
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);
15771573
break;
15781574
}
1579-
if (timer->card->number < id.card)
1575+
if (timer->card->number < id->card)
15801576
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);
15831579
break;
15841580
}
1585-
if (timer->tmr_device < id.device)
1581+
if (timer->tmr_device < id->device)
15861582
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);
15891585
break;
15901586
}
1591-
if (timer->tmr_subdevice < id.subdevice)
1587+
if (timer->tmr_subdevice < id->subdevice)
15921588
continue;
1593-
snd_timer_user_copy_id(&id, timer);
1589+
snd_timer_user_copy_id(id, timer);
15941590
break;
15951591
}
15961592
if (p == &snd_timer_list)
1597-
snd_timer_user_zero_id(&id);
1593+
snd_timer_user_zero_id(id);
15981594
break;
15991595
default:
1600-
snd_timer_user_zero_id(&id);
1596+
snd_timer_user_zero_id(id);
16011597
}
16021598
}
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);
16031609
if (copy_to_user(_tid, &id, sizeof(*_tid)))
16041610
return -EFAULT;
16051611
return 0;
@@ -1620,23 +1626,24 @@ static int snd_timer_user_ginfo(struct file *file,
16201626
tid = ginfo->tid;
16211627
memset(ginfo, 0, sizeof(*ginfo));
16221628
ginfo->tid = tid;
1623-
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++;
1629+
scoped_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++;
1646+
}
16401647
}
16411648
if (copy_to_user(_ginfo, ginfo, sizeof(*ginfo)))
16421649
return -EFAULT;
@@ -1674,31 +1681,31 @@ static int snd_timer_user_gstatus(struct file *file,
16741681
struct snd_timer_gstatus gstatus;
16751682
struct snd_timer_id tid;
16761683
struct snd_timer *t;
1677-
int err = 0;
16781684

16791685
if (copy_from_user(&gstatus, _gstatus, sizeof(gstatus)))
16801686
return -EFAULT;
16811687
tid = gstatus.tid;
16821688
memset(&gstatus, 0, sizeof(gstatus));
16831689
gstatus.tid = tid;
1684-
guard(mutex)(&register_mutex);
1685-
t = snd_timer_find(&tid);
1686-
if (t != NULL) {
1687-
guard(spinlock_irq)(&t->lock);
1688-
gstatus.resolution = snd_timer_hw_resolution(t);
1689-
if (t->hw.precise_resolution) {
1690-
t->hw.precise_resolution(t, &gstatus.resolution_num,
1691-
&gstatus.resolution_den);
1690+
scoped_guard(mutex, &register_mutex) {
1691+
t = snd_timer_find(&tid);
1692+
if (t != NULL) {
1693+
guard(spinlock_irq)(&t->lock);
1694+
gstatus.resolution = snd_timer_hw_resolution(t);
1695+
if (t->hw.precise_resolution) {
1696+
t->hw.precise_resolution(t, &gstatus.resolution_num,
1697+
&gstatus.resolution_den);
1698+
} else {
1699+
gstatus.resolution_num = gstatus.resolution;
1700+
gstatus.resolution_den = 1000000000uL;
1701+
}
16921702
} else {
1693-
gstatus.resolution_num = gstatus.resolution;
1694-
gstatus.resolution_den = 1000000000uL;
1703+
return -ENODEV;
16951704
}
1696-
} else {
1697-
err = -ENODEV;
16981705
}
1699-
if (err >= 0 && copy_to_user(_gstatus, &gstatus, sizeof(gstatus)))
1700-
err = -EFAULT;
1701-
return err;
1706+
if (copy_to_user(_gstatus, &gstatus, sizeof(gstatus)))
1707+
return -EFAULT;
1708+
return 0;
17021709
}
17031710

17041711
static int snd_timer_user_tselect(struct file *file,

sound/pci/hda/patch_realtek.c

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10723,13 +10723,49 @@ static const struct hda_quirk alc269_fixup_tbl[] = {
1072310723
SND_PCI_QUIRK(0x103c, 0x8cf5, "HP ZBook Studio 16", ALC245_FIXUP_CS35L41_SPI_4_HP_GPIO_LED),
1072410724
SND_PCI_QUIRK(0x103c, 0x8d01, "HP ZBook Power 14 G12", ALC285_FIXUP_HP_GPIO_LED),
1072510725
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),
1072610733
SND_PCI_QUIRK(0x103c, 0x8d91, "HP ZBook Firefly 14 G12", ALC285_FIXUP_HP_GPIO_LED),
1072710734
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),
1072810744
SND_PCI_QUIRK(0x103c, 0x8de8, "HP Gemtree", ALC245_FIXUP_TAS2781_SPI_2),
1072910745
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),
1073010758
SND_PCI_QUIRK(0x103c, 0x8e18, "HP ZBook Firefly 14 G12A", ALC285_FIXUP_HP_GPIO_LED),
1073110759
SND_PCI_QUIRK(0x103c, 0x8e19, "HP ZBook Firefly 14 G12A", ALC285_FIXUP_HP_GPIO_LED),
1073210760
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),
1073310769
SND_PCI_QUIRK(0x1043, 0x103e, "ASUS X540SA", ALC256_FIXUP_ASUS_MIC),
1073410770
SND_PCI_QUIRK(0x1043, 0x103f, "ASUS TX300", ALC282_FIXUP_ASUS_TX300),
1073510771
SND_PCI_QUIRK(0x1043, 0x1054, "ASUS G614FH/FM/FP", ALC287_FIXUP_CS35L41_I2C_2),

sound/soc/amd/yc/acp6x-mach.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -584,6 +584,13 @@ static const struct dmi_system_id yc_acp_quirk_table[] = {
584584
DMI_MATCH(DMI_PRODUCT_VERSION, "pang13"),
585585
}
586586
},
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+
},
587594
{}
588595
};
589596

sound/soc/generic/simple-card-utils.c

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1077,14 +1077,15 @@ static int graph_get_dai_id(struct device_node *ep)
10771077
int graph_util_parse_dai(struct device *dev, struct device_node *ep,
10781078
struct snd_soc_dai_link_component *dlc, int *is_single_link)
10791079
{
1080+
struct device_node *node;
10801081
struct of_phandle_args args = {};
10811082
struct snd_soc_dai *dai;
10821083
int ret;
10831084

10841085
if (!ep)
10851086
return 0;
10861087

1087-
struct device_node *node __free(device_node) = of_graph_get_port_parent(ep);
1088+
node = of_graph_get_port_parent(ep);
10881089

10891090
/*
10901091
* Try to find from DAI node
@@ -1126,8 +1127,10 @@ int graph_util_parse_dai(struct device *dev, struct device_node *ep,
11261127
* if he unbinded CPU or Codec.
11271128
*/
11281129
ret = snd_soc_get_dlc(&args, dlc);
1129-
if (ret < 0)
1130+
if (ret < 0) {
1131+
of_node_put(node);
11301132
return ret;
1133+
}
11311134

11321135
parse_dai_end:
11331136
if (is_single_link)

sound/soc/ti/j721e-evm.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,8 @@ static int j721e_configure_refclk(struct j721e_priv *priv,
182182
clk_id = J721E_CLK_PARENT_48000;
183183
else if (!(rate % 11025) && priv->pll_rates[J721E_CLK_PARENT_44100])
184184
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;
185187
else
186188
return ret;
187189

0 commit comments

Comments
 (0)