/* reg0: set SDA pullup values */
rc = ast2600_i3c_pullup_to_reg(i3c->sda_pullup, ®); if (rc) return rc;
rc = regmap_write(i3c->global_regs,
AST2600_I3CG_REG0(i3c->global_idx), reg); if (rc) return rc;
/* reg1: set up the instance id, but leave everything else disabled, * as it's all for client mode
*/
reg = AST2600_I3CG_REG1_INST_ID(i3c->global_idx);
rc = regmap_write(i3c->global_regs,
AST2600_I3CG_REG1(i3c->global_idx), reg);
return rc;
}
staticvoid ast2600_i3c_set_dat_ibi(struct dw_i3c_master *i3c, struct i3c_dev_desc *dev, bool enable, u32 *dat)
{ /* * The ast2600 i3c controller will lock up on receiving 4n+1-byte IBIs * if the PEC is disabled. We have no way to restrict the length of * IBIs sent to the controller, so we need to unconditionally enable * PEC checking, which means we drop a byte of payload data
*/ if (enable && dev->info.bcr & I3C_BCR_IBI_PAYLOAD) {
dev_warn_once(&i3c->base.dev, "Enabling PEC workaround. IBI payloads will be truncated\n");
*dat |= DEV_ADDR_TABLE_IBI_PEC;
}
}
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.