/* Read status register to clear any stale faults. */
ret = i2c_master_recv(client, &status, 1); if (ret < 0) goto err;
/* Determine previous voltage */ switch (dev->reg[0] & 0x2F) { case 0x00:
prev_volt_idx = 0; break; case 0x20:
prev_volt_idx = 1; break; case 0x21:
prev_volt_idx = 2; break; case 0x22:
prev_volt_idx = 3; break; case 0x24:
prev_volt_idx = 4; break; case 0x27:
prev_volt_idx = 5; break; case 0x28:
prev_volt_idx = 6; break; case 0x2A:
prev_volt_idx = 7; break; case 0x2B:
prev_volt_idx = 8; break; default:
prev_volt_idx = 0;
}
/* Determine new voltage */ switch (fe_sec_voltage) { case SEC_VOLTAGE_OFF:
new_volt_idx = 0; break; case SEC_VOLTAGE_13:
new_volt_idx = 2; break; case SEC_VOLTAGE_18:
new_volt_idx = 6; break; default:
ret = -EINVAL; goto err;
}
/* Slew to new voltage if new voltage is greater than current voltage */
this_volt_idx = prev_volt_idx; if (this_volt_idx < new_volt_idx) { while (this_volt_idx < new_volt_idx) { int delta_mv = idx_to_mv[this_volt_idx+1] - idx_to_mv[this_volt_idx]; int min_wait_time = delta_mv * min_nanos_per_mv;
/* Use slew version if slew rate is set to a sane value */ if (volt_slew_nanos_per_mv > 0 && volt_slew_nanos_per_mv < 1600)
a8293_set_voltage_slew(dev, client, fe_sec_voltage,
volt_slew_nanos_per_mv); else
a8293_set_voltage_noslew(fe, fe_sec_voltage);
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.