pcm format 8 channels, using two ac108 chips
This commit is contained in:
parent
7f4b5849a7
commit
5028a91201
6 changed files with 1097 additions and 17 deletions
72
ac108.c
72
ac108.c
|
@ -22,7 +22,6 @@
|
||||||
#include <sound/soc.h>
|
#include <sound/soc.h>
|
||||||
#include <sound/initval.h>
|
#include <sound/initval.h>
|
||||||
#include <sound/tlv.h>
|
#include <sound/tlv.h>
|
||||||
#include <sound/wm8960.h>
|
|
||||||
|
|
||||||
#include "ac108.h"
|
#include "ac108.h"
|
||||||
|
|
||||||
|
@ -755,6 +754,34 @@ static int ac108_configure_clocking(struct ac108_priv *ac108, unsigned int rate)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* support no more than 16 slots.
|
||||||
|
*/
|
||||||
|
static int ac108_multi_chips_slots(struct ac108_priv *ac, int slots) {
|
||||||
|
int i;
|
||||||
|
|
||||||
|
/* codec0 enable slots 1,2,3,4
|
||||||
|
* codec1 enable slots 5,6,7,8 etc
|
||||||
|
*/
|
||||||
|
for (i = 0; i < ac->codec_index; i++) {
|
||||||
|
unsigned vec;
|
||||||
|
|
||||||
|
/* 0x38-0x3A I2S_TX1_CTRLx */
|
||||||
|
vec = 0xFUL << (i << 2);
|
||||||
|
ac108_write(I2S_TX1_CTRL1, slots - 1, ac->i2c[i]);
|
||||||
|
ac108_write(I2S_TX1_CTRL2, (vec >> 0) & 0xFF, ac->i2c[i]);
|
||||||
|
ac108_write(I2S_TX1_CTRL3, (vec >> 8) & 0xFF, ac->i2c[i]);
|
||||||
|
|
||||||
|
/* 0x3C-0x3F I2S_TX1_CHMP_CTRLx */
|
||||||
|
vec = (0x0 << 0 | 0x1 << 2 | 0x2 << 4 | 0x3 << 6) << (i << 3);
|
||||||
|
ac108_write(I2S_TX1_CHMP_CTRL1, (vec >> 0) & 0xFF, ac->i2c[i]);
|
||||||
|
ac108_write(I2S_TX1_CHMP_CTRL2, (vec >> 8) & 0xFF, ac->i2c[i]);
|
||||||
|
ac108_write(I2S_TX1_CHMP_CTRL3, (vec >> 16) & 0xFF, ac->i2c[i]);
|
||||||
|
ac108_write(I2S_TX1_CHMP_CTRL4, (vec >> 24) & 0xFF, ac->i2c[i]);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static int ac108_hw_params(struct snd_pcm_substream *substream, struct snd_pcm_hw_params *params, struct snd_soc_dai *dai) {
|
static int ac108_hw_params(struct snd_pcm_substream *substream, struct snd_pcm_hw_params *params, struct snd_soc_dai *dai) {
|
||||||
unsigned int i, channels, sample_resolution, rate;
|
unsigned int i, channels, sample_resolution, rate;
|
||||||
struct snd_soc_codec *codec = dai->codec;
|
struct snd_soc_codec *codec = dai->codec;
|
||||||
|
@ -867,8 +894,12 @@ static int ac108_hw_params(struct snd_pcm_substream *substream, struct snd_pcm_h
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ac108_multi_chips_update_bits(I2S_BCLK_CTRL, 0x0F << BCLKDIV, i << BCLKDIV, ac108);
|
ac108_multi_chips_update_bits(I2S_BCLK_CTRL, 0x0F << BCLKDIV, i << BCLKDIV, ac108);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* slots allocation for each chip
|
||||||
|
*/
|
||||||
|
ac108_multi_chips_slots(ac108, channels);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -910,6 +941,8 @@ static int ac108_set_fmt(struct snd_soc_dai *dai, unsigned int fmt) {
|
||||||
|
|
||||||
unsigned char tx_offset, lrck_polarity, brck_polarity;
|
unsigned char tx_offset, lrck_polarity, brck_polarity;
|
||||||
struct ac108_priv *ac108 = dev_get_drvdata(dai->dev);
|
struct ac108_priv *ac108 = dev_get_drvdata(dai->dev);
|
||||||
|
int i;
|
||||||
|
|
||||||
switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) {
|
switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) {
|
||||||
case SND_SOC_DAIFMT_CBM_CFM: /*AC108 Master*/
|
case SND_SOC_DAIFMT_CBM_CFM: /*AC108 Master*/
|
||||||
dev_dbg(dai->dev, "AC108 set to work as Master\n");
|
dev_dbg(dai->dev, "AC108 set to work as Master\n");
|
||||||
|
@ -919,8 +952,9 @@ static int ac108_set_fmt(struct snd_soc_dai *dai, unsigned int fmt) {
|
||||||
ac108_multi_chips_update_bits(I2S_CTRL, 0x03 << LRCK_IOEN | 0x03 << SDO1_EN | 0x1 << TXEN | 0x1 << GEN,
|
ac108_multi_chips_update_bits(I2S_CTRL, 0x03 << LRCK_IOEN | 0x03 << SDO1_EN | 0x1 << TXEN | 0x1 << GEN,
|
||||||
0x03 << LRCK_IOEN | 0x03 << SDO1_EN | 0x1 << TXEN | 0x1 << GEN, ac108);
|
0x03 << LRCK_IOEN | 0x03 << SDO1_EN | 0x1 << TXEN | 0x1 << GEN, ac108);
|
||||||
/* multi_chips: only one chip set as Master, and the others also need to set as Slave */
|
/* multi_chips: only one chip set as Master, and the others also need to set as Slave */
|
||||||
if (ac108->codec_index > 1) ac108_update_bits(I2S_CTRL, 0x3 << LRCK_IOEN, 0x0 << LRCK_IOEN, ac108->i2c[1]);
|
for (i = 1; i < ac108->codec_index; i++) {
|
||||||
|
ac108_update_bits(I2S_CTRL, 0x3 << LRCK_IOEN, 0x0 << LRCK_IOEN, ac108->i2c[i]);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case SND_SOC_DAIFMT_CBS_CFS: /*AC108 Slave*/
|
case SND_SOC_DAIFMT_CBS_CFS: /*AC108 Slave*/
|
||||||
dev_dbg(dai->dev, "AC108 set to work as Slave\n");
|
dev_dbg(dai->dev, "AC108 set to work as Slave\n");
|
||||||
|
@ -1183,7 +1217,7 @@ static const struct snd_soc_codec_driver ac108_soc_codec_driver = {
|
||||||
|
|
||||||
static ssize_t ac108_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) {
|
static ssize_t ac108_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) {
|
||||||
int val = 0, flag = 0;
|
int val = 0, flag = 0;
|
||||||
u8 i = 0, reg, num, value_w, value_r;
|
u8 i = 0, reg, num, value_w, value_r[4];
|
||||||
|
|
||||||
val = simple_strtol(buf, NULL, 16);
|
val = simple_strtol(buf, NULL, 16);
|
||||||
flag = (val >> 16) & 0xF;
|
flag = (val >> 16) & 0xF;
|
||||||
|
@ -1199,12 +1233,23 @@ static ssize_t ac108_store(struct device *dev, struct device_attribute *attr, co
|
||||||
printk("\nRead: start REG:0x%02x,count:0x%02x\n", reg, num);
|
printk("\nRead: start REG:0x%02x,count:0x%02x\n", reg, num);
|
||||||
|
|
||||||
do {
|
do {
|
||||||
value_r = 0;
|
int k;
|
||||||
ac108_multi_chips_read(reg, &value_r, ac108);
|
|
||||||
printk("REG[0x%02x]: 0x%02x; ", reg, value_r);
|
memset(value_r, 0, sizeof value_r);
|
||||||
|
|
||||||
|
for (k = 0; k < ac108->codec_index; k++) {
|
||||||
|
ac108_read(reg, &value_r[k], ac108->i2c[k]);
|
||||||
|
}
|
||||||
|
if (ac108->codec_index >= 2) {
|
||||||
|
printk("REG[0x%02x]: 0x%02x 0x%02x", reg, value_r[0], value_r[1]);
|
||||||
|
} else {
|
||||||
|
printk("REG[0x%02x]: 0x%02x", reg, value_r[0]);
|
||||||
|
}
|
||||||
reg++;
|
reg++;
|
||||||
i++;
|
|
||||||
if ((i == num) || (i % 4 == 0)) printk("\n");
|
if ((++i == num) || (i % 4 == 0)) {
|
||||||
|
printk("\n");
|
||||||
|
}
|
||||||
} while (i < num);
|
} while (i < num);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1261,6 +1306,10 @@ static int ac108_i2c_probe(struct i2c_client *i2c,
|
||||||
ac108->data_protocol = val;
|
ac108->data_protocol = val;
|
||||||
|
|
||||||
|
|
||||||
|
/*Writing this register 0x12 resets all register to their default state.*/
|
||||||
|
ac108_write(CHIP_RST, CHIP_RST_VAL, i2c);
|
||||||
|
msleep(1);
|
||||||
|
|
||||||
pr_err(" i2c_id number :%d\n", (int)(i2c_id->driver_data));
|
pr_err(" i2c_id number :%d\n", (int)(i2c_id->driver_data));
|
||||||
pr_err(" ac108 codec_index :%d\n", ac108->codec_index);
|
pr_err(" ac108 codec_index :%d\n", ac108->codec_index);
|
||||||
pr_err(" ac108 I2S data protocol type :%d\n", ac108->data_protocol);
|
pr_err(" ac108 I2S data protocol type :%d\n", ac108->data_protocol);
|
||||||
|
@ -1275,9 +1324,6 @@ static int ac108_i2c_probe(struct i2c_client *i2c,
|
||||||
|
|
||||||
ac108->codec_index++;
|
ac108->codec_index++;
|
||||||
|
|
||||||
/*Writing this register 0x12 resets all register to their default state.*/
|
|
||||||
ac108_write(CHIP_RST, CHIP_RST_VAL, i2c);
|
|
||||||
|
|
||||||
ret = sysfs_create_group(&i2c->dev.kobj, &ac108_debug_attr_group);
|
ret = sysfs_create_group(&i2c->dev.kobj, &ac108_debug_attr_group);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
pr_err("failed to create attr group\n");
|
pr_err("failed to create attr group\n");
|
||||||
|
|
953
ac108_8mic.state
Normal file
953
ac108_8mic.state
Normal file
|
@ -0,0 +1,953 @@
|
||||||
|
state.ALSA {
|
||||||
|
control.1 {
|
||||||
|
iface MIXER
|
||||||
|
name 'PCM Playback Volume'
|
||||||
|
value 400
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type INTEGER
|
||||||
|
count 1
|
||||||
|
range '-10239 - 400'
|
||||||
|
dbmin -9999999
|
||||||
|
dbmax 400
|
||||||
|
dbvalue.0 400
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.2 {
|
||||||
|
iface MIXER
|
||||||
|
name 'PCM Playback Switch'
|
||||||
|
value true
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type BOOLEAN
|
||||||
|
count 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.3 {
|
||||||
|
iface MIXER
|
||||||
|
name 'PCM Playback Route'
|
||||||
|
value 0
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type INTEGER
|
||||||
|
count 1
|
||||||
|
range '0 - 2'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.4 {
|
||||||
|
iface PCM
|
||||||
|
name 'IEC958 Playback Default'
|
||||||
|
value '0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type IEC958
|
||||||
|
count 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.5 {
|
||||||
|
iface PCM
|
||||||
|
name 'IEC958 Playback Con Mask'
|
||||||
|
value '0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
|
||||||
|
comment {
|
||||||
|
access read
|
||||||
|
type IEC958
|
||||||
|
count 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.6 {
|
||||||
|
iface PCM
|
||||||
|
name 'IEC958 Playback PCM Stream'
|
||||||
|
value '0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
|
||||||
|
comment {
|
||||||
|
access 'read write inactive'
|
||||||
|
type IEC958
|
||||||
|
count 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
state.seeed8micvoicec {
|
||||||
|
control.1 {
|
||||||
|
iface MIXER
|
||||||
|
name 'OUT1 Mute'
|
||||||
|
value false
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type BOOLEAN
|
||||||
|
count 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.2 {
|
||||||
|
iface MIXER
|
||||||
|
name 'OUT2 Mute'
|
||||||
|
value true
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type BOOLEAN
|
||||||
|
count 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.3 {
|
||||||
|
iface MIXER
|
||||||
|
name 'TX1 Channel1~8 enable'
|
||||||
|
value '1-4 channels '
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type ENUMERATED
|
||||||
|
count 1
|
||||||
|
item.0 'disable all'
|
||||||
|
item.1 '1-1 channels '
|
||||||
|
item.2 '1-2 channels '
|
||||||
|
item.3 '1-3 channels '
|
||||||
|
item.4 '1-4 channels '
|
||||||
|
item.5 '1-5 channels '
|
||||||
|
item.6 '1-6 channels '
|
||||||
|
item.7 '1-7 channels '
|
||||||
|
item.8 '1-8 channels '
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.4 {
|
||||||
|
iface MIXER
|
||||||
|
name 'TX1 Channel9~16 enable'
|
||||||
|
value 'disable all'
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type ENUMERATED
|
||||||
|
count 1
|
||||||
|
item.0 'disable all'
|
||||||
|
item.1 '8-9 channels '
|
||||||
|
item.2 '8-10 channels '
|
||||||
|
item.3 '8-11 channels '
|
||||||
|
item.4 '8-12 channels '
|
||||||
|
item.5 '8-13 channels '
|
||||||
|
item.6 '8-14 channels '
|
||||||
|
item.7 '8-15 channels '
|
||||||
|
item.8 '8-16 channels '
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.5 {
|
||||||
|
iface MIXER
|
||||||
|
name 'TX2 Channel1~8 enable'
|
||||||
|
value 'disable all'
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type ENUMERATED
|
||||||
|
count 1
|
||||||
|
item.0 'disable all'
|
||||||
|
item.1 '1-1 channels '
|
||||||
|
item.2 '1-2 channels '
|
||||||
|
item.3 '1-3 channels '
|
||||||
|
item.4 '1-4 channels '
|
||||||
|
item.5 '1-5 channels '
|
||||||
|
item.6 '1-6 channels '
|
||||||
|
item.7 '1-7 channels '
|
||||||
|
item.8 '1-8 channels '
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.6 {
|
||||||
|
iface MIXER
|
||||||
|
name 'TX2 Channel9~16 enable'
|
||||||
|
value 'disable all'
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type ENUMERATED
|
||||||
|
count 1
|
||||||
|
item.0 'disable all'
|
||||||
|
item.1 '8-9 channels '
|
||||||
|
item.2 '8-10 channels '
|
||||||
|
item.3 '8-11 channels '
|
||||||
|
item.4 '8-12 channels '
|
||||||
|
item.5 '8-13 channels '
|
||||||
|
item.6 '8-14 channels '
|
||||||
|
item.7 '8-15 channels '
|
||||||
|
item.8 '8-16 channels '
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.7 {
|
||||||
|
iface MIXER
|
||||||
|
name 'CH1 digital volume'
|
||||||
|
value 181
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type INTEGER
|
||||||
|
count 1
|
||||||
|
range '0 - 255'
|
||||||
|
dbmin -11925
|
||||||
|
dbmax 7200
|
||||||
|
dbvalue.0 1650
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.8 {
|
||||||
|
iface MIXER
|
||||||
|
name 'CH2 digital volume'
|
||||||
|
value 181
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type INTEGER
|
||||||
|
count 1
|
||||||
|
range '0 - 255'
|
||||||
|
dbmin -11925
|
||||||
|
dbmax 7200
|
||||||
|
dbvalue.0 1650
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.9 {
|
||||||
|
iface MIXER
|
||||||
|
name 'CH3 digital volume'
|
||||||
|
value 181
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type INTEGER
|
||||||
|
count 1
|
||||||
|
range '0 - 255'
|
||||||
|
dbmin -11925
|
||||||
|
dbmax 7200
|
||||||
|
dbvalue.0 1650
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.10 {
|
||||||
|
iface MIXER
|
||||||
|
name 'CH4 digital volume'
|
||||||
|
value 181
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type INTEGER
|
||||||
|
count 1
|
||||||
|
range '0 - 255'
|
||||||
|
dbmin -11925
|
||||||
|
dbmax 7200
|
||||||
|
dbvalue.0 1650
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.11 {
|
||||||
|
iface MIXER
|
||||||
|
name 'ADC1 PGA gain'
|
||||||
|
value 27
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type INTEGER
|
||||||
|
count 1
|
||||||
|
range '0 - 31'
|
||||||
|
dbmin 0
|
||||||
|
dbmax 3100
|
||||||
|
dbvalue.0 2700
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.12 {
|
||||||
|
iface MIXER
|
||||||
|
name 'ADC2 PGA gain'
|
||||||
|
value 27
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type INTEGER
|
||||||
|
count 1
|
||||||
|
range '0 - 31'
|
||||||
|
dbmin 0
|
||||||
|
dbmax 3100
|
||||||
|
dbvalue.0 2700
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.13 {
|
||||||
|
iface MIXER
|
||||||
|
name 'ADC3 PGA gain'
|
||||||
|
value 27
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type INTEGER
|
||||||
|
count 1
|
||||||
|
range '0 - 31'
|
||||||
|
dbmin 0
|
||||||
|
dbmax 3100
|
||||||
|
dbvalue.0 2700
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.14 {
|
||||||
|
iface MIXER
|
||||||
|
name 'ADC4 PGA gain'
|
||||||
|
value 27
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type INTEGER
|
||||||
|
count 1
|
||||||
|
range '0 - 31'
|
||||||
|
dbmin 0
|
||||||
|
dbmax 3100
|
||||||
|
dbvalue.0 2700
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.15 {
|
||||||
|
iface MIXER
|
||||||
|
name 'Tx1 Channels'
|
||||||
|
value '4 channels '
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type ENUMERATED
|
||||||
|
count 1
|
||||||
|
item.0 '1 channels '
|
||||||
|
item.1 '2 channels '
|
||||||
|
item.2 '3 channels '
|
||||||
|
item.3 '4 channels '
|
||||||
|
item.4 '5 channels '
|
||||||
|
item.5 '6 channels '
|
||||||
|
item.6 '7 channels '
|
||||||
|
item.7 '8 channels '
|
||||||
|
item.8 '9 channels '
|
||||||
|
item.9 '10 channels '
|
||||||
|
item.10 '11 channels '
|
||||||
|
item.11 '12 channels '
|
||||||
|
item.12 '13 channels '
|
||||||
|
item.13 '14 channels '
|
||||||
|
item.14 '15 channels '
|
||||||
|
item.15 '16 channels '
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.16 {
|
||||||
|
iface MIXER
|
||||||
|
name 'Tx2 Channels'
|
||||||
|
value '1 channels '
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type ENUMERATED
|
||||||
|
count 1
|
||||||
|
item.0 '1 channels '
|
||||||
|
item.1 '2 channels '
|
||||||
|
item.2 '3 channels '
|
||||||
|
item.3 '4 channels '
|
||||||
|
item.4 '5 channels '
|
||||||
|
item.5 '6 channels '
|
||||||
|
item.6 '7 channels '
|
||||||
|
item.7 '8 channels '
|
||||||
|
item.8 '9 channels '
|
||||||
|
item.9 '10 channels '
|
||||||
|
item.10 '11 channels '
|
||||||
|
item.11 '12 channels '
|
||||||
|
item.12 '13 channels '
|
||||||
|
item.13 '14 channels '
|
||||||
|
item.14 '15 channels '
|
||||||
|
item.15 '16 channels '
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.17 {
|
||||||
|
iface MIXER
|
||||||
|
name 'Tx1 Channels 1 MAP'
|
||||||
|
value '1st adc sample'
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type ENUMERATED
|
||||||
|
count 1
|
||||||
|
item.0 '1st adc sample'
|
||||||
|
item.1 '2st adc sample'
|
||||||
|
item.2 '3st adc sample'
|
||||||
|
item.3 '4st adc sample'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.18 {
|
||||||
|
iface MIXER
|
||||||
|
name 'Tx1 Channels 2 MAP'
|
||||||
|
value '2st adc sample'
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type ENUMERATED
|
||||||
|
count 1
|
||||||
|
item.0 '1st adc sample'
|
||||||
|
item.1 '2st adc sample'
|
||||||
|
item.2 '3st adc sample'
|
||||||
|
item.3 '4st adc sample'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.19 {
|
||||||
|
iface MIXER
|
||||||
|
name 'Tx1 Channels 3 MAP'
|
||||||
|
value '3st adc sample'
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type ENUMERATED
|
||||||
|
count 1
|
||||||
|
item.0 '1st adc sample'
|
||||||
|
item.1 '2st adc sample'
|
||||||
|
item.2 '3st adc sample'
|
||||||
|
item.3 '4st adc sample'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.20 {
|
||||||
|
iface MIXER
|
||||||
|
name 'Tx1 Channels 4 MAP'
|
||||||
|
value '4st adc sample'
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type ENUMERATED
|
||||||
|
count 1
|
||||||
|
item.0 '1st adc sample'
|
||||||
|
item.1 '2st adc sample'
|
||||||
|
item.2 '3st adc sample'
|
||||||
|
item.3 '4st adc sample'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.21 {
|
||||||
|
iface MIXER
|
||||||
|
name 'Tx1 Channels 5 MAP'
|
||||||
|
value '1st adc sample'
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type ENUMERATED
|
||||||
|
count 1
|
||||||
|
item.0 '1st adc sample'
|
||||||
|
item.1 '2st adc sample'
|
||||||
|
item.2 '3st adc sample'
|
||||||
|
item.3 '4st adc sample'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.22 {
|
||||||
|
iface MIXER
|
||||||
|
name 'Tx1 Channels 6 MAP'
|
||||||
|
value '1st adc sample'
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type ENUMERATED
|
||||||
|
count 1
|
||||||
|
item.0 '1st adc sample'
|
||||||
|
item.1 '2st adc sample'
|
||||||
|
item.2 '3st adc sample'
|
||||||
|
item.3 '4st adc sample'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.23 {
|
||||||
|
iface MIXER
|
||||||
|
name 'Tx1 Channels 7 MAP'
|
||||||
|
value '1st adc sample'
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type ENUMERATED
|
||||||
|
count 1
|
||||||
|
item.0 '1st adc sample'
|
||||||
|
item.1 '2st adc sample'
|
||||||
|
item.2 '3st adc sample'
|
||||||
|
item.3 '4st adc sample'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.24 {
|
||||||
|
iface MIXER
|
||||||
|
name 'Tx1 Channels 8 MAP'
|
||||||
|
value '1st adc sample'
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type ENUMERATED
|
||||||
|
count 1
|
||||||
|
item.0 '1st adc sample'
|
||||||
|
item.1 '2st adc sample'
|
||||||
|
item.2 '3st adc sample'
|
||||||
|
item.3 '4st adc sample'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.25 {
|
||||||
|
iface MIXER
|
||||||
|
name 'Tx1 Channels 9 MAP'
|
||||||
|
value '1st adc sample'
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type ENUMERATED
|
||||||
|
count 1
|
||||||
|
item.0 '1st adc sample'
|
||||||
|
item.1 '2st adc sample'
|
||||||
|
item.2 '3st adc sample'
|
||||||
|
item.3 '4st adc sample'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.26 {
|
||||||
|
iface MIXER
|
||||||
|
name 'Tx1 Channels 10 MAP'
|
||||||
|
value '1st adc sample'
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type ENUMERATED
|
||||||
|
count 1
|
||||||
|
item.0 '1st adc sample'
|
||||||
|
item.1 '2st adc sample'
|
||||||
|
item.2 '3st adc sample'
|
||||||
|
item.3 '4st adc sample'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.27 {
|
||||||
|
iface MIXER
|
||||||
|
name 'Tx1 Channels 11 MAP'
|
||||||
|
value '1st adc sample'
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type ENUMERATED
|
||||||
|
count 1
|
||||||
|
item.0 '1st adc sample'
|
||||||
|
item.1 '2st adc sample'
|
||||||
|
item.2 '3st adc sample'
|
||||||
|
item.3 '4st adc sample'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.28 {
|
||||||
|
iface MIXER
|
||||||
|
name 'Tx1 Channels 12 MAP'
|
||||||
|
value '1st adc sample'
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type ENUMERATED
|
||||||
|
count 1
|
||||||
|
item.0 '1st adc sample'
|
||||||
|
item.1 '2st adc sample'
|
||||||
|
item.2 '3st adc sample'
|
||||||
|
item.3 '4st adc sample'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.29 {
|
||||||
|
iface MIXER
|
||||||
|
name 'Tx1 Channels 13 MAP'
|
||||||
|
value '1st adc sample'
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type ENUMERATED
|
||||||
|
count 1
|
||||||
|
item.0 '1st adc sample'
|
||||||
|
item.1 '2st adc sample'
|
||||||
|
item.2 '3st adc sample'
|
||||||
|
item.3 '4st adc sample'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.30 {
|
||||||
|
iface MIXER
|
||||||
|
name 'Tx1 Channels 14 MAP'
|
||||||
|
value '1st adc sample'
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type ENUMERATED
|
||||||
|
count 1
|
||||||
|
item.0 '1st adc sample'
|
||||||
|
item.1 '2st adc sample'
|
||||||
|
item.2 '3st adc sample'
|
||||||
|
item.3 '4st adc sample'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.31 {
|
||||||
|
iface MIXER
|
||||||
|
name 'Tx1 Channels 15 MAP'
|
||||||
|
value '1st adc sample'
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type ENUMERATED
|
||||||
|
count 1
|
||||||
|
item.0 '1st adc sample'
|
||||||
|
item.1 '2st adc sample'
|
||||||
|
item.2 '3st adc sample'
|
||||||
|
item.3 '4st adc sample'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.32 {
|
||||||
|
iface MIXER
|
||||||
|
name 'Tx1 Channels 16 MAP'
|
||||||
|
value '1st adc sample'
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type ENUMERATED
|
||||||
|
count 1
|
||||||
|
item.0 '1st adc sample'
|
||||||
|
item.1 '2st adc sample'
|
||||||
|
item.2 '3st adc sample'
|
||||||
|
item.3 '4st adc sample'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.33 {
|
||||||
|
iface MIXER
|
||||||
|
name 'Tx2 Channels 1 MAP'
|
||||||
|
value '1st adc sample'
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type ENUMERATED
|
||||||
|
count 1
|
||||||
|
item.0 '1st adc sample'
|
||||||
|
item.1 '2st adc sample'
|
||||||
|
item.2 '3st adc sample'
|
||||||
|
item.3 '4st adc sample'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.34 {
|
||||||
|
iface MIXER
|
||||||
|
name 'Tx2 Channels 2 MAP'
|
||||||
|
value '1st adc sample'
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type ENUMERATED
|
||||||
|
count 1
|
||||||
|
item.0 '1st adc sample'
|
||||||
|
item.1 '2st adc sample'
|
||||||
|
item.2 '3st adc sample'
|
||||||
|
item.3 '4st adc sample'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.35 {
|
||||||
|
iface MIXER
|
||||||
|
name 'Tx2 Channels 3 MAP'
|
||||||
|
value '1st adc sample'
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type ENUMERATED
|
||||||
|
count 1
|
||||||
|
item.0 '1st adc sample'
|
||||||
|
item.1 '2st adc sample'
|
||||||
|
item.2 '3st adc sample'
|
||||||
|
item.3 '4st adc sample'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.36 {
|
||||||
|
iface MIXER
|
||||||
|
name 'Tx2 Channels 4 MAP'
|
||||||
|
value '1st adc sample'
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type ENUMERATED
|
||||||
|
count 1
|
||||||
|
item.0 '1st adc sample'
|
||||||
|
item.1 '2st adc sample'
|
||||||
|
item.2 '3st adc sample'
|
||||||
|
item.3 '4st adc sample'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.37 {
|
||||||
|
iface MIXER
|
||||||
|
name 'Tx2 Channels 5 MAP'
|
||||||
|
value '1st adc sample'
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type ENUMERATED
|
||||||
|
count 1
|
||||||
|
item.0 '1st adc sample'
|
||||||
|
item.1 '2st adc sample'
|
||||||
|
item.2 '3st adc sample'
|
||||||
|
item.3 '4st adc sample'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.38 {
|
||||||
|
iface MIXER
|
||||||
|
name 'Tx2 Channels 6 MAP'
|
||||||
|
value '1st adc sample'
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type ENUMERATED
|
||||||
|
count 1
|
||||||
|
item.0 '1st adc sample'
|
||||||
|
item.1 '2st adc sample'
|
||||||
|
item.2 '3st adc sample'
|
||||||
|
item.3 '4st adc sample'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.39 {
|
||||||
|
iface MIXER
|
||||||
|
name 'Tx2 Channels 7 MAP'
|
||||||
|
value '1st adc sample'
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type ENUMERATED
|
||||||
|
count 1
|
||||||
|
item.0 '1st adc sample'
|
||||||
|
item.1 '2st adc sample'
|
||||||
|
item.2 '3st adc sample'
|
||||||
|
item.3 '4st adc sample'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.40 {
|
||||||
|
iface MIXER
|
||||||
|
name 'Tx2 Channels 8 MAP'
|
||||||
|
value '1st adc sample'
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type ENUMERATED
|
||||||
|
count 1
|
||||||
|
item.0 '1st adc sample'
|
||||||
|
item.1 '2st adc sample'
|
||||||
|
item.2 '3st adc sample'
|
||||||
|
item.3 '4st adc sample'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.41 {
|
||||||
|
iface MIXER
|
||||||
|
name 'Tx2 Channels 9 MAP'
|
||||||
|
value '1st adc sample'
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type ENUMERATED
|
||||||
|
count 1
|
||||||
|
item.0 '1st adc sample'
|
||||||
|
item.1 '2st adc sample'
|
||||||
|
item.2 '3st adc sample'
|
||||||
|
item.3 '4st adc sample'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.42 {
|
||||||
|
iface MIXER
|
||||||
|
name 'Tx2 Channels 10 MAP'
|
||||||
|
value '1st adc sample'
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type ENUMERATED
|
||||||
|
count 1
|
||||||
|
item.0 '1st adc sample'
|
||||||
|
item.1 '2st adc sample'
|
||||||
|
item.2 '3st adc sample'
|
||||||
|
item.3 '4st adc sample'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.43 {
|
||||||
|
iface MIXER
|
||||||
|
name 'Tx2 Channels 11 MAP'
|
||||||
|
value '1st adc sample'
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type ENUMERATED
|
||||||
|
count 1
|
||||||
|
item.0 '1st adc sample'
|
||||||
|
item.1 '2st adc sample'
|
||||||
|
item.2 '3st adc sample'
|
||||||
|
item.3 '4st adc sample'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.44 {
|
||||||
|
iface MIXER
|
||||||
|
name 'Tx2 Channels 12 MAP'
|
||||||
|
value '1st adc sample'
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type ENUMERATED
|
||||||
|
count 1
|
||||||
|
item.0 '1st adc sample'
|
||||||
|
item.1 '2st adc sample'
|
||||||
|
item.2 '3st adc sample'
|
||||||
|
item.3 '4st adc sample'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.45 {
|
||||||
|
iface MIXER
|
||||||
|
name 'Tx2 Channels 13 MAP'
|
||||||
|
value '1st adc sample'
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type ENUMERATED
|
||||||
|
count 1
|
||||||
|
item.0 '1st adc sample'
|
||||||
|
item.1 '2st adc sample'
|
||||||
|
item.2 '3st adc sample'
|
||||||
|
item.3 '4st adc sample'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.46 {
|
||||||
|
iface MIXER
|
||||||
|
name 'Tx2 Channels 14 MAP'
|
||||||
|
value '1st adc sample'
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type ENUMERATED
|
||||||
|
count 1
|
||||||
|
item.0 '1st adc sample'
|
||||||
|
item.1 '2st adc sample'
|
||||||
|
item.2 '3st adc sample'
|
||||||
|
item.3 '4st adc sample'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.47 {
|
||||||
|
iface MIXER
|
||||||
|
name 'Tx2 Channels 15 MAP'
|
||||||
|
value '1st adc sample'
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type ENUMERATED
|
||||||
|
count 1
|
||||||
|
item.0 '1st adc sample'
|
||||||
|
item.1 '2st adc sample'
|
||||||
|
item.2 '3st adc sample'
|
||||||
|
item.3 '4st adc sample'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.48 {
|
||||||
|
iface MIXER
|
||||||
|
name 'Tx2 Channels 16 MAP'
|
||||||
|
value '1st adc sample'
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type ENUMERATED
|
||||||
|
count 1
|
||||||
|
item.0 '1st adc sample'
|
||||||
|
item.1 '2st adc sample'
|
||||||
|
item.2 '3st adc sample'
|
||||||
|
item.3 '4st adc sample'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.49 {
|
||||||
|
iface MIXER
|
||||||
|
name 'ADC4 Source'
|
||||||
|
value 'Analog ADC4'
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type ENUMERATED
|
||||||
|
count 1
|
||||||
|
item.0 'Analog ADC1'
|
||||||
|
item.1 'Analog ADC2'
|
||||||
|
item.2 'Analog ADC3'
|
||||||
|
item.3 'Analog ADC4'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.50 {
|
||||||
|
iface MIXER
|
||||||
|
name 'ADC3 Source'
|
||||||
|
value 'Analog ADC3'
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type ENUMERATED
|
||||||
|
count 1
|
||||||
|
item.0 'Analog ADC1'
|
||||||
|
item.1 'Analog ADC2'
|
||||||
|
item.2 'Analog ADC3'
|
||||||
|
item.3 'Analog ADC4'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.51 {
|
||||||
|
iface MIXER
|
||||||
|
name 'ADC2 Source'
|
||||||
|
value 'Analog ADC2'
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type ENUMERATED
|
||||||
|
count 1
|
||||||
|
item.0 'Analog ADC1'
|
||||||
|
item.1 'Analog ADC2'
|
||||||
|
item.2 'Analog ADC3'
|
||||||
|
item.3 'Analog ADC4'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.52 {
|
||||||
|
iface MIXER
|
||||||
|
name 'ADC1 Source'
|
||||||
|
value 'Analog ADC1'
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type ENUMERATED
|
||||||
|
count 1
|
||||||
|
item.0 'Analog ADC1'
|
||||||
|
item.1 'Analog ADC2'
|
||||||
|
item.2 'Analog ADC3'
|
||||||
|
item.3 'Analog ADC4'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.53 {
|
||||||
|
iface MIXER
|
||||||
|
name 'ADC1 Digital Mixer gc'
|
||||||
|
value 'disable all'
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type ENUMERATED
|
||||||
|
count 1
|
||||||
|
item.0 'disable all'
|
||||||
|
item.1 'ADC1 data'
|
||||||
|
item.2 'ADC2 data'
|
||||||
|
item.3 'ADC3 data'
|
||||||
|
item.4 'ADC4 data'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.54 {
|
||||||
|
iface MIXER
|
||||||
|
name 'ADC1 Digital Mixer src'
|
||||||
|
value 'ADC1 data'
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type ENUMERATED
|
||||||
|
count 1
|
||||||
|
item.0 'disable all'
|
||||||
|
item.1 'ADC1 data'
|
||||||
|
item.2 'ADC2 data'
|
||||||
|
item.3 'ADC3 data'
|
||||||
|
item.4 'ADC4 data'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.55 {
|
||||||
|
iface MIXER
|
||||||
|
name 'ADC2 Digital Mixer gc'
|
||||||
|
value 'disable all'
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type ENUMERATED
|
||||||
|
count 1
|
||||||
|
item.0 'disable all'
|
||||||
|
item.1 'ADC1 data'
|
||||||
|
item.2 'ADC2 data'
|
||||||
|
item.3 'ADC3 data'
|
||||||
|
item.4 'ADC4 data'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.56 {
|
||||||
|
iface MIXER
|
||||||
|
name 'ADC2 Digital Mixer src'
|
||||||
|
value 'ADC2 data'
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type ENUMERATED
|
||||||
|
count 1
|
||||||
|
item.0 'disable all'
|
||||||
|
item.1 'ADC1 data'
|
||||||
|
item.2 'ADC2 data'
|
||||||
|
item.3 'ADC3 data'
|
||||||
|
item.4 'ADC4 data'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.57 {
|
||||||
|
iface MIXER
|
||||||
|
name 'ADC3 Digital Mixer gc'
|
||||||
|
value 'disable all'
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type ENUMERATED
|
||||||
|
count 1
|
||||||
|
item.0 'disable all'
|
||||||
|
item.1 'ADC1 data'
|
||||||
|
item.2 'ADC2 data'
|
||||||
|
item.3 'ADC3 data'
|
||||||
|
item.4 'ADC4 data'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.58 {
|
||||||
|
iface MIXER
|
||||||
|
name 'ADC3 Digital Mixer src'
|
||||||
|
value 'ADC3 data'
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type ENUMERATED
|
||||||
|
count 1
|
||||||
|
item.0 'disable all'
|
||||||
|
item.1 'ADC1 data'
|
||||||
|
item.2 'ADC2 data'
|
||||||
|
item.3 'ADC3 data'
|
||||||
|
item.4 'ADC4 data'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.59 {
|
||||||
|
iface MIXER
|
||||||
|
name 'ADC4 Digital Mixer gc'
|
||||||
|
value 'disable all'
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type ENUMERATED
|
||||||
|
count 1
|
||||||
|
item.0 'disable all'
|
||||||
|
item.1 'ADC1 data'
|
||||||
|
item.2 'ADC2 data'
|
||||||
|
item.3 'ADC3 data'
|
||||||
|
item.4 'ADC4 data'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
control.60 {
|
||||||
|
iface MIXER
|
||||||
|
name 'ADC4 Digital Mixer src'
|
||||||
|
value 'ADC4 data'
|
||||||
|
comment {
|
||||||
|
access 'read write'
|
||||||
|
type ENUMERATED
|
||||||
|
count 1
|
||||||
|
item.0 'disable all'
|
||||||
|
item.1 'ADC1 data'
|
||||||
|
item.2 'ADC2 data'
|
||||||
|
item.3 'ADC3 data'
|
||||||
|
item.4 'ADC4 data'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
dtc -@ -I dts -O dtb -o seeed-2mic-voicecard.dtbo seeed-2mic-voicecard-overlay.dts
|
dtc -@ -I dts -O dtb -o seeed-2mic-voicecard.dtbo seeed-2mic-voicecard-overlay.dts
|
||||||
dtc -@ -I dts -O dtb -o seeed-4mic-voicecard.dtbo seeed-4mic-voicecard-overlay.dts
|
dtc -@ -I dts -O dtb -o seeed-4mic-voicecard.dtbo seeed-4mic-voicecard-overlay.dts
|
||||||
|
dtc -@ -I dts -O dtb -o seeed-8mic-voicecard.dtbo seeed-8mic-voicecard-overlay.dts
|
||||||
|
|
||||||
# cp *.dtbo /boot/overlays
|
# cp *.dtbo /boot/overlays
|
||||||
# dtoverlay seeed-2mic-voicecard
|
# dtoverlay seeed-2mic-voicecard
|
||||||
|
|
80
seeed-8mic-voicecard-overlay.dts
Normal file
80
seeed-8mic-voicecard-overlay.dts
Normal file
|
@ -0,0 +1,80 @@
|
||||||
|
/dts-v1/;
|
||||||
|
/plugin/;
|
||||||
|
|
||||||
|
/ {
|
||||||
|
compatible = "brcm,bcm2708";
|
||||||
|
|
||||||
|
fragment@0 {
|
||||||
|
target = <&i2s>;
|
||||||
|
__overlay__ {
|
||||||
|
#sound-dai-cells = <0>;
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
fragment@1 {
|
||||||
|
target-path = "/clocks";
|
||||||
|
__overlay__ {
|
||||||
|
ac108_mclk: codec-mclk {
|
||||||
|
compatible = "fixed-clock";
|
||||||
|
#clock-cells = <0>;
|
||||||
|
clock-frequency = <24000000>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
fragment@2 {
|
||||||
|
target = <&i2c1>;
|
||||||
|
__overlay__ {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
|
ac108_a: ac108@35{
|
||||||
|
compatible = "x-power,ac108_0";
|
||||||
|
reg = <0x35>;
|
||||||
|
#sound-dai-cells = <0>;
|
||||||
|
data-protocol = <0>;
|
||||||
|
};
|
||||||
|
|
||||||
|
ac108_b: ac108@3b{
|
||||||
|
compatible = "x-power,ac108_1";
|
||||||
|
reg = <0x3b>;
|
||||||
|
#sound-dai-cells = <0>;
|
||||||
|
data-protocol = <0>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
fragment@3 {
|
||||||
|
target = <&sound>;
|
||||||
|
|
||||||
|
sound_overlay: __overlay__ {
|
||||||
|
compatible = "simple-audio-card";
|
||||||
|
simple-audio-card,format = "dsp_a";
|
||||||
|
simple-audio-card,name = "seeed-8mic-voicecard";
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
|
simple-audio-card,bitclock-master = <&codec_dai>;
|
||||||
|
simple-audio-card,frame-master = <&codec_dai>;
|
||||||
|
|
||||||
|
cpu_dai: simple-audio-card,cpu {
|
||||||
|
sound-dai = <&i2s>;
|
||||||
|
dai-tdm-slot-num = <2>;
|
||||||
|
dai-tdm-slot-width = <32>;
|
||||||
|
dai-tdm-slot-tx-mask = <1 1 0 0>;
|
||||||
|
dai-tdm-slot-rx-mask = <1 1 0 0>;
|
||||||
|
};
|
||||||
|
codec_dai: simple-audio-card,codec {
|
||||||
|
sound-dai = <&ac108_b>;
|
||||||
|
clocks = <&ac108_mclk>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
__overrides__ {
|
||||||
|
card-name = <&sound_overlay>,"seeed-voicecard,name";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
BIN
seeed-8mic-voicecard.dtbo
Normal file
BIN
seeed-8mic-voicecard.dtbo
Normal file
Binary file not shown.
|
@ -125,10 +125,10 @@ static int asoc_simple_card_startup(struct snd_pcm_substream *substream)
|
||||||
if (ret)
|
if (ret)
|
||||||
clk_disable_unprepare(dai_props->cpu_dai.clk);
|
clk_disable_unprepare(dai_props->cpu_dai.clk);
|
||||||
|
|
||||||
rtd->cpu_dai->driver->playback.channels_min = 4;
|
rtd->cpu_dai->driver->playback.channels_min = 8;
|
||||||
rtd->cpu_dai->driver->playback.channels_max = 4;
|
rtd->cpu_dai->driver->playback.channels_max = 8;
|
||||||
rtd->cpu_dai->driver->capture.channels_min = 4;
|
rtd->cpu_dai->driver->capture.channels_min = 8;
|
||||||
rtd->cpu_dai->driver->capture.channels_max = 4;
|
rtd->cpu_dai->driver->capture.channels_max = 8;
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue