struct sample_rate_entry_s {
uint16_t samprate;
t_codec_init_script_entry *script;
+ int size;
};
static const struct sample_rate_entry_s g_sample_entry[] = {
- {AUDIO_SAMP_RATE_8K, codec_init_pll_8K},
- {AUDIO_SAMP_RATE_11K, codec_init_pll_11K},
- {AUDIO_SAMP_RATE_16K, codec_init_pll_16K},
- {AUDIO_SAMP_RATE_22K, codec_init_pll_22K},
- {AUDIO_SAMP_RATE_32K, codec_init_pll_32K},
- {AUDIO_SAMP_RATE_44K, codec_init_pll_44K},
- {AUDIO_SAMP_RATE_48K, codec_init_pll_48K},
+ {AUDIO_SAMP_RATE_8K, codec_init_pll_8K, sizeof(codec_init_pll_8K)},
+ {AUDIO_SAMP_RATE_11K, codec_init_pll_11K, sizeof(codec_init_pll_11K)},
+ {AUDIO_SAMP_RATE_16K, codec_init_pll_16K, sizeof(codec_init_pll_16K)},
+ {AUDIO_SAMP_RATE_22K, codec_init_pll_22K, sizeof(codec_init_pll_22K)},
+ {AUDIO_SAMP_RATE_32K, codec_init_pll_32K, sizeof(codec_init_pll_32K)},
+ {AUDIO_SAMP_RATE_44K, codec_init_pll_44K, sizeof(codec_init_pll_44K)},
+ {AUDIO_SAMP_RATE_48K, codec_init_pll_48K, sizeof(codec_init_pll_48K)}
};
/****************************************************************************
* Check the given sample rate's valididation with alc5658 and return specific script
*
************************************************************************************/
-static t_codec_init_script_entry *alc5658_get_sample_rate_script(uint16_t sample_rate)
+static int alc5658_get_sample_rate_script(uint16_t sample_rate)
{
int count = sizeof(g_sample_entry) / sizeof(struct sample_rate_entry_s);
int i;
for (i = 0; i < count; i++) {
if (sample_rate == g_sample_entry[i].samprate) {
- return g_sample_entry[i].script;
+ return i;
}
}
- return NULL;
+ return -1;
}
/************************************************************************************
}
/* Check validation of sample rate first */
- if (alc5658_get_sample_rate_script(caps->ac_controls.hw[0]) == NULL) {
+ if (alc5658_get_sample_rate_script(caps->ac_controls.hw[0]) == -1) {
auddbg("ERROR: Not supported Format: %lld\n", caps->ac_controls.hw[0]);
return -EINVAL;
}
{
FAR struct alc5658_dev_s *priv = (FAR struct alc5658_dev_s *)dev;
- t_codec_init_script_entry *sample;
+ int entry;
if (priv->running) {
return OK;
}
audvdbg(" alc5658_start Entry\n");
alc5658_exec_i2c_script(priv, codec_init_inout_script1, sizeof(codec_init_inout_script1) / sizeof(t_codec_init_script_entry));
- sample = alc5658_get_sample_rate_script(priv->samprate);
- if (sample == NULL) {
+ entry = alc5658_get_sample_rate_script(priv->samprate);
+ if (entry == -1) {
return -EINVAL;
}
- alc5658_exec_i2c_script(priv, sample, sizeof(sample) / sizeof(t_codec_init_script_entry));
+
+ alc5658_exec_i2c_script(priv, g_sample_entry[entry].script, g_sample_entry[entry].size / sizeof(t_codec_init_script_entry));
alc5658_exec_i2c_script(priv, codec_init_inout_script2, sizeof(codec_init_inout_script2) / sizeof(t_codec_init_script_entry));
alc5658_setregs(priv);