static u32 valx_x10[] = { 10, 11, 13, 15, 17, 20, 25, 33, 41, 50, 59, 73, 87, 100 };
static u32 log10x_x1000[] = { 0, 41, 114, 176, 230, 301, 398, 518, 613, 699, 771, 863, 939, 1000 };
static u32 nelems = sizeof(valx_x10)/sizeof(valx_x10[0]);
+ u32 diff_val, step_val, step_log10;
u32 log_val = 0;
u32 i;
if (valx_x10[i] >= x)
break;
}
+ if (i == nelems)
+ return log_val + log10x_x1000[i - 1];
- {
- u32 diff_val = x - valx_x10[i-1];
- u32 step_val = valx_x10[i] - valx_x10[i-1];
- u32 step_log10 = log10x_x1000[i] - log10x_x1000[i-1];
- /* do a linear interpolation to get in-between values */
- return log_val + log10x_x1000[i-1] +
- ((diff_val*step_log10) / step_val);
- }
+ diff_val = x - valx_x10[i-1];
+ step_val = valx_x10[i] - valx_x10[i - 1];
+ step_log10 = log10x_x1000[i] - log10x_x1000[i - 1];
+
+ /* do a linear interpolation to get in-between values */
+ return log_val + log10x_x1000[i - 1] +
+ ((diff_val*step_log10) / step_val);
}
static u32 lgdt3306a_calculate_snr_x100(struct lgdt3306a_state *state)