int mddi_multi_register_write(uint32 reg,uint32 value) { static boolean first_time = TRUE; static uint32 param_num = 0; static uint32 last_reg_addr = 0; static uint32 value_list_ptr[MDDI_HOST_MAX_CLIENT_REG_IN_SAME_ADDR]; int ret = 0; if (value & TYPE_COMMAND) { if(!first_time) { ret = mddi_host_register_multiwrite(last_reg_addr,value_list_ptr ,param_num,TRUE,NULL, MDDI_HOST_PRIM); } else { first_time =FALSE; } last_reg_addr = reg ; param_num = 0; if(MDDI_MULTI_WRITE_END == last_reg_addr) { last_reg_addr = 0; first_time = TRUE; } } else if (value & TYPE_PARAMETER) { value_list_ptr[param_num] = reg; param_num++; } return ret; }
static boolean serigo(uint32 reg, uint32 len, const char *params, boolean wait) { uint32 rv; uint32 data_list[20]; uint i; for (i = 0; i < len; ++i) data_list[i] = (u32)params[i] & 0xFF; if (len > 0) rv = mddi_host_register_multiwrite(reg, len, data_list, wait, \ NULL, MDDI_HOST_PRIM); else rv = mddi_queue_register_write(reg, 0, TRUE, 0); mddi_wait(10); return rv; }