MXL_STATUS Ctrl_ProgramRegisters(UINT8 I2cSlaveAddr, PREG_CTRL_INFO_T ctrlRegInfoPtr) { UINT8 status = MXL_TRUE; UINT16 i, tmp; i = 0; while (1) { if ((ctrlRegInfoPtr[i].regAddr == 0) && (ctrlRegInfoPtr[i].mask == 0) && (ctrlRegInfoPtr[i].data == 0)) break; // Check if partial bits of register were updated if (ctrlRegInfoPtr[i].mask != 0xFFFF) { status |= Ctrl_ReadRegister(I2cSlaveAddr, ctrlRegInfoPtr[i].regAddr, &tmp); if (status != MXL_TRUE) break;; } tmp &= ~ctrlRegInfoPtr[i].mask; tmp |= ctrlRegInfoPtr[i].data; status |= Ctrl_WriteRegister(I2cSlaveAddr, ctrlRegInfoPtr[i].regAddr, tmp); if (status != MXL_TRUE) break; i++; } return (MXL_STATUS)status; }
MXL_STATUS Ctrl_ProgramRegisters(PREG_CTRL_INFO_T ctrlRegInfoPtr, struct aml_fe_dev *fe) { UINT8 status = MXL_TRUE; UINT16 i; UINT8 tmp; for (i = 0; ctrlRegInfoPtr[i].regAddr|ctrlRegInfoPtr[i].mask|ctrlRegInfoPtr[i].data; i++) { // Check if partial bits of register were updated if (ctrlRegInfoPtr[i].mask != 0xFF) { status = Ctrl_ReadRegister(ctrlRegInfoPtr[i].regAddr, &tmp, fe); if (status != MXL_TRUE) break;; } tmp &= ~ctrlRegInfoPtr[i].mask; tmp |= ctrlRegInfoPtr[i].data; status |= Ctrl_WriteRegister(ctrlRegInfoPtr[i].regAddr, tmp, fe); if (status != MXL_TRUE) break; } return (MXL_STATUS)status; }