Skip to content

Commit 429b327

Browse files
committed
Merge remote-tracking branch 'takashi/for-next' into sound/upstream-20251030
2 parents 255b4ed + a0deef0 commit 429b327

6 files changed

Lines changed: 62 additions & 4 deletions

File tree

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

sound/hda/codecs/realtek/alc269.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7080,6 +7080,7 @@ static const struct hda_quirk alc269_fixup_tbl[] = {
70807080
SND_PCI_QUIRK(0x17aa, 0x38a9, "Thinkbook 16P", ALC287_FIXUP_MG_RTKC_CSAMP_CS35L41_I2C_THINKPAD),
70817081
SND_PCI_QUIRK(0x17aa, 0x38ab, "Thinkbook 16P", ALC287_FIXUP_MG_RTKC_CSAMP_CS35L41_I2C_THINKPAD),
70827082
SND_PCI_QUIRK(0x17aa, 0x38b4, "Legion Slim 7 16IRH8", ALC287_FIXUP_CS35L41_I2C_2),
7083+
HDA_CODEC_QUIRK(0x17aa, 0x391c, "Lenovo Yoga 7 2-in-1 14AKP10", ALC287_FIXUP_YOGA9_14IAP7_BASS_SPK_PIN),
70837084
SND_PCI_QUIRK(0x17aa, 0x38b5, "Legion Slim 7 16IRH8", ALC287_FIXUP_CS35L41_I2C_2),
70847085
SND_PCI_QUIRK(0x17aa, 0x38b6, "Legion Slim 7 16APH8", ALC287_FIXUP_CS35L41_I2C_2),
70857086
SND_PCI_QUIRK(0x17aa, 0x38b7, "Legion Slim 7 16APH8", ALC287_FIXUP_CS35L41_I2C_2),

sound/pci/maestro3.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2571,9 +2571,9 @@ snd_m3_create(struct snd_card *card, struct pci_dev *pci,
25712571

25722572
if (IS_ENABLED(CONFIG_PM_SLEEP)) {
25732573
chip->suspend_mem =
2574-
vmalloc(array_size(sizeof(u16),
2575-
REV_B_CODE_MEMORY_LENGTH +
2576-
REV_B_DATA_MEMORY_LENGTH));
2574+
vmalloc_array(REV_B_CODE_MEMORY_LENGTH +
2575+
REV_B_DATA_MEMORY_LENGTH,
2576+
sizeof(u16));
25772577
if (!chip->suspend_mem)
25782578
dev_warn(card->dev, "can't allocate apm buffer\n");
25792579
}

0 commit comments

Comments
 (0)