ice1712: Style cleanup and improvements

This commit is contained in:
Jérôme Leveque
2011-11-24 20:54:41 +01:00
committed by Jérôme Duval
parent dea8f9c766
commit 6fabf01910
4 changed files with 115 additions and 110 deletions
@@ -207,9 +207,9 @@ ice1712_setup(ice1712 *ice)
// B : Stereo ADC number minus 1 (=> 1 to 4)
// A : Stereo DAC number minus 1 (=> 1 to 4)
ice->nb_DAC = ((reg8 & 0x03) + 1) * 2;
ice->config.nb_DAC = ((reg8 & 0x03) + 1) * 2;
reg8 >>= 2;
ice->nb_ADC = ((reg8 & 0x03) + 1) * 2;
ice->config.nb_ADC = ((reg8 & 0x03) + 1) * 2;
reg8 >>= 2;
if ((reg8 & 0x01) != 0) {//Consumer AC'97 Exist
@@ -223,16 +223,16 @@ ice1712_setup(ice1712 *ice)
TRACE("Consumer AC'97 does NOT exist\n");
}
reg8 >>= 1;
ice->nb_MPU401 = (reg8 & 0x1) + 1;
ice->config.nb_MPU401 = (reg8 & 0x1) + 1;
for (i = 0; i < ice->nb_MPU401; i++) {
for (i = 0; i < ice->config.nb_MPU401; i++) {
sprintf(ice->midi_interf[i].name, "midi/ice1712/%ld/%d",
ice - cards + 1, i + 1);
names[num_names++] = ice->midi_interf[i].name;
}
TRACE("E2PROM_MAP_SPDIF : 0x%x\n", ice->eeprom_data[E2PROM_MAP_SPDIF]);
ice->spdif_config = ice->eeprom_data[E2PROM_MAP_SPDIF];
ice->config.spdif = ice->eeprom_data[E2PROM_MAP_SPDIF];
switch (ice->product) {
case ICE1712_SUBDEVICE_DELTA66 :
@@ -312,12 +312,12 @@ ice1712_setup(ice1712 *ice)
ice->frames_count = 0;
ice->buffer_size = MAX_BUFFER_FRAMES;
ice->total_output_channels = ice->nb_DAC;
if (ice->spdif_config & NO_IN_YES_OUT)
ice->total_output_channels = ice->config.nb_DAC;
if (ice->config.spdif & SPDIF_OUT_PRESENT)
ice->total_output_channels += 2;
ice->total_input_channels = ice->nb_ADC + 2;
if (ice->spdif_config & YES_IN_NO_OUT)
ice->total_input_channels = ice->config.nb_ADC + 2;
if (ice->config.spdif & SPDIF_IN_PRESENT)
ice->total_input_channels += 2;
//Write bits in the GPIO
@@ -343,7 +343,7 @@ ice1712_setup(ice1712 *ice)
//Mute all input
mute = (ICE1712_MUTE_VALUE << 0) | (ICE1712_MUTE_VALUE << 8);
for (i = 0; i < 2 * MAX_HARDWARE_VOLUME; i++) {
for (i = 0; i < 2 * ICE1712_HARDWARE_VOLUME; i++) {
write_mt_uint8(ice, MT_VOLUME_CONTROL_CHANNEL_INDEX, i);
write_mt_uint16(ice, MT_VOLUME_CONTROL_CHANNEL_INDEX, mute);
}
@@ -707,14 +707,14 @@ applySettings(ice1712 *card)
uint16 val, mt30 = 0;
uint32 mt34 = 0;
for (i = 0; i < MAX_HARDWARE_VOLUME; i++) {
for (i = 0; i < ICE1712_HARDWARE_VOLUME; i++) {
//Select the channel
write_mt_uint8(card, MT_VOLUME_CONTROL_CHANNEL_INDEX, i);
if (card->settings.Playback[i].Mute == true) {
if (card->settings.playback[i].mute == true) {
val = (ICE1712_MUTE_VALUE << 0) | (ICE1712_MUTE_VALUE << 8);
} else {
unsigned char volume = card->settings.Playback[i].Volume / -1.5;
unsigned char volume = card->settings.playback[i].volume / -1.5;
if (i & 1) {//a right channel
val = ICE1712_MUTE_VALUE << 0; //Mute left volume
val |= volume << 8;
@@ -728,15 +728,15 @@ applySettings(ice1712 *card)
TRACE_VV("Apply Settings %d : 0x%x\n", i, val);
}
for (i = 0; i < MAX_HARDWARE_VOLUME; i++) {
for (i = 0; i < ICE1712_HARDWARE_VOLUME; i++) {
//Select the channel
write_mt_uint8(card, MT_VOLUME_CONTROL_CHANNEL_INDEX,
i + MAX_HARDWARE_VOLUME);
i + ICE1712_HARDWARE_VOLUME);
if (card->settings.Record[i].Mute == true) {
if (card->settings.record[i].mute == true) {
val = (ICE1712_MUTE_VALUE << 0) | (ICE1712_MUTE_VALUE << 8);
} else {
unsigned char volume = card->settings.Record[i].Volume / -1.5;
uint8 volume = card->settings.record[i].volume / -1.5;
if (i & 1) {//a right channel
val = ICE1712_MUTE_VALUE << 0; //Mute left volume
val |= volume << 8;
@@ -752,11 +752,11 @@ applySettings(ice1712 *card)
//Analog output selection
for (i = 0; i < 4; i++) {
uint8 out = card->settings.Output[i];
uint8 out = card->settings.output[i];
if (out == 0) {
TRACE_VV("Output %d is haiku output\n", i);
//Nothing to do
} else if (out <= (card->nb_ADC / 2)) {
} else if (out <= (card->config.nb_ADC / 2)) {
uint8 mt34_c;
out--;
TRACE_VV("Output %d is input %d\n", i, out);
@@ -764,8 +764,8 @@ applySettings(ice1712 *card)
mt34_c |= (out * 2 + 1) << 4;
mt30 |= 0x0202 << (2*i);
mt30 |= mt34_c << (8*i);
} else if (out == ((card->nb_ADC / 2) + 1)
&& (card->spdif_config & YES_IN_NO_OUT) != 0) {
} else if (out == ((card->config.nb_ADC / 2) + 1)
&& (card->config.spdif & SPDIF_IN_PRESENT) != 0) {
TRACE_VV("Output %d is digital input\n", i);
mt30 |= 0x0303 << (2*i);
mt34 |= 0x80 << (8*i);
@@ -778,20 +778,20 @@ applySettings(ice1712 *card)
write_mt_uint32(card, MT_CAPTURED_DATA, mt34);
//Digital output
if ((card->spdif_config & NO_IN_YES_OUT) != 0) {
if ((card->config.spdif & SPDIF_OUT_PRESENT) != 0) {
uint16 mt32 = 0;
uint8 out = card->settings.Output[4];
uint8 out = card->settings.output[4];
if (out == 0) {
TRACE_VV("Digital output is haiku output\n");
//Nothing to do
} else if (out <= (card->nb_ADC / 2)) {
} else if (out <= (card->config.nb_ADC / 2)) {
out--;
TRACE_VV("Digital output is input %d\n", out);
mt32 |= 0x0202;
mt32 |= (out * 2) << 8;
mt32 |= (out * 2 + 1) << 12;
} else if (out == ((card->nb_ADC / 2) + 1)
&& (card->spdif_config & YES_IN_NO_OUT) != 0) {
} else if (out == ((card->config.nb_ADC / 2) + 1)
&& (card->config.spdif & SPDIF_IN_PRESENT) != 0) {
TRACE_VV("Digital output is digital input\n");
mt32 |= 0x800F;
} else {
@@ -40,7 +40,7 @@ typedef enum product_t {
#define MIN_BUFFER_FRAMES 64
#define MAX_BUFFER_FRAMES 2048
#define MAX_HARDWARE_VOLUME 10
#define ICE1712_HARDWARE_VOLUME 10
#define ICE1712_MUTE_VALUE 0x7F
#define PLAYBACK_BUFFER_SIZE (MAX_BUFFER_FRAMES * MAX_DAC * SAMPLE_SIZE)
@@ -54,12 +54,13 @@ typedef enum product_t {
#define MIXER_OUT_LEFT 10
#define MIXER_OUT_RIGHT 11
typedef enum {
NO_IN_NO_OUT = 0,
NO_IN_YES_OUT = 1,
YES_IN_NO_OUT = 2,
YES_IN_YES_OUT = 3,
} _spdif_config_ ;
#define SPDIF_OUT_PRESENT 1
#define SPDIF_IN_PRESENT 2
#define ICE1712_SAMPLERATE_96K 0x7
#define ICE1712_SAMPLERATE_48K 0x0
#define ICE1712_SAMPLERATE_88K2 0xB
#define ICE1712_SAMPLERATE_44K1 0x8
typedef struct _midi_dev {
struct _ice1712_ *card;
@@ -78,32 +79,40 @@ typedef struct _codecCommLines
uint8 reserved[4];
} codecCommLines;
typedef struct ChannelVolume
typedef struct channel_volume
{
float Volume;
bool Mute;
} ChannelVolume;
float volume;
bool mute;
} channel_volume;
typedef struct Ice1712_Settings
typedef struct ice1712_settings
{
ChannelVolume Playback[MAX_HARDWARE_VOLUME];
ChannelVolume Record[MAX_HARDWARE_VOLUME];
channel_volume playback[ICE1712_HARDWARE_VOLUME];
channel_volume record[ICE1712_HARDWARE_VOLUME];
//General Settings
uint8 Clock; //an index
uint8 BufferSize; //an index
uint8 DebugMode; //an index for debugging
uint8 clock; //an index
uint8 bufferSize; //an index
uint8 debugMode; //an index for debugging
//S/PDif Settings
uint8 OutFormat; //an index
uint8 Emphasis; //an index
uint8 CopyMode; //an index
uint8 outFormat; //an index
uint8 emphasis; //an index
uint8 copyMode; //an index
//Output settings
uint8 Output[5]; //an index
uint8 output[5]; //an index
uint8 Reserved[32];
} Ice1712_Settings;
uint8 reserved[32];
} ice1712_settings;
typedef struct ice1712_hconfig
{
int8 nb_ADC; //Mono Channel
int8 nb_DAC; //Mono Channel
int8 nb_MPU401;
int8 spdif;
} ice1712_hconfig;
typedef struct ice1712
{
@@ -120,11 +129,6 @@ typedef struct ice1712
uint8 eeprom_data[32];
int8 nb_ADC; //Mono Channel
int8 nb_DAC; //Mono Channel
_spdif_config_ spdif_config;
int8 nb_MPU401;
product_t product;
//We hope all manufacturers will use same
@@ -151,7 +155,8 @@ typedef struct ice1712
uint8 sampling_rate; //in the format of the register
uint32 lock_source;
Ice1712_Settings settings;
ice1712_hconfig config;
ice1712_settings settings;
} ice1712;
status_t applySettings(ice1712 *card);
@@ -99,7 +99,7 @@ static status_t midi_open(const char * name, uint32 flags, void ** cookie)
*cookie = NULL;
for (ix = 0; ix < num_cards; ix++) {
for (i = 0; i < cards[ix].nb_MPU401; i++)
for (i = 0; i < cards[ix].config.nb_MPU401; i++)
if (!strcmp(name, cards[ix].midi_interf[i].name)) {
used_midi = i;
break;
@@ -139,7 +139,7 @@ static status_t midi_free(void * cookie)
TRACE("midi_free()\n");
f = (*mpu401->free_hook)(cookie);
for (ix = 0; ix < num_cards; ix++) {
for (i = 0; i < cards[ix].nb_MPU401; i++)
for (i = 0; i < cards[ix].config.nb_MPU401; i++)
if (cards[ix].midi_interf[i].cookie == cookie) {
if (atomic_add(&cards[ix].midi_interf[i].count, -1) == 1) {
cards[ix].midi_interf[i].cookie = NULL;
@@ -21,7 +21,7 @@
#define AUTHORIZED_RATE (B_SR_SAME_AS_INPUT | B_SR_IS_GLOBAL | B_SR_96000 \
| B_SR_88200 | B_SR_48000 | B_SR_44100)
#define AUTHORIZED_SAMPLE_SIZE (B_FMT_24BIT)
#define AUTHORIZED_SAMPLE_SIZE (B_FMT_32BIT)
#define MAX_CONTROL 32
@@ -160,7 +160,7 @@ ice1712_get_description(ice1712 *card, multi_description *data)
TRACE_VV("request_channel_count = %ld\n", data->request_channel_count);
if (size <= data->request_channel_count) {
for (i = 0; i < card->nb_DAC; i++) {
for (i = 0; i < card->config.nb_DAC; i++) {
//Analog STEREO output
data->channels[chan].channel_id = chan;
data->channels[chan].kind = B_MULTI_OUTPUT_CHANNEL;
@@ -170,7 +170,7 @@ ice1712_get_description(ice1712 *card, multi_description *data)
chan++;
}
if (card->spdif_config & NO_IN_YES_OUT) {
if (card->config.spdif & SPDIF_OUT_PRESENT) {
//SPDIF STEREO output
data->channels[chan].channel_id = chan;
data->channels[chan].kind = B_MULTI_OUTPUT_CHANNEL;
@@ -186,7 +186,7 @@ ice1712_get_description(ice1712 *card, multi_description *data)
chan++;
}
for (i = 0; i < card->nb_ADC; i++) {
for (i = 0; i < card->config.nb_ADC; i++) {
//Analog STEREO input
data->channels[chan].channel_id = chan;
data->channels[chan].kind = B_MULTI_INPUT_CHANNEL;
@@ -196,7 +196,7 @@ ice1712_get_description(ice1712 *card, multi_description *data)
chan++;
}
if (card->spdif_config & YES_IN_NO_OUT) {
if (card->config.spdif & SPDIF_IN_PRESENT) {
//SPDIF STEREO input
data->channels[chan].channel_id = chan;
data->channels[chan].kind = B_MULTI_INPUT_CHANNEL;
@@ -301,19 +301,19 @@ ice1712_get_global_format(ice1712 *card, multi_format_info *data)
uint8 sr = read_mt_uint8(card, MT_SAMPLING_RATE_SELECT);
switch (sr) {
case 0x0:
case ICE1712_SAMPLERATE_48K:
data->input.rate = data->output.rate = B_SR_48000;
data->input.cvsr = data->output.cvsr = 48000.0f;
break;
case 0x7:
case ICE1712_SAMPLERATE_96K:
data->input.rate = data->output.rate = B_SR_96000;
data->input.cvsr = data->output.cvsr = 96000.0f;
break;
case 0x8:
case ICE1712_SAMPLERATE_44K1:
data->input.rate = data->output.rate = B_SR_44100;
data->input.cvsr = data->output.cvsr = 44100.0f;
break;
case 0xB:
case ICE1712_SAMPLERATE_88K2:
data->input.rate = data->output.rate = B_SR_88200;
data->input.cvsr = data->output.cvsr = 88200.0f;
break;
@@ -372,23 +372,23 @@ get_combo_cb(ice1712 *card, uint32 index)
switch (index) {
case 0:
value = card->settings.Clock;
value = card->settings.clock;
break;
case 1:
value = card->settings.BufferSize;
value = card->settings.bufferSize;
break;
case 2:
value = card->settings.OutFormat;
value = card->settings.outFormat;
break;
case 3:
value = card->settings.Emphasis;
value = card->settings.emphasis;
break;
case 4:
value = card->settings.CopyMode;
value = card->settings.copyMode;
break;
}
@@ -404,12 +404,12 @@ set_combo_cb(ice1712 *card, uint32 index, uint32 value)
switch (index) {
case 0:
if (value < 2)
card->settings.Clock = value;
card->settings.clock = value;
break;
case 1:
if (value < 6) {
card->settings.BufferSize = value;
card->settings.bufferSize = value;
// card->buffer_size = 64 * (1 << value);
// ice1712_buffer_force_stop(card);
// start_DMA(card);
@@ -418,17 +418,17 @@ set_combo_cb(ice1712 *card, uint32 index, uint32 value)
case 2:
if (value < 2)
card->settings.OutFormat = value;
card->settings.outFormat = value;
break;
case 3:
if (value < 3)
card->settings.Emphasis = value;
card->settings.emphasis = value;
break;
case 4:
if (value < 3)
card->settings.CopyMode = value;
card->settings.copyMode = value;
break;
}
}
@@ -440,7 +440,7 @@ get_output_cb(ice1712 *card, uint32 index)
uint32 value = 0;
if (index < 5)
value = card->settings.Output[index];
value = card->settings.output[index];
TRACE_VV(" get_output_cb: %ld, %ld\n", index, value);
@@ -452,7 +452,7 @@ static void
set_output_cb(ice1712 *card, uint32 index, uint32 value)
{
if (index < 5)
card->settings.Output[index] = value;
card->settings.output[index] = value;
TRACE_VV(" set_output_cb: %ld, %ld\n", index, value);
}
@@ -461,23 +461,23 @@ set_output_cb(ice1712 *card, uint32 index, uint32 value)
static void
get_volume_cb(ice1712 *card, multi_mix_value *mmv)
{
ChannelVolume *vol;
channel_volume *vol;
uint32 chan = ICE1712_MULTI_GET_CHANNEL(mmv->id);
TRACE_VV(" get_volume_cb\n");
if (chan < MAX_HARDWARE_VOLUME) {
vol = card->settings.Playback;
if (chan < ICE1712_HARDWARE_VOLUME) {
vol = card->settings.playback;
}
else {
vol = card->settings.Record;
chan -= MAX_HARDWARE_VOLUME;
vol = card->settings.record;
chan -= ICE1712_HARDWARE_VOLUME;
}
//chan is normaly <= MAX_HARDWARE_VOLUME
//chan is normaly <= ICE1712_HARDWARE_VOLUME
switch (ICE1712_MULTI_GET_INDEX(mmv->id)) {
case 0: //Mute
mmv->u.enable = vol[chan].Mute | vol[chan + 1].Mute;
mmv->u.enable = vol[chan].mute | vol[chan + 1].mute;
TRACE_VV("\tGet mute %d for channel %d or %d\n",
mmv->u.enable, (int)chan, (int)chan + 1);
break;
@@ -486,7 +486,7 @@ get_volume_cb(ice1712 *card, multi_mix_value *mmv)
chan++;
//No break
case 1: //Left channel
mmv->u.gain = vol[chan].Volume;
mmv->u.gain = vol[chan].volume;
TRACE_VV("\tGet Volume %f for channel %d\n",
mmv->u.gain, (int)chan);
break;
@@ -497,24 +497,24 @@ get_volume_cb(ice1712 *card, multi_mix_value *mmv)
static void
set_volume_cb(ice1712 *card, multi_mix_value *mmv)
{
ChannelVolume *vol;
channel_volume *vol;
uint32 chan = ICE1712_MULTI_GET_CHANNEL(mmv->id);
TRACE_VV(" set_volume_cb\n");
if (chan < MAX_HARDWARE_VOLUME) {
vol = card->settings.Playback;
if (chan < ICE1712_HARDWARE_VOLUME) {
vol = card->settings.playback;
}
else {
vol = card->settings.Record;
chan -= MAX_HARDWARE_VOLUME;
vol = card->settings.record;
chan -= ICE1712_HARDWARE_VOLUME;
}
//chan is normaly <= MAX_HARDWARE_VOLUME
//chan is normaly <= ICE1712_HARDWARE_VOLUME
switch (ICE1712_MULTI_GET_INDEX(mmv->id)) {
case 0: //Mute
vol[chan].Mute = mmv->u.enable;
vol[chan + 1].Mute = mmv->u.enable;
vol[chan].mute = mmv->u.enable;
vol[chan + 1].mute = mmv->u.enable;
TRACE_VV("\tChange mute to %d for channel %d and %d\n",
mmv->u.enable, (int)chan, (int)chan + 1);
break;
@@ -523,7 +523,7 @@ set_volume_cb(ice1712 *card, multi_mix_value *mmv)
chan++;
//No break
case 1: //Left channel
vol[chan].Volume = mmv->u.gain;
vol[chan].volume = mmv->u.gain;
TRACE_VV("\tChange Volume to %f for channel %d\n",
mmv->u.gain, (int)chan);
break;
@@ -848,7 +848,7 @@ create_output_choice(ice1712 *card, multi_mix_control **p_mmc,
nb_control_created++; mmc++;
//Physical Input
for (i = 0; i < card->nb_DAC; i += 2) {
for (i = 0; i < card->config.nb_DAC; i += 2) {
mmc->id = id++;
mmc->flags = B_MULTI_MIX_MUX_VALUE;
mmc->parent = parentControl;
@@ -860,7 +860,7 @@ create_output_choice(ice1712 *card, multi_mix_control **p_mmc,
}
//Physical Digital Input
if (card->spdif_config & YES_IN_NO_OUT) {
if (card->config.spdif & SPDIF_IN_PRESENT) {
mmc->id = id++;
mmc->flags = B_MULTI_MIX_MUX_VALUE;
mmc->parent = parentControl;
@@ -924,11 +924,11 @@ ice1712_list_mix_controls(ice1712 *card, multi_mix_control_info *mmci)
//Output Selection Settings
parentTabColumn = create_group_control(&mmc, group++, parentTab,
S_null, string_list[3]);
for (i = 0; i < card->nb_DAC; i += 2) {
for (i = 0; i < card->config.nb_DAC; i += 2) {
create_output_choice(card, &mmc, i / 2, parentTabColumn);
}
if (card->spdif_config & NO_IN_YES_OUT) {
if (card->config.spdif & SPDIF_OUT_PRESENT) {
create_output_choice(card, &mmc, 4, parentTabColumn);
}
@@ -937,31 +937,31 @@ ice1712_list_mix_controls(ice1712 *card, multi_mix_control_info *mmci)
parentTab = create_group_control(&mmc, group++, CONTROL_IS_MASTER,
S_null, string_list[4]);
for (i = 0; i < card->nb_DAC; i += 2) {
for (i = 0; i < card->config.nb_DAC; i += 2) {
parentTabColumn = create_group_control(&mmc, group++, parentTab,
S_null, string_list[(i / 2) + 11]);
create_channel_control(&mmc, channel++, parentTabColumn, NULL);
}
if (card->spdif_config & NO_IN_YES_OUT) {
if (card->config.spdif & SPDIF_OUT_PRESENT) {
parentTabColumn = create_group_control(&mmc, group++, parentTab,
S_null, string_list[15]);
create_channel_control(&mmc, MAX_HARDWARE_VOLUME - 2,
create_channel_control(&mmc, ICE1712_HARDWARE_VOLUME - 2,
parentTabColumn, NULL);
}
//Input
channel = MAX_HARDWARE_VOLUME;
for (i = 0; i < card->nb_ADC; i += 2) {
channel = ICE1712_HARDWARE_VOLUME;
for (i = 0; i < card->config.nb_ADC; i += 2) {
parentTabColumn = create_group_control(&mmc, group++, parentTab,
S_null, string_list[(i / 2) + 17]);
create_channel_control(&mmc, channel++, parentTabColumn, NULL);
}
if (card->spdif_config & YES_IN_NO_OUT) {
if (card->config.spdif & SPDIF_IN_PRESENT) {
parentTabColumn = create_group_control(&mmc, group++, parentTab,
S_null, string_list[21]);
create_channel_control(&mmc, 2 * MAX_HARDWARE_VOLUME - 2,
create_channel_control(&mmc, 2 * ICE1712_HARDWARE_VOLUME - 2,
parentTabColumn, NULL);
}
@@ -1006,7 +1006,7 @@ ice1712_get_buffers(ice1712 *card, multi_buffer_list *data)
uint32 buf_i = stride_i * card->buffer_size;
if (data->request_playback_channels == card->total_output_channels) {
for (chan_o = 0; chan_o < card->nb_DAC; chan_o++) {
for (chan_o = 0; chan_o < card->config.nb_DAC; chan_o++) {
//Analog STEREO output
data->playback_buffers[buff][chan_o].base = card->log_addr_pb
+ buf_o * buff + SAMPLE_SIZE * chan_o;
@@ -1015,7 +1015,7 @@ ice1712_get_buffers(ice1712 *card, multi_buffer_list *data)
data->playback_buffers[buff][chan_o].base);
}
if (card->spdif_config & NO_IN_YES_OUT) {
if (card->config.spdif & SPDIF_OUT_PRESENT) {
//SPDIF STEREO output
data->playback_buffers[buff][chan_o].base = card->log_addr_pb
+ buf_o * buff + SAMPLE_SIZE * SPDIF_LEFT;
@@ -1034,7 +1034,7 @@ ice1712_get_buffers(ice1712 *card, multi_buffer_list *data)
}
if (data->request_record_channels == card->total_input_channels) {
for (chan_i = 0; chan_i < card->nb_ADC; chan_i++) {
for (chan_i = 0; chan_i < card->config.nb_ADC; chan_i++) {
//Analog STEREO input
data->record_buffers[buff][chan_i].base = card->log_addr_rec
+ buf_i * buff + SAMPLE_SIZE * chan_i;
@@ -1043,7 +1043,7 @@ ice1712_get_buffers(ice1712 *card, multi_buffer_list *data)
data->record_buffers[buff][chan_i].base);
}
if (card->spdif_config & YES_IN_NO_OUT) {
if (card->config.spdif & SPDIF_IN_PRESENT) {
//SPDIF STEREO input
data->record_buffers[buff][chan_i].base = card->log_addr_rec
+ buf_i * buff + SAMPLE_SIZE * SPDIF_LEFT;