mirror of
https://github.com/torvalds/linux.git
synced 2025-04-12 06:49:52 +00:00
Merge branch 'for-linus' into for-next
Get ready for 6.15 merge window Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
commit
41a5070950
@ -41,6 +41,10 @@ properties:
|
||||
- fsl,imx93-sai
|
||||
- fsl,imx95-sai
|
||||
- fsl,vf610-sai
|
||||
- items:
|
||||
- enum:
|
||||
- fsl,imx94-sai
|
||||
- const: fsl,imx95-sai
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
@ -1515,91 +1515,97 @@ static void snd_timer_user_copy_id(struct snd_timer_id *id, struct snd_timer *ti
|
||||
id->subdevice = timer->tmr_subdevice;
|
||||
}
|
||||
|
||||
static int snd_timer_user_next_device(struct snd_timer_id __user *_tid)
|
||||
static void get_next_device(struct snd_timer_id *id)
|
||||
{
|
||||
struct snd_timer_id id;
|
||||
struct snd_timer *timer;
|
||||
struct list_head *p;
|
||||
|
||||
if (copy_from_user(&id, _tid, sizeof(id)))
|
||||
return -EFAULT;
|
||||
guard(mutex)(®ister_mutex);
|
||||
if (id.dev_class < 0) { /* first item */
|
||||
if (id->dev_class < 0) { /* first item */
|
||||
if (list_empty(&snd_timer_list))
|
||||
snd_timer_user_zero_id(&id);
|
||||
snd_timer_user_zero_id(id);
|
||||
else {
|
||||
timer = list_entry(snd_timer_list.next,
|
||||
struct snd_timer, device_list);
|
||||
snd_timer_user_copy_id(&id, timer);
|
||||
snd_timer_user_copy_id(id, timer);
|
||||
}
|
||||
} else {
|
||||
switch (id.dev_class) {
|
||||
switch (id->dev_class) {
|
||||
case SNDRV_TIMER_CLASS_GLOBAL:
|
||||
id.device = id.device < 0 ? 0 : id.device + 1;
|
||||
id->device = id->device < 0 ? 0 : id->device + 1;
|
||||
list_for_each(p, &snd_timer_list) {
|
||||
timer = list_entry(p, struct snd_timer, device_list);
|
||||
if (timer->tmr_class > SNDRV_TIMER_CLASS_GLOBAL) {
|
||||
snd_timer_user_copy_id(&id, timer);
|
||||
snd_timer_user_copy_id(id, timer);
|
||||
break;
|
||||
}
|
||||
if (timer->tmr_device >= id.device) {
|
||||
snd_timer_user_copy_id(&id, timer);
|
||||
if (timer->tmr_device >= id->device) {
|
||||
snd_timer_user_copy_id(id, timer);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (p == &snd_timer_list)
|
||||
snd_timer_user_zero_id(&id);
|
||||
snd_timer_user_zero_id(id);
|
||||
break;
|
||||
case SNDRV_TIMER_CLASS_CARD:
|
||||
case SNDRV_TIMER_CLASS_PCM:
|
||||
if (id.card < 0) {
|
||||
id.card = 0;
|
||||
if (id->card < 0) {
|
||||
id->card = 0;
|
||||
} else {
|
||||
if (id.device < 0) {
|
||||
id.device = 0;
|
||||
if (id->device < 0) {
|
||||
id->device = 0;
|
||||
} else {
|
||||
if (id.subdevice < 0)
|
||||
id.subdevice = 0;
|
||||
else if (id.subdevice < INT_MAX)
|
||||
id.subdevice++;
|
||||
if (id->subdevice < 0)
|
||||
id->subdevice = 0;
|
||||
else if (id->subdevice < INT_MAX)
|
||||
id->subdevice++;
|
||||
}
|
||||
}
|
||||
list_for_each(p, &snd_timer_list) {
|
||||
timer = list_entry(p, struct snd_timer, device_list);
|
||||
if (timer->tmr_class > id.dev_class) {
|
||||
snd_timer_user_copy_id(&id, timer);
|
||||
if (timer->tmr_class > id->dev_class) {
|
||||
snd_timer_user_copy_id(id, timer);
|
||||
break;
|
||||
}
|
||||
if (timer->tmr_class < id.dev_class)
|
||||
if (timer->tmr_class < id->dev_class)
|
||||
continue;
|
||||
if (timer->card->number > id.card) {
|
||||
snd_timer_user_copy_id(&id, timer);
|
||||
if (timer->card->number > id->card) {
|
||||
snd_timer_user_copy_id(id, timer);
|
||||
break;
|
||||
}
|
||||
if (timer->card->number < id.card)
|
||||
if (timer->card->number < id->card)
|
||||
continue;
|
||||
if (timer->tmr_device > id.device) {
|
||||
snd_timer_user_copy_id(&id, timer);
|
||||
if (timer->tmr_device > id->device) {
|
||||
snd_timer_user_copy_id(id, timer);
|
||||
break;
|
||||
}
|
||||
if (timer->tmr_device < id.device)
|
||||
if (timer->tmr_device < id->device)
|
||||
continue;
|
||||
if (timer->tmr_subdevice > id.subdevice) {
|
||||
snd_timer_user_copy_id(&id, timer);
|
||||
if (timer->tmr_subdevice > id->subdevice) {
|
||||
snd_timer_user_copy_id(id, timer);
|
||||
break;
|
||||
}
|
||||
if (timer->tmr_subdevice < id.subdevice)
|
||||
if (timer->tmr_subdevice < id->subdevice)
|
||||
continue;
|
||||
snd_timer_user_copy_id(&id, timer);
|
||||
snd_timer_user_copy_id(id, timer);
|
||||
break;
|
||||
}
|
||||
if (p == &snd_timer_list)
|
||||
snd_timer_user_zero_id(&id);
|
||||
snd_timer_user_zero_id(id);
|
||||
break;
|
||||
default:
|
||||
snd_timer_user_zero_id(&id);
|
||||
snd_timer_user_zero_id(id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static int snd_timer_user_next_device(struct snd_timer_id __user *_tid)
|
||||
{
|
||||
struct snd_timer_id id;
|
||||
|
||||
if (copy_from_user(&id, _tid, sizeof(id)))
|
||||
return -EFAULT;
|
||||
scoped_guard(mutex, ®ister_mutex)
|
||||
get_next_device(&id);
|
||||
if (copy_to_user(_tid, &id, sizeof(*_tid)))
|
||||
return -EFAULT;
|
||||
return 0;
|
||||
@ -1620,23 +1626,24 @@ static int snd_timer_user_ginfo(struct file *file,
|
||||
tid = ginfo->tid;
|
||||
memset(ginfo, 0, sizeof(*ginfo));
|
||||
ginfo->tid = tid;
|
||||
guard(mutex)(®ister_mutex);
|
||||
t = snd_timer_find(&tid);
|
||||
if (!t)
|
||||
return -ENODEV;
|
||||
ginfo->card = t->card ? t->card->number : -1;
|
||||
if (t->hw.flags & SNDRV_TIMER_HW_SLAVE)
|
||||
ginfo->flags |= SNDRV_TIMER_FLG_SLAVE;
|
||||
strscpy(ginfo->id, t->id, sizeof(ginfo->id));
|
||||
strscpy(ginfo->name, t->name, sizeof(ginfo->name));
|
||||
scoped_guard(spinlock_irq, &t->lock)
|
||||
ginfo->resolution = snd_timer_hw_resolution(t);
|
||||
if (t->hw.resolution_min > 0) {
|
||||
ginfo->resolution_min = t->hw.resolution_min;
|
||||
ginfo->resolution_max = t->hw.resolution_max;
|
||||
}
|
||||
list_for_each(p, &t->open_list_head) {
|
||||
ginfo->clients++;
|
||||
scoped_guard(mutex, ®ister_mutex) {
|
||||
t = snd_timer_find(&tid);
|
||||
if (!t)
|
||||
return -ENODEV;
|
||||
ginfo->card = t->card ? t->card->number : -1;
|
||||
if (t->hw.flags & SNDRV_TIMER_HW_SLAVE)
|
||||
ginfo->flags |= SNDRV_TIMER_FLG_SLAVE;
|
||||
strscpy(ginfo->id, t->id, sizeof(ginfo->id));
|
||||
strscpy(ginfo->name, t->name, sizeof(ginfo->name));
|
||||
scoped_guard(spinlock_irq, &t->lock)
|
||||
ginfo->resolution = snd_timer_hw_resolution(t);
|
||||
if (t->hw.resolution_min > 0) {
|
||||
ginfo->resolution_min = t->hw.resolution_min;
|
||||
ginfo->resolution_max = t->hw.resolution_max;
|
||||
}
|
||||
list_for_each(p, &t->open_list_head) {
|
||||
ginfo->clients++;
|
||||
}
|
||||
}
|
||||
if (copy_to_user(_ginfo, ginfo, sizeof(*ginfo)))
|
||||
return -EFAULT;
|
||||
@ -1674,31 +1681,31 @@ static int snd_timer_user_gstatus(struct file *file,
|
||||
struct snd_timer_gstatus gstatus;
|
||||
struct snd_timer_id tid;
|
||||
struct snd_timer *t;
|
||||
int err = 0;
|
||||
|
||||
if (copy_from_user(&gstatus, _gstatus, sizeof(gstatus)))
|
||||
return -EFAULT;
|
||||
tid = gstatus.tid;
|
||||
memset(&gstatus, 0, sizeof(gstatus));
|
||||
gstatus.tid = tid;
|
||||
guard(mutex)(®ister_mutex);
|
||||
t = snd_timer_find(&tid);
|
||||
if (t != NULL) {
|
||||
guard(spinlock_irq)(&t->lock);
|
||||
gstatus.resolution = snd_timer_hw_resolution(t);
|
||||
if (t->hw.precise_resolution) {
|
||||
t->hw.precise_resolution(t, &gstatus.resolution_num,
|
||||
&gstatus.resolution_den);
|
||||
scoped_guard(mutex, ®ister_mutex) {
|
||||
t = snd_timer_find(&tid);
|
||||
if (t != NULL) {
|
||||
guard(spinlock_irq)(&t->lock);
|
||||
gstatus.resolution = snd_timer_hw_resolution(t);
|
||||
if (t->hw.precise_resolution) {
|
||||
t->hw.precise_resolution(t, &gstatus.resolution_num,
|
||||
&gstatus.resolution_den);
|
||||
} else {
|
||||
gstatus.resolution_num = gstatus.resolution;
|
||||
gstatus.resolution_den = 1000000000uL;
|
||||
}
|
||||
} else {
|
||||
gstatus.resolution_num = gstatus.resolution;
|
||||
gstatus.resolution_den = 1000000000uL;
|
||||
return -ENODEV;
|
||||
}
|
||||
} else {
|
||||
err = -ENODEV;
|
||||
}
|
||||
if (err >= 0 && copy_to_user(_gstatus, &gstatus, sizeof(gstatus)))
|
||||
err = -EFAULT;
|
||||
return err;
|
||||
if (copy_to_user(_gstatus, &gstatus, sizeof(gstatus)))
|
||||
return -EFAULT;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int snd_timer_user_tselect(struct file *file,
|
||||
|
@ -10723,13 +10723,49 @@ static const struct hda_quirk alc269_fixup_tbl[] = {
|
||||
SND_PCI_QUIRK(0x103c, 0x8cf5, "HP ZBook Studio 16", ALC245_FIXUP_CS35L41_SPI_4_HP_GPIO_LED),
|
||||
SND_PCI_QUIRK(0x103c, 0x8d01, "HP ZBook Power 14 G12", ALC285_FIXUP_HP_GPIO_LED),
|
||||
SND_PCI_QUIRK(0x103c, 0x8d84, "HP EliteBook X G1i", ALC285_FIXUP_HP_GPIO_LED),
|
||||
SND_PCI_QUIRK(0x103c, 0x8d85, "HP EliteBook 14 G12", ALC285_FIXUP_HP_GPIO_LED),
|
||||
SND_PCI_QUIRK(0x103c, 0x8d86, "HP Elite X360 14 G12", ALC285_FIXUP_HP_GPIO_LED),
|
||||
SND_PCI_QUIRK(0x103c, 0x8d8c, "HP EliteBook 13 G12", ALC285_FIXUP_HP_GPIO_LED),
|
||||
SND_PCI_QUIRK(0x103c, 0x8d8d, "HP Elite X360 13 G12", ALC285_FIXUP_HP_GPIO_LED),
|
||||
SND_PCI_QUIRK(0x103c, 0x8d8e, "HP EliteBook 14 G12", ALC285_FIXUP_HP_GPIO_LED),
|
||||
SND_PCI_QUIRK(0x103c, 0x8d8f, "HP EliteBook 14 G12", ALC285_FIXUP_HP_GPIO_LED),
|
||||
SND_PCI_QUIRK(0x103c, 0x8d90, "HP EliteBook 16 G12", ALC285_FIXUP_HP_GPIO_LED),
|
||||
SND_PCI_QUIRK(0x103c, 0x8d91, "HP ZBook Firefly 14 G12", ALC285_FIXUP_HP_GPIO_LED),
|
||||
SND_PCI_QUIRK(0x103c, 0x8d92, "HP ZBook Firefly 16 G12", ALC285_FIXUP_HP_GPIO_LED),
|
||||
SND_PCI_QUIRK(0x103c, 0x8d9b, "HP 17 Turbine OmniBook 7 UMA", ALC287_FIXUP_CS35L41_I2C_2),
|
||||
SND_PCI_QUIRK(0x103c, 0x8d9c, "HP 17 Turbine OmniBook 7 DIS", ALC287_FIXUP_CS35L41_I2C_2),
|
||||
SND_PCI_QUIRK(0x103c, 0x8d9d, "HP 17 Turbine OmniBook X UMA", ALC287_FIXUP_CS35L41_I2C_2),
|
||||
SND_PCI_QUIRK(0x103c, 0x8d9e, "HP 17 Turbine OmniBook X DIS", ALC287_FIXUP_CS35L41_I2C_2),
|
||||
SND_PCI_QUIRK(0x103c, 0x8d9f, "HP 14 Cadet (x360)", ALC287_FIXUP_CS35L41_I2C_2),
|
||||
SND_PCI_QUIRK(0x103c, 0x8da0, "HP 16 Clipper OmniBook 7(X360)", ALC287_FIXUP_CS35L41_I2C_2),
|
||||
SND_PCI_QUIRK(0x103c, 0x8da1, "HP 16 Clipper OmniBook X", ALC287_FIXUP_CS35L41_I2C_2),
|
||||
SND_PCI_QUIRK(0x103c, 0x8da7, "HP 14 Enstrom OmniBook X", ALC287_FIXUP_CS35L41_I2C_2),
|
||||
SND_PCI_QUIRK(0x103c, 0x8da8, "HP 16 Piston OmniBook X", ALC287_FIXUP_CS35L41_I2C_2),
|
||||
SND_PCI_QUIRK(0x103c, 0x8de8, "HP Gemtree", ALC245_FIXUP_TAS2781_SPI_2),
|
||||
SND_PCI_QUIRK(0x103c, 0x8de9, "HP Gemtree", ALC245_FIXUP_TAS2781_SPI_2),
|
||||
SND_PCI_QUIRK(0x103c, 0x8dec, "HP EliteBook 640 G12", ALC236_FIXUP_HP_GPIO_LED),
|
||||
SND_PCI_QUIRK(0x103c, 0x8dee, "HP EliteBook 660 G12", ALC236_FIXUP_HP_GPIO_LED),
|
||||
SND_PCI_QUIRK(0x103c, 0x8df0, "HP EliteBook 630 G12", ALC236_FIXUP_HP_GPIO_LED),
|
||||
SND_PCI_QUIRK(0x103c, 0x8dfc, "HP EliteBook 645 G12", ALC236_FIXUP_HP_GPIO_LED),
|
||||
SND_PCI_QUIRK(0x103c, 0x8dfe, "HP EliteBook 665 G12", ALC236_FIXUP_HP_GPIO_LED),
|
||||
SND_PCI_QUIRK(0x103c, 0x8e11, "HP Trekker", ALC287_FIXUP_CS35L41_I2C_2),
|
||||
SND_PCI_QUIRK(0x103c, 0x8e12, "HP Trekker", ALC287_FIXUP_CS35L41_I2C_2),
|
||||
SND_PCI_QUIRK(0x103c, 0x8e13, "HP Trekker", ALC287_FIXUP_CS35L41_I2C_2),
|
||||
SND_PCI_QUIRK(0x103c, 0x8e14, "HP ZBook Firefly 14 G12", ALC285_FIXUP_HP_GPIO_LED),
|
||||
SND_PCI_QUIRK(0x103c, 0x8e15, "HP ZBook Firefly 14 G12", ALC285_FIXUP_HP_GPIO_LED),
|
||||
SND_PCI_QUIRK(0x103c, 0x8e16, "HP ZBook Firefly 14 G12", ALC285_FIXUP_HP_GPIO_LED),
|
||||
SND_PCI_QUIRK(0x103c, 0x8e17, "HP ZBook Firefly 14 G12", ALC285_FIXUP_HP_GPIO_LED),
|
||||
SND_PCI_QUIRK(0x103c, 0x8e18, "HP ZBook Firefly 14 G12A", ALC285_FIXUP_HP_GPIO_LED),
|
||||
SND_PCI_QUIRK(0x103c, 0x8e19, "HP ZBook Firefly 14 G12A", ALC285_FIXUP_HP_GPIO_LED),
|
||||
SND_PCI_QUIRK(0x103c, 0x8e1a, "HP ZBook Firefly 14 G12A", ALC285_FIXUP_HP_GPIO_LED),
|
||||
SND_PCI_QUIRK(0x103c, 0x8e1b, "HP EliteBook G12", ALC285_FIXUP_HP_GPIO_LED),
|
||||
SND_PCI_QUIRK(0x103c, 0x8e1c, "HP EliteBook G12", ALC285_FIXUP_HP_GPIO_LED),
|
||||
SND_PCI_QUIRK(0x103c, 0x8e2c, "HP EliteBook 16 G12", ALC285_FIXUP_HP_GPIO_LED),
|
||||
SND_PCI_QUIRK(0x103c, 0x8e36, "HP 14 Enstrom OmniBook X", ALC287_FIXUP_CS35L41_I2C_2),
|
||||
SND_PCI_QUIRK(0x103c, 0x8e37, "HP 16 Piston OmniBook X", ALC287_FIXUP_CS35L41_I2C_2),
|
||||
SND_PCI_QUIRK(0x103c, 0x8e60, "HP Trekker ", ALC287_FIXUP_CS35L41_I2C_2),
|
||||
SND_PCI_QUIRK(0x103c, 0x8e61, "HP Trekker ", ALC287_FIXUP_CS35L41_I2C_2),
|
||||
SND_PCI_QUIRK(0x103c, 0x8e62, "HP Trekker ", ALC287_FIXUP_CS35L41_I2C_2),
|
||||
SND_PCI_QUIRK(0x1043, 0x103e, "ASUS X540SA", ALC256_FIXUP_ASUS_MIC),
|
||||
SND_PCI_QUIRK(0x1043, 0x103f, "ASUS TX300", ALC282_FIXUP_ASUS_TX300),
|
||||
SND_PCI_QUIRK(0x1043, 0x1054, "ASUS G614FH/FM/FP", ALC287_FIXUP_CS35L41_I2C_2),
|
||||
|
@ -584,6 +584,13 @@ static const struct dmi_system_id yc_acp_quirk_table[] = {
|
||||
DMI_MATCH(DMI_PRODUCT_VERSION, "pang13"),
|
||||
}
|
||||
},
|
||||
{
|
||||
.driver_data = &acp6x_card,
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_VENDOR, "Micro-Star International Co., Ltd."),
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "Bravo 15 C7UCX"),
|
||||
}
|
||||
},
|
||||
{}
|
||||
};
|
||||
|
||||
|
@ -1077,6 +1077,7 @@ static int graph_get_dai_id(struct device_node *ep)
|
||||
int graph_util_parse_dai(struct device *dev, struct device_node *ep,
|
||||
struct snd_soc_dai_link_component *dlc, int *is_single_link)
|
||||
{
|
||||
struct device_node *node;
|
||||
struct of_phandle_args args = {};
|
||||
struct snd_soc_dai *dai;
|
||||
int ret;
|
||||
@ -1084,7 +1085,7 @@ int graph_util_parse_dai(struct device *dev, struct device_node *ep,
|
||||
if (!ep)
|
||||
return 0;
|
||||
|
||||
struct device_node *node __free(device_node) = of_graph_get_port_parent(ep);
|
||||
node = of_graph_get_port_parent(ep);
|
||||
|
||||
/*
|
||||
* Try to find from DAI node
|
||||
@ -1126,8 +1127,10 @@ int graph_util_parse_dai(struct device *dev, struct device_node *ep,
|
||||
* if he unbinded CPU or Codec.
|
||||
*/
|
||||
ret = snd_soc_get_dlc(&args, dlc);
|
||||
if (ret < 0)
|
||||
if (ret < 0) {
|
||||
of_node_put(node);
|
||||
return ret;
|
||||
}
|
||||
|
||||
parse_dai_end:
|
||||
if (is_single_link)
|
||||
|
@ -182,6 +182,8 @@ static int j721e_configure_refclk(struct j721e_priv *priv,
|
||||
clk_id = J721E_CLK_PARENT_48000;
|
||||
else if (!(rate % 11025) && priv->pll_rates[J721E_CLK_PARENT_44100])
|
||||
clk_id = J721E_CLK_PARENT_44100;
|
||||
else if (!(rate % 11025) && priv->pll_rates[J721E_CLK_PARENT_48000])
|
||||
clk_id = J721E_CLK_PARENT_48000;
|
||||
else
|
||||
return ret;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user