Skip to content

Commit da1d77e

Browse files
committed
Merge remote-tracking branch 'takashi/for-next' into sound/upstream-20251201
2 parents 326802f + b72a6dd commit da1d77e

46 files changed

Lines changed: 872 additions & 130 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

include/linux/pci_ids.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3075,6 +3075,7 @@
30753075
#define PCI_DEVICE_ID_INTEL_5100_22 0x65f6
30763076
#define PCI_DEVICE_ID_INTEL_IOAT_SCNB 0x65ff
30773077
#define PCI_DEVICE_ID_INTEL_HDA_FCL 0x67a8
3078+
#define PCI_DEVICE_ID_INTEL_HDA_NVL_S 0x6e50
30783079
#define PCI_DEVICE_ID_INTEL_82371SB_0 0x7000
30793080
#define PCI_DEVICE_ID_INTEL_82371SB_1 0x7010
30803081
#define PCI_DEVICE_ID_INTEL_82371SB_2 0x7020

include/sound/soc-acpi-intel-match.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ extern struct snd_soc_acpi_mach snd_soc_acpi_intel_mtl_machines[];
3434
extern struct snd_soc_acpi_mach snd_soc_acpi_intel_lnl_machines[];
3535
extern struct snd_soc_acpi_mach snd_soc_acpi_intel_arl_machines[];
3636
extern struct snd_soc_acpi_mach snd_soc_acpi_intel_ptl_machines[];
37+
extern struct snd_soc_acpi_mach snd_soc_acpi_intel_nvl_machines[];
3738

3839
extern struct snd_soc_acpi_mach snd_soc_acpi_intel_cnl_sdw_machines[];
3940
extern struct snd_soc_acpi_mach snd_soc_acpi_intel_cfl_sdw_machines[];
@@ -46,6 +47,7 @@ extern struct snd_soc_acpi_mach snd_soc_acpi_intel_mtl_sdw_machines[];
4647
extern struct snd_soc_acpi_mach snd_soc_acpi_intel_lnl_sdw_machines[];
4748
extern struct snd_soc_acpi_mach snd_soc_acpi_intel_arl_sdw_machines[];
4849
extern struct snd_soc_acpi_mach snd_soc_acpi_intel_ptl_sdw_machines[];
50+
extern struct snd_soc_acpi_mach snd_soc_acpi_intel_nvl_sdw_machines[];
4951

5052
/*
5153
* generic table used for HDA codec-based platforms, possibly with

include/sound/tas2781.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,6 @@ struct tasdevice_priv {
203203
struct acoustic_data acou_data;
204204
#endif
205205
struct tasdevice_fw *fmw;
206-
struct gpio_desc *speaker_id;
207206
struct gpio_desc *reset;
208207
struct mutex codec_lock;
209208
struct regmap *regmap;
@@ -221,6 +220,7 @@ struct tasdevice_priv {
221220
unsigned int magic_num;
222221
unsigned int chip_id;
223222
unsigned int sysclk;
223+
int speaker_id;
224224

225225
int irq;
226226
int cur_prog;

sound/ac97_bus.c

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,14 @@ static bool snd_ac97_check_id(struct snd_ac97 *ac97, unsigned int id,
4646
* @id_mask: Mask that is applied to the device ID before comparing to @id
4747
*
4848
* This function resets the AC'97 device. If @try_warm is true the function
49-
* first performs a warm reset. If the warm reset is successful the function
50-
* returns 1. Otherwise or if @try_warm is false the function issues cold reset
51-
* followed by a warm reset. If this is successful the function returns 0,
52-
* otherwise a negative error code. If @id is 0 any valid device ID will be
53-
* accepted, otherwise only the ID that matches @id and @id_mask is accepted.
49+
* first performs a warm reset. If @try_warm is false the function issues
50+
* cold reset followed by a warm reset. If @id is 0 any valid device ID
51+
* will be accepted, otherwise only the ID that matches @id and @id_mask
52+
* is accepted.
53+
* Returns:
54+
* * %1 - if warm reset is successful
55+
* * %0 - if cold reset and warm reset is successful
56+
* * %-ENODEV - if @id and @id_mask not matching
5457
*/
5558
int snd_ac97_reset(struct snd_ac97 *ac97, bool try_warm, unsigned int id,
5659
unsigned int id_mask)

