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