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