staticint ltc3815_read_byte_data(struct i2c_client *client, int page, int reg)
{ int ret;
switch (reg) { case PMBUS_VOUT_MODE: /* * The chip returns 0x3e, suggesting VID mode with manufacturer * specific VID codes. Since the output voltage is reported * with a LSB of 0.5mV, override and report direct mode with * appropriate coefficients.
*/
ret = 0x40; break; default:
ret = -ENODATA; break;
} return ret;
}
staticint ltc3815_write_byte(struct i2c_client *client, int page, u8 reg)
{ int ret;
switch (reg) { case PMBUS_CLEAR_FAULTS: /* * LTC3815 does not support the CLEAR_FAULTS command. * Emulate it by clearing the status register.
*/
ret = pmbus_read_word_data(client, 0, 0xff, PMBUS_STATUS_WORD); if (ret > 0) {
pmbus_write_word_data(client, 0, PMBUS_STATUS_WORD,
ret);
ret = 0;
} break; default:
ret = -ENODATA; break;
} return ret;
}
staticint ltc3815_read_word_data(struct i2c_client *client, int page, int phase, int reg)
{ int ret;
switch (reg) { case PMBUS_VIRT_READ_VIN_MAX:
ret = pmbus_read_word_data(client, page, phase,
LTC3815_MFR_VIN_PEAK); break; case PMBUS_VIRT_READ_VOUT_MAX:
ret = pmbus_read_word_data(client, page, phase,
LTC3815_MFR_VOUT_PEAK); break; case PMBUS_VIRT_READ_TEMP_MAX:
ret = pmbus_read_word_data(client, page, phase,
LTC3815_MFR_TEMP_PEAK); break; case PMBUS_VIRT_READ_IOUT_MAX:
ret = pmbus_read_word_data(client, page, phase,
LTC3815_MFR_IOUT_PEAK); break; case PMBUS_VIRT_READ_IIN_MAX:
ret = pmbus_read_word_data(client, page, phase,
LTC3815_MFR_IIN_PEAK); break; case PMBUS_VIRT_RESET_VOUT_HISTORY: case PMBUS_VIRT_RESET_VIN_HISTORY: case PMBUS_VIRT_RESET_TEMP_HISTORY: case PMBUS_VIRT_RESET_IOUT_HISTORY: case PMBUS_VIRT_RESET_IIN_HISTORY:
ret = 0; break; default:
ret = -ENODATA; break;
} return ret;
}
staticint ltc3815_write_word_data(struct i2c_client *client, int page, int reg, u16 word)
{ int ret;
switch (reg) { case PMBUS_VIRT_RESET_IIN_HISTORY:
ret = pmbus_write_word_data(client, page,
LTC3815_MFR_IIN_PEAK, 0); break; case PMBUS_VIRT_RESET_IOUT_HISTORY:
ret = pmbus_write_word_data(client, page,
LTC3815_MFR_IOUT_PEAK, 0); break; case PMBUS_VIRT_RESET_VOUT_HISTORY:
ret = pmbus_write_word_data(client, page,
LTC3815_MFR_VOUT_PEAK, 0); break; case PMBUS_VIRT_RESET_VIN_HISTORY:
ret = pmbus_write_word_data(client, page,
LTC3815_MFR_VIN_PEAK, 0); break; case PMBUS_VIRT_RESET_TEMP_HISTORY:
ret = pmbus_write_word_data(client, page,
LTC3815_MFR_TEMP_PEAK, 0); break; default:
ret = -ENODATA; break;
} return ret;
}
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.