/* * At minimum we should loop for a bit to let hardware do the * measurement. This isn't very accurate however, so for a better * precision let's try getting 20 different values and use average.
*/ while (num < 20) {
regmap_read(regmap, PMU_XTAL_FREQ_RATIO, &cur_val);
cur_val &= XTAL_ALP_PER_4ILP;
if (cur_val != last_val) { /* Got different value, use it */
sum += cur_val;
num++;
loop_num = 0;
last_val = cur_val;
} elseif (++loop_num > 5000) { /* Same value over and over, give up */
sum += cur_val;
num++; break;
}
cpu_relax();
}
/* Disable measurement to save power */
regmap_write(regmap, PMU_XTAL_FREQ_RATIO, 0x0);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.