void rtac_remove_popp_from_adm_devices(u32 popp_id) { s32 i, j; pr_debug("%s: popp_id = %d\n", __func__, popp_id); mutex_lock(&rtac_adm_mutex); for (i = 0; i < rtac_adm_data.num_of_dev; i++) { for (j = 0; j < rtac_adm_data.device[i].num_of_popp; j++) { if (rtac_adm_data.device[i].popp[j] == popp_id) { rtac_adm_data.device[i].popp[j] = 0; rtac_adm_data.device[i].num_of_popp--; shift_popp(i, j); } } } mutex_unlock(&rtac_adm_mutex); }
void rtac_remove_adm_device(u32 port_id, u32 popp_id) { s32 i, j; pr_debug("%s: port_id = %d, popp_id = %d\n", __func__, port_id, popp_id); mutex_lock(&rtac_adm_mutex); /* look for device */ for (i = 0; i < rtac_adm_data.num_of_dev; i++) { if (rtac_adm_data.device[i].afe_port == port_id) { if (rtac_adm_data.device[i].num_of_popp == 1) { memset(&rtac_adm_data.device[i], 0, sizeof(rtac_adm_data.device[i])); rtac_adm_data.num_of_dev--; } else { for (j = 0; j < rtac_adm_data.device[i].num_of_popp; j++) { if (rtac_adm_data.device[i].popp[j] == popp_id) { rtac_adm_data.device[i].popp[j] = 0; rtac_adm_data.device[i].num_of_popp--; shift_popp(i, j); goto done; } } } if (rtac_adm_data.device[i].num_of_popp == 0) { shift_dev_ctrl_devices(i); rtac_dev_ctl_data.device[i+1].dev_id = 0; rtac_dev_ctl_data.device[i+1].afe_port = 0; rtac_dev_ctl_data.num_of_dev--; } if (rtac_adm_data.num_of_dev >= 1) { shift_adm_devices(i); break; } } } done: mutex_unlock(&rtac_adm_mutex); return; }