sound/core/pcm_drm_eld.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -379,7 +379,7 @@ int snd_parse_eld(struct device *dev, struct snd_parsed_hdmi_eld *e,
379379
* in console or for audio devices. Assume the highest speakers
380380
* configuration, to _not_ prohibit multi-channel audio playback.
381381
*/
382-
if (!e->spk_alloc)
382+
if (!e->spk_alloc && e->sad_count)
383383
e->spk_alloc = 0xffff;
384384

385385
return 0;

sound/drivers/pcmtest.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -696,10 +696,10 @@ static int setup_patt_bufs(void)
696696
size_t i;
697697

698698
for (i = 0; i < ARRAY_SIZE(patt_bufs); i++) {
699-
patt_bufs[i].buf = kzalloc(MAX_PATTERN_LEN, GFP_KERNEL);
699+
patt_bufs[i].buf = kmalloc(MAX_PATTERN_LEN, GFP_KERNEL);
700700
if (!patt_bufs[i].buf)
701701
break;
702-
strcpy(patt_bufs[i].buf, DEFAULT_PATTERN);
702+
strscpy_pad(patt_bufs[i].buf, DEFAULT_PATTERN, MAX_PATTERN_LEN);
703703
patt_bufs[i].len = DEFAULT_PATTERN_LEN;
704704
}
705705

sound/firewire/dice/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@
22
snd-dice-y := dice-transaction.o dice-stream.o dice-proc.o dice-midi.o \
33
dice-pcm.o dice-hwdep.o dice.o dice-tcelectronic.o \
44
dice-alesis.o dice-extension.o dice-mytek.o dice-presonus.o \
5-
dice-harman.o dice-focusrite.o dice-weiss.o
5+
dice-harman.o dice-focusrite.o dice-weiss.o dice-teac.o
66
obj-$(CONFIG_SND_DICE) += snd-dice.o

sound/firewire/dice/dice-teac.c

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
// SPDX-License-Identifier: GPL-2.0
2+
// dice-teac.c - a part of driver for DICE based devices
3+
//
4+
// Copyright (c) 2025 Takashi Sakamoto
5+
6+
#include "dice.h"
7+
8+
int snd_dice_detect_teac_formats(struct snd_dice *dice)
9+
{
10+
__be32 reg;
11+
u32 data;
12+
int err;
13+
14+
err = snd_dice_transaction_read_tx(dice, TX_NUMBER, &reg, sizeof(reg));
15+
if (err < 0)
16+
return err;
17+
18+
dice->tx_pcm_chs[0][SND_DICE_RATE_MODE_LOW] = 16;
19+
dice->tx_pcm_chs[0][SND_DICE_RATE_MODE_MIDDLE] = 16;
20+
dice->tx_midi_ports[0] = 1;
21+
22+
data = be32_to_cpu(reg);
23+
if (data > 1) {
24+
dice->tx_pcm_chs[1][SND_DICE_RATE_MODE_LOW] = 16;
25+
dice->tx_pcm_chs[1][SND_DICE_RATE_MODE_MIDDLE] = 16;
26+
}
27+
28+
err = snd_dice_transaction_read_rx(dice, RX_NUMBER, &reg, sizeof(reg));
29+
if (err < 0)
30+
return err;
31+
32+
dice->rx_pcm_chs[0][SND_DICE_RATE_MODE_LOW] = 16;
33+
dice->rx_pcm_chs[0][SND_DICE_RATE_MODE_MIDDLE] = 16;
34+
dice->rx_midi_ports[0] = 1;
35+
36+
data = be32_to_cpu(reg);
37+
if (data > 1) {
38+
dice->rx_pcm_chs[1][SND_DICE_RATE_MODE_LOW] = 16;
39+
dice->rx_pcm_chs[1][SND_DICE_RATE_MODE_MIDDLE] = 16;
40+
}
41+
42+
return 0;
43+
}

sound/firewire/dice/dice.c

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ MODULE_LICENSE("GPL");
2222
#define OUI_PRESONUS 0x000a92
2323
#define OUI_HARMAN 0x000fd7
2424
#define OUI_AVID 0x00a07e
25+
#define OUI_TEAC 0x00022e
2526

2627
#define DICE_CATEGORY_ID 0x04
2728
#define WEISS_CATEGORY_ID 0x00
@@ -458,6 +459,18 @@ static const struct ieee1394_device_id dice_id_table[] = {
458459
.match_flags = IEEE1394_MATCH_VERSION,
459460
.version = DICE_INTERFACE,
460461
},
462+
// Tascam IF-FW/DM MkII for DM-3200 and DM-4800.
463+
{
464+
.match_flags = IEEE1394_MATCH_VENDOR_ID |
465+
IEEE1394_MATCH_MODEL_ID |
466+
IEEE1394_MATCH_SPECIFIER_ID |
467+
IEEE1394_MATCH_VERSION,
468+
.vendor_id = OUI_TEAC,
469+
.model_id = OUI_TEAC,
470+
.specifier_id = OUI_TEAC,
471+
.version = 0x800006,
472+
.driver_data = (kernel_ulong_t)snd_dice_detect_teac_formats,
473+
},
461474
{ }
462475
};
463476
MODULE_DEVICE_TABLE(ieee1394, dice_id_table);

sound/firewire/dice/dice.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -233,5 +233,6 @@ int snd_dice_detect_presonus_formats(struct snd_dice *dice);
233233
int snd_dice_detect_harman_formats(struct snd_dice *dice);
234234
int snd_dice_detect_focusrite_pro40_tcd3070_formats(struct snd_dice *dice);
235235
int snd_dice_detect_weiss_formats(struct snd_dice *dice);
236+
int snd_dice_detect_teac_formats(struct snd_dice *dice);
236237

237238
#endif

0 commit comments

Comments
 (0)