/* param base The I3C peripheral base address. param ibiRule Pointer to ibi rule description of type #i3c_register_ibi_addr_t  */
void I3C_MasterRegisterIBI(I3C_Type *base, i3c_register_ibi_addr_t *ibiRule)
/* param base The I3C peripheral base address. param ibiRule Pointer to ibi rule description of type #i3c_register_ibi_addr_t  */
void I3C_MasterRegisterIBI(I3C_Type *base, i3c_register_ibi_addr_t *ibiRule)
{
    assert(NULL != ibiRule);
    uint32_t ruleValue = I3C_MIBIRULES_MSB0_MASK;
    for (uint32_t count = 0; count < ARRAY_SIZE(ibiRule->address); count++)
    {
        ruleValue |= ((uint32_t)ibiRule->address[count]) << (count * I3C_MIBIRULES_ADDR1_SHIFT);
    }
    ruleValue &= ~I3C_MIBIRULES_NOBYTE_MASK;
    if (!ibiRule->ibiHasPayload)
    {
        ruleValue |= I3C_MIBIRULES_NOBYTE_MASK;
    }
    base->MIBIRULES = ruleValue;
}