static void afe_send_cal_block(int32_t path, u16 port_id) { int result = 0; struct acdb_cal_block cal_block; struct afe_port_cmd_set_param_no_payload afe_cal; pr_debug("%s: path %d\n", __func__, path); get_afe_cal(path, &cal_block); if (cal_block.cal_size <= 0) { pr_debug("%s: No AFE cal to send!\n", __func__); goto done; } if ((afe_cal_addr[path].cal_paddr != cal_block.cal_paddr) || (cal_block.cal_size > afe_cal_addr[path].cal_size)) { if (afe_cal_addr[path].cal_paddr != 0) afe_cmd_memory_unmap( afe_cal_addr[path].cal_paddr); afe_cmd_memory_map(cal_block.cal_paddr, cal_block.cal_size); afe_cal_addr[path].cal_paddr = cal_block.cal_paddr; afe_cal_addr[path].cal_size = cal_block.cal_size; } afe_cal.hdr.hdr_field = APR_HDR_FIELD(APR_MSG_TYPE_SEQ_CMD, APR_HDR_LEN(APR_HDR_SIZE), APR_PKT_VER); afe_cal.hdr.pkt_size = sizeof(afe_cal); afe_cal.hdr.src_port = 0; afe_cal.hdr.dest_port = 0; afe_cal.hdr.token = 0; afe_cal.hdr.opcode = AFE_PORT_CMD_SET_PARAM; afe_cal.port_id = port_id; afe_cal.payload_size = cal_block.cal_size; afe_cal.payload_address = cal_block.cal_paddr; pr_debug("%s: AFE cal sent for device port = %d, path = %d, " "cal size = %d, cal addr = 0x%x\n", __func__, port_id, path, cal_block.cal_size, cal_block.cal_paddr); atomic_set(&this_afe.state, 1); result = apr_send_pkt(this_afe.apr, (uint32_t *) &afe_cal); if (result < 0) { pr_err("%s: AFE cal for port %d failed\n", __func__, port_id); } result = wait_event_timeout(this_afe.wait, (atomic_read(&this_afe.state) == 0), msecs_to_jiffies(TIMEOUT_MS)); if (!result) { pr_err("%s: wait_event timeout SET AFE CAL\n", __func__); HTC_Q6_BUG(); goto done; } pr_debug("%s: AFE cal sent for path %d device!\n", __func__, path); done: return; }
static void afe_send_cal_block(int32_t path, u16 port_id) { int result = 0; struct acdb_cal_block cal_block; struct afe_port_cmd_set_param_no_payload afe_cal; pr_debug("%s: path %d\n", __func__, path); get_afe_cal(path, &cal_block); if (cal_block.cal_size <= 0) { pr_debug("%s: No AFE cal to send!\n", __func__); goto done; } if (afe_cal_addr[path] != cal_block.cal_paddr) { if (afe_cal_addr[path] != 0) afe_cmd_memory_unmap_nowait(afe_cal_addr[path]); afe_cmd_memory_map_nowait(cal_block.cal_paddr, cal_block.cal_size); afe_cal_addr[path] = cal_block.cal_paddr; } afe_cal.hdr.hdr_field = APR_HDR_FIELD(APR_MSG_TYPE_SEQ_CMD, APR_HDR_LEN(APR_HDR_SIZE), APR_PKT_VER); afe_cal.hdr.pkt_size = sizeof(afe_cal); afe_cal.hdr.src_port = 0; afe_cal.hdr.dest_port = 0; afe_cal.hdr.token = 0; afe_cal.hdr.opcode = AFE_PORT_CMD_SET_PARAM; afe_cal.port_id = port_id; afe_cal.payload_size = cal_block.cal_size; afe_cal.payload_address = cal_block.cal_paddr; pr_debug("%s: AFE cal sent for device port = %d, path = %d, " "cal size = %d, cal addr = 0x%x\n", __func__, port_id, path, cal_block.cal_size, cal_block.cal_paddr); result = apr_send_pkt(this_afe.apr, (uint32_t *) &afe_cal); if (result < 0) { pr_err("%s: AFE cal for port %d failed\n", __func__, port_id); } pr_debug("%s: AFE cal sent for path %d device!\n", __func__, path); done: return; }