Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/sound/firewire/dice/dice-teac.c
38193 views
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
}
44
45