1 // SPDX-License-Identifier: GPL-2.0
3 * dice-alesis.c - a part of driver for DICE based devices
5 * Copyright (c) 2018 Takashi Sakamoto
10 static const unsigned int
11 alesis_io14_tx_pcm_chs
[MAX_STREAMS
][SND_DICE_RATE_MODE_COUNT
] = {
12 {6, 6, 4}, /* Tx0 = Analog + S/PDIF. */
13 {8, 4, 0}, /* Tx1 = ADAT1. */
16 static const unsigned int
17 alesis_io26_tx_pcm_chs
[MAX_STREAMS
][SND_DICE_RATE_MODE_COUNT
] = {
18 {10, 10, 8}, /* Tx0 = Analog + S/PDIF. */
19 {16, 8, 0}, /* Tx1 = ADAT1 + ADAT2. */
22 int snd_dice_detect_alesis_formats(struct snd_dice
*dice
)
29 err
= snd_dice_transaction_read_tx(dice
, TX_NUMBER_AUDIO
, ®
,
33 data
= be32_to_cpu(reg
);
35 if (data
== 4 || data
== 6) {
36 memcpy(dice
->tx_pcm_chs
, alesis_io14_tx_pcm_chs
,
37 MAX_STREAMS
* SND_DICE_RATE_MODE_COUNT
*
38 sizeof(unsigned int));
40 memcpy(dice
->tx_pcm_chs
, alesis_io26_tx_pcm_chs
,
41 MAX_STREAMS
* SND_DICE_RATE_MODE_COUNT
*
42 sizeof(unsigned int));
45 for (i
= 0; i
< SND_DICE_RATE_MODE_COUNT
; ++i
)
46 dice
->rx_pcm_chs
[0][i
] = 8;
48 dice
->tx_midi_ports
[0] = 1;
49 dice
->rx_midi_ports
[0] = 1;