static int register_memory(void) { int result; ion_phys_addr_t paddr; void *kvptr; unsigned long kvaddr; unsigned long mem_len; pr_debug("%s\n", __func__); result = allocate_col_data(); if (result) { pr_err("%s: allocate_col_data failed, rc = %d\n", __func__, result); goto err_done; } result = allocate_hw_delay_entries(); if (result) { pr_err("%s: allocate_hw_delay_entries failed, rc = %d\n", __func__, result); goto err_col; } result = msm_audio_ion_import("audio_acdb_client", &acdb_data.ion_client, &acdb_data.ion_handle, acdb_data.map_handle, NULL, 0, &paddr, (size_t *)&mem_len, &kvptr); if (result) { pr_err("%s: audio ION alloc failed, rc = %d\n", __func__, result); goto err_hw_delay; } kvaddr = (unsigned long)kvptr; acdb_data.paddr = paddr; acdb_data.kvaddr = kvaddr; acdb_data.mem_len = mem_len; pr_debug("%s done! paddr = 0x%llx, kvaddr = 0x%llx, len = 0x%llx\n", __func__, acdb_data.paddr, acdb_data.kvaddr, acdb_data.mem_len); return result; err_hw_delay: deallocate_hw_delay_entries(); err_col: deallocate_col_data(); err_done: acdb_data.mem_len = 0; return result; }
static int register_memory(void) { int result; int i; ion_phys_addr_t paddr; void *kvptr; unsigned long kvaddr; unsigned long mem_len; pr_debug("%s\n", __func__); mutex_lock(&acdb_data.acdb_mutex); allocate_hw_delay_entries(); for (i = 0; i < MAX_VOCPROC_TYPES; i++) { acdb_data.col_data[i] = kmalloc(MAX_COL_SIZE, GFP_KERNEL); atomic_set(&acdb_data.vocproc_col_cal[i].cal_kvaddr, (uint32_t)acdb_data.col_data[i]); } result = msm_audio_ion_import("audio_acdb_client", &acdb_data.ion_client, &acdb_data.ion_handle, atomic_read(&acdb_data.map_handle), NULL, 0, &paddr, (size_t *)&mem_len, &kvptr); if (result) { pr_err("%s: audio ION alloc failed, rc = %d\n", __func__, result); result = PTR_ERR(acdb_data.ion_client); goto err_ion_handle; } kvaddr = (unsigned long)kvptr; atomic64_set(&acdb_data.paddr, paddr); atomic64_set(&acdb_data.kvaddr, kvaddr); atomic64_set(&acdb_data.mem_len, mem_len); mutex_unlock(&acdb_data.acdb_mutex); pr_debug("%s done! paddr = 0x%lx, kvaddr = 0x%lx, len = x%lx\n", __func__, (long)atomic64_read(&acdb_data.paddr), (long)atomic64_read(&acdb_data.kvaddr), (long)atomic64_read(&acdb_data.mem_len)); return result; err_ion_handle: msm_audio_ion_free(acdb_data.ion_client, acdb_data.ion_handle); atomic64_set(&acdb_data.mem_len, 0); mutex_unlock(&acdb_data.acdb_mutex); return result; }
static int register_memory(void) { int result; int i; ion_phys_addr_t paddr; void *kvptr; unsigned long kvaddr; unsigned long mem_len; pr_debug("%s\n", __func__); result = msm_audio_ion_import("audio_acdb_client", &acdb_data.ion_client, &acdb_data.ion_handle, acdb_data.map_handle, NULL, 0, &paddr, (size_t *)&mem_len, &kvptr); if (result) { pr_err("%s: audio ION alloc failed, rc = %d\n", __func__, result); goto err_ion_handle; } allocate_hw_delay_entries(); for (i = 0; i < MAX_VOCPROC_TYPES; i++) { acdb_data.col_data[i] = kmalloc(MAX_COL_SIZE, GFP_KERNEL); acdb_data.vocproc_col_cal[i].cal_kvaddr = (uint32_t)acdb_data.col_data[i]; } kvaddr = (unsigned long)kvptr; acdb_data.paddr = paddr; acdb_data.kvaddr = kvaddr; acdb_data.mem_len = mem_len; pr_debug("%s done! paddr = 0x%llx, kvaddr = 0x%llx, len = 0x%llx\n", __func__, acdb_data.paddr, acdb_data.kvaddr, acdb_data.mem_len); return result; err_ion_handle: acdb_data.mem_len = 0; return result; }