root/sound/firewire/dice/dice-alesis.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. snd_dice_detect_alesis_formats

   1 // SPDX-License-Identifier: GPL-2.0
   2 /*
   3  * dice-alesis.c - a part of driver for DICE based devices
   4  *
   5  * Copyright (c) 2018 Takashi Sakamoto
   6  */
   7 
   8 #include "dice.h"
   9 
  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. */
  14 };
  15 
  16 static const unsigned int
  17 alesis_io26_tx_pcm_chs[MAX_STREAMS][SND_DICE_RATE_MODE_COUNT] = {
  18         {10, 10, 4},    /* Tx0 = Analog + S/PDIF. */
  19         {16, 8, 0},     /* Tx1 = ADAT1 + ADAT2. */
  20 };
  21 
  22 int snd_dice_detect_alesis_formats(struct snd_dice *dice)
  23 {
  24         __be32 reg;
  25         u32 data;
  26         int i;
  27         int err;
  28 
  29         err = snd_dice_transaction_read_tx(dice, TX_NUMBER_AUDIO, &reg,
  30                                            sizeof(reg));
  31         if (err < 0)
  32                 return err;
  33         data = be32_to_cpu(reg);
  34 
  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));
  39         } else {
  40                 memcpy(dice->tx_pcm_chs, alesis_io26_tx_pcm_chs,
  41                                 MAX_STREAMS * SND_DICE_RATE_MODE_COUNT *
  42                                 sizeof(unsigned int));
  43         }
  44 
  45         for (i = 0; i < SND_DICE_RATE_MODE_COUNT; ++i)
  46                 dice->rx_pcm_chs[0][i] = 8;
  47 
  48         dice->tx_midi_ports[0] = 1;
  49         dice->rx_midi_ports[0] = 1;
  50 
  51         return 0;
  52 }

/* [<][>][^][v][top][bottom][index][help] */