[alsa-devel] [PATCH 1/1] [ALSA] ASoC: TLV320AIC23B Support more sample rates
Troy Kisky
troy.kisky at boundarydevices.com
Fri Nov 7 00:11:08 CET 2008
Add support for more sample rates, different crystals
and split playback/capture rates.
Signed-off-by: Troy Kisky <troy.kisky at boundarydevices.com>
Mark, this is an incremental patch to the #ifdef DEBUG version
diff --git a/sound/soc/codecs/tlv320aic23.c b/sound/soc/codecs/tlv320aic23.c
index 0096842..8a9ef21 100644
--- a/sound/soc/codecs/tlv320aic23.c
+++ b/sound/soc/codecs/tlv320aic23.c
@@ -301,30 +301,25 @@ static const unsigned char sr_dac_mult_table[] = {
A(2), A(11), A(2), A(11), A(0), A(0), A(0), A(1)
};
-unsigned get_score(int adc, int adc_l, int adc_h, int need_adc,
+static unsigned get_score(int adc, int adc_l, int adc_h, int need_adc,
int dac, int dac_l, int dac_h, int need_dac)
{
if ((adc >= adc_l) && (adc <= adc_h) &&
(dac >= dac_l) && (dac <= dac_h)) {
- unsigned diff_adc = need_adc - adc;
- unsigned diff_dac = need_dac - dac;
- unsigned score;
- if (((int)diff_adc) < 0)
- diff_adc = -diff_adc;
- if (((int)diff_dac) < 0)
- diff_dac = -diff_dac;
- score = diff_adc + diff_dac;
- return score;
+ int diff_adc = need_adc - adc;
+ int diff_dac = need_dac - dac;
+ return abs(diff_adc) + abs(diff_dac);
}
- return 0xffffffff;
+ return UINT_MAX;
}
-int find_rate(int mclk, u32 need_adc, u32 need_dac)
+
+static int find_rate(int mclk, u32 need_adc, u32 need_dac)
{
int i, j;
int best_i = -1;
int best_j = -1;
int best_div = 0;
- unsigned best_score = 0xffffffff;
+ unsigned best_score = UINT_MAX;
int adc_l, adc_h, dac_l, dac_h;
need_adc *= SR_MULT;
@@ -359,7 +354,7 @@ int find_rate(int mclk, u32 need_adc, u32 need_dac)
score = get_score((adc >> 1), adc_l, adc_h, need_adc,
(dac >> 1), dac_l, dac_h, need_dac);
/* prefer to have a /2 */
- if ((score != 0xffffffff) && (best_score >= score)) {
+ if ((score != UINT_MAX) && (best_score >= score)) {
best_score = score;
best_i = i;
best_j = j;
--
1.5.4.3
More information about the Alsa-devel
mailing list