Revert "ASoC: msm: qdsp6v2: Propagate device HW delay to AFE."

This reverts commit 88928532db06d3f595b79256616941233fefaaef

Change-Id: I9217571fe42b2834e4b5f2d6e27c7fe2dc8d6c3b
diff --git a/arch/arm/mach-msm/include/mach/qdsp6v2/audio_acdb.h b/arch/arm/mach-msm/include/mach/qdsp6v2/audio_acdb.h
index 7a2be38..be190f9 100644
--- a/arch/arm/mach-msm/include/mach/qdsp6v2/audio_acdb.h
+++ b/arch/arm/mach-msm/include/mach/qdsp6v2/audio_acdb.h
@@ -37,10 +37,6 @@
 	atomic_t		cal_paddr;
 };
 
-struct hw_delay_entry {
-	uint32_t sample_rate;
-	uint32_t delay_usec;
-};
 struct acdb_cal_data {
 	uint32_t			num_cal_blocks;
 	struct acdb_atomic_cal_block	*cal_blocks;
@@ -65,6 +61,5 @@
 void get_vocstrm_cal(struct acdb_cal_data *cal_data);
 void get_vocvol_cal(struct acdb_cal_data *cal_data);
 void get_sidetone_cal(struct sidetone_cal *cal_data);
-int get_hw_delay(int32_t path, struct hw_delay_entry *delay_info);
 
 #endif
diff --git a/arch/arm/mach-msm/qdsp6v2/audio_acdb.c b/arch/arm/mach-msm/qdsp6v2/audio_acdb.c
index 6da12a0..f05376a 100644
--- a/arch/arm/mach-msm/qdsp6v2/audio_acdb.c
+++ b/arch/arm/mach-msm/qdsp6v2/audio_acdb.c
@@ -18,10 +18,9 @@
 #include <linux/msm_ion.h>
 #include <linux/mm.h>
 #include <mach/qdsp6v2/audio_acdb.h>
-#include <linux/slab.h>
+
 
 #define MAX_NETWORKS		15
-#define MAX_HW_DELAY_ENTRIES	25
 
 struct sidetone_atomic_cal {
 	atomic_t	enable;
@@ -70,9 +69,6 @@
 	atomic64_t			paddr;
 	atomic64_t			kvaddr;
 	atomic64_t			mem_len;
-	/* Av sync delay info */
-	struct hw_delay hw_delay_rx;
-	struct hw_delay hw_delay_tx;
 };
 
 static struct acdb_data		acdb_data;
@@ -181,124 +177,6 @@
 		atomic_read(&acdb_data.vocvol_total_cal_size);
 }
 
-int get_hw_delay(int32_t path, struct hw_delay_entry *entry)
-{
-	int i, result = 0;
-	struct hw_delay *delay = NULL;
-	struct hw_delay_entry *info = NULL;
-	pr_debug("%s,\n", __func__);
-
-	if (entry == NULL) {
-		pr_err("ACDB=> NULL pointer sent to %s\n", __func__);
-		result = -EINVAL;
-		goto ret;
-	}
-	if ((path >= MAX_AUDPROC_TYPES) || (path < 0)) {
-		pr_err("ACDB=> Bad path sent to %s, path: %d\n",
-		       __func__, path);
-		result = -EINVAL;
-		goto ret;
-	}
-	mutex_lock(&acdb_data.acdb_mutex);
-	if (path == RX_CAL)
-		delay = &acdb_data.hw_delay_rx;
-	else if (path == TX_CAL)
-		delay = &acdb_data.hw_delay_tx;
-	else
-		pr_err("ACDB=> %s Invalid path: %d\n",__func__,path);
-
-	if ((delay == NULL) || ((delay != NULL) && delay->num_entries == 0)) {
-		pr_err("ACDB=> %s Invalid delay/ delay entries\n", __func__);
-		result = -EINVAL;
-		goto done;
-	}
-
-	info = (struct hw_delay_entry *)(delay->delay_info);
-	if (info == NULL) {
-		pr_err("ACDB=> %s Delay entries info is NULL\n", __func__);
-		result = -EINVAL;
-		goto done;
-	}
-	for (i = 0; i < delay->num_entries; i++) {
-		if (info[i].sample_rate == entry->sample_rate) {
-			entry->delay_usec = info[i].delay_usec;
-			break;
-		}
-	}
-	if (i == delay->num_entries) {
-		pr_err("ACDB=> %s: Unable to find delay for sample rate %d\n",
-		       __func__, entry->sample_rate);
-		result = -EINVAL;
-	}
-
-done:
-	mutex_unlock(&acdb_data.acdb_mutex);
-ret:
-	pr_err("ACDB=> %s: Path = %d samplerate = %u usec = %u status %d\n",
-		 __func__, path, entry->sample_rate, entry->delay_usec, result);
-	return result;
-}
-
-int store_hw_delay(int32_t path, void *arg)
-{
-	int result = 0;
-	struct hw_delay delay;
-	struct hw_delay *delay_dest = NULL;
-	pr_debug("%s,\n", __func__);
-
-	if ((path >= MAX_AUDPROC_TYPES) || (path < 0) || (arg == NULL)) {
-		pr_err("ACDB=> Bad path/ pointer sent to %s, path: %d\n",
-		      __func__, path);
-		result = -EINVAL;
-		goto done;
-	}
-	result = copy_from_user((void *)&delay, (void *)arg,
-				sizeof(struct hw_delay));
-	if (result) {
-		pr_err("ACDB=> %s failed to copy hw delay: result=%d path=%d\n",
-		       __func__, result, path);
-		result = -EFAULT;
-		goto done;
-	}
-	if ((delay.num_entries <= 0) ||
-		(delay.num_entries > MAX_HW_DELAY_ENTRIES)) {
-		pr_debug("ACDB=> %s incorrect no of hw delay entries: %d\n",
-		       __func__, delay.num_entries);
-		result = -EINVAL;
-		goto done;
-	}
-	if ((path >= MAX_AUDPROC_TYPES) || (path < 0)) {
-		pr_err("ACDB=> Bad path sent to %s, path: %d\n",
-		__func__, path);
-		result = -EINVAL;
-		goto done;
-	}
-
-	pr_debug("ACDB=> %s : Path = %d num_entries = %d\n",
-		 __func__, path, delay.num_entries);
-
-	mutex_lock(&acdb_data.acdb_mutex);
-	if (path == RX_CAL)
-		delay_dest = &acdb_data.hw_delay_rx;
-	else if (path == TX_CAL)
-		delay_dest = &acdb_data.hw_delay_tx;
-
-	delay_dest->num_entries = delay.num_entries;
-
-	result = copy_from_user(delay_dest->delay_info,
-				delay.delay_info,
-				(sizeof(struct hw_delay_entry)*
-				delay.num_entries));
-	if (result) {
-		pr_err("ACDB=> %s failed to copy hw delay info res=%d path=%d",
-		       __func__, result, path);
-		result = -EFAULT;
-	}
-	mutex_unlock(&acdb_data.acdb_mutex);
-done:
-	return result;
-}
-
 void get_anc_cal(struct acdb_cal_block *cal_block)
 {
 	pr_debug("%s\n", __func__);
@@ -732,45 +610,11 @@
 	}
 
 	atomic_inc(&usage_count);
-
 	return result;
-
-}
-
-static void allocate_hw_delay_entries(void)
-{
-
-	/* Allocate memory for hw delay entries */
-
-	acdb_data.hw_delay_rx.num_entries = 0;
-	acdb_data.hw_delay_tx.num_entries = 0;
-	acdb_data.hw_delay_rx.delay_info =
-				kmalloc(sizeof(struct hw_delay_entry)*
-					MAX_HW_DELAY_ENTRIES,
-					GFP_KERNEL);
-	if (acdb_data.hw_delay_rx.delay_info == NULL) {
-		pr_err("%s : Failed to allocate av sync delay entries rx\n",
-			__func__);
-	}
-	acdb_data.hw_delay_tx.delay_info =
-				kmalloc(sizeof(struct hw_delay_entry)*
-					MAX_HW_DELAY_ENTRIES,
-					GFP_KERNEL);
-	if (acdb_data.hw_delay_tx.delay_info == NULL) {
-		pr_err("%s : Failed to allocate av sync delay entries tx\n",
-			__func__);
-	}
-
-	return;
 }
 
 static int deregister_memory(void)
 {
-	mutex_lock(&acdb_data.acdb_mutex);
-	kfree(acdb_data.hw_delay_tx.delay_info);
-	kfree(acdb_data.hw_delay_rx.delay_info);
-	mutex_unlock(&acdb_data.acdb_mutex);
-
 	if (atomic64_read(&acdb_data.mem_len)) {
 		mutex_lock(&acdb_data.acdb_mutex);
 		atomic_set(&acdb_data.vocstrm_total_cal_size, 0);
@@ -794,7 +638,6 @@
 	unsigned long		mem_len;
 
 	mutex_lock(&acdb_data.acdb_mutex);
-	allocate_hw_delay_entries();
 	acdb_data.ion_client =
 		msm_ion_client_create(UINT_MAX, "audio_acdb_client");
 	if (IS_ERR_OR_NULL(acdb_data.ion_client)) {
@@ -831,7 +674,7 @@
 	atomic64_set(&acdb_data.mem_len, mem_len);
 	mutex_unlock(&acdb_data.acdb_mutex);
 
-	pr_debug("%s: done! paddr = 0x%lx, "
+	pr_debug("%s done! paddr = 0x%lx, "
 		"kvaddr = 0x%lx, len = x%lx\n",
 		 __func__,
 		(long)atomic64_read(&acdb_data.paddr),
@@ -919,12 +762,6 @@
 		}
 		store_asm_topology(topology);
 		goto done;
-	case AUDIO_SET_HW_DELAY_RX:
-		result = store_hw_delay(RX_CAL, (void *)arg);
-		goto done;
-	case AUDIO_SET_HW_DELAY_TX:
-		result = store_hw_delay(TX_CAL, (void *)arg);
-		goto done;
 	}
 
 	if (copy_from_user(&size, (void *) arg, sizeof(size))) {
diff --git a/include/linux/msm_audio_acdb.h b/include/linux/msm_audio_acdb.h
index d88d3e4..e7f06b5 100644
--- a/include/linux/msm_audio_acdb.h
+++ b/include/linux/msm_audio_acdb.h
@@ -39,10 +39,8 @@
 			(AUDIO_MAX_COMMON_IOCTL_NUM+16), unsigned)
 #define AUDIO_SET_AFE_RX_CAL		_IOW(AUDIO_IOCTL_MAGIC, \
 			(AUDIO_MAX_COMMON_IOCTL_NUM+17), unsigned)
-#define AUDIO_SET_HW_DELAY_RX	_IOW(AUDIO_IOCTL_MAGIC, \
-			(AUDIO_MAX_COMMON_IOCTL_NUM+18), struct hw_delay)
-#define AUDIO_SET_HW_DELAY_TX	_IOW(AUDIO_IOCTL_MAGIC, \
-			(AUDIO_MAX_COMMON_IOCTL_NUM+19), struct hw_delay)
+
+
 #define	AUDIO_MAX_ACDB_IOCTL	(AUDIO_MAX_COMMON_IOCTL_NUM+30)
 
 /* ACDB structures */
@@ -56,10 +54,6 @@
 	uint16_t	gain;
 };
 
-struct hw_delay {
-	uint32_t num_entries;
-	void *delay_info;
-};
 /* For Real-Time Audio Calibration */
 #define AUDIO_GET_RTAC_ADM_INFO		_IOR(AUDIO_IOCTL_MAGIC, \
 			(AUDIO_MAX_ACDB_IOCTL+1), unsigned)
diff --git a/include/sound/apr_audio.h b/include/sound/apr_audio.h
index f303c62..0711b2b 100644
--- a/include/sound/apr_audio.h
+++ b/include/sound/apr_audio.h
@@ -304,14 +304,6 @@
 #define AFE_PORT_MULTI_CHAN_HDMI_AUDIO_IF_CONFIG	0x000100D9
 #define AFE_PORT_CMD_I2S_CONFIG	0x000100E7
 
-#define AFE_PARAM_ID_DEVICE_HW_DELAY     0x00010243
-#define AFE_API_VERSION_DEVICE_HW_DELAY  0x1
-
-struct afe_param_id_device_hw_delay_cfg {
-	uint32_t    device_hw_delay_minor_version;
-	uint32_t    delay_in_us;
-} __packed;
-
 union afe_port_config {
 	struct afe_port_pcm_cfg           pcm;
 	struct afe_port_mi2s_cfg          mi2s;
@@ -425,7 +417,6 @@
 		struct afe_param_channels      channels;
 		struct afe_param_loopback_gain loopback_gain;
 		struct afe_param_loopback_cfg loopback_cfg;
-		struct afe_param_id_device_hw_delay_cfg hw_delay;
 	} __attribute__((packed)) param;
 } __attribute__ ((packed));
 
diff --git a/sound/soc/msm/qdsp6/q6afe.c b/sound/soc/msm/qdsp6/q6afe.c
index e9e3a0d..1a8c84c 100644
--- a/sound/soc/msm/qdsp6/q6afe.c
+++ b/sound/soc/msm/qdsp6/q6afe.c
@@ -422,83 +422,6 @@
 	return;
 }
 
-static int afe_send_hw_delay(u16 port_id, u32 rate)
-{
-	struct hw_delay_entry delay_entry;
-	struct afe_port_cmd_set_param config;
-	int index = 0;
-	int ret = -EINVAL;
-
-	pr_debug("%s\n", __func__);
-
-	delay_entry.sample_rate = rate;
-	if (afe_get_port_type(port_id) == MSM_AFE_PORT_TYPE_TX)
-		ret = get_hw_delay(TX_CAL, &delay_entry);
-	else if (afe_get_port_type(port_id) == MSM_AFE_PORT_TYPE_RX)
-		ret = get_hw_delay(RX_CAL, &delay_entry);
-
-	if (ret != 0) {
-		pr_debug("%s: Failed to get hw delay info\n", __func__);
-		goto done;
-	}
-	index = port_id;
-	if (index < 0) {
-		pr_debug("%s: AFE port index invalid!\n", __func__);
-		goto done;
-	}
-
-	config.hdr.hdr_field = APR_HDR_FIELD(APR_MSG_TYPE_SEQ_CMD,
-				APR_HDR_LEN(APR_HDR_SIZE), APR_PKT_VER);
-	config.hdr.pkt_size = sizeof(config);
-	config.hdr.src_port = 0;
-	config.hdr.dest_port = 0;
-	config.hdr.token = index;
-	config.hdr.opcode = AFE_PORT_CMD_SET_PARAM;
-
-	config.port_id = port_id;
-	config.payload_size = sizeof(struct afe_param_payload_base)+
-				sizeof(struct afe_param_id_device_hw_delay_cfg);
-	config.payload_address = 0;
-
-	config.payload.base.module_id = AFE_MODULE_ID_PORT_INFO ;
-	config.payload.base.param_id = AFE_PARAM_ID_DEVICE_HW_DELAY;
-	config.payload.base.param_size = sizeof(struct afe_param_id_device_hw_delay_cfg);
-	config.payload.base.reserved = 0;
-
-	config.payload.param.hw_delay.delay_in_us = delay_entry.delay_usec;
-	config.payload.param.hw_delay.device_hw_delay_minor_version =
-				AFE_API_VERSION_DEVICE_HW_DELAY;
-
-	atomic_set(&this_afe.state, 1);
-	ret = apr_send_pkt(this_afe.apr, (uint32_t *) &config);
-	if (ret < 0) {
-		pr_err("%s: AFE enable for port %d failed\n", __func__,
-			port_id);
-		ret = -EINVAL;
-		goto done;
-	}
-
-	ret = wait_event_timeout(this_afe.wait,
-				(atomic_read(&this_afe.state) == 0),
-				msecs_to_jiffies(TIMEOUT_MS));
-
-	if (!ret) {
-		pr_err("%s: wait_event timeout IF CONFIG\n", __func__);
-		ret = -EINVAL;
-		goto done;
-	}
-	if (atomic_read(&this_afe.status) != 0) {
-		pr_err("%s: config cmd failed\n", __func__);
-		ret = -EINVAL;
-		goto done;
-	}
-
-done:
-	pr_debug("%s port_id %u rate %u delay_usec %d status %d\n",
-		__func__, port_id, rate, delay_entry.delay_usec, ret);
-	return ret;
-}
-
 void afe_send_cal(u16 port_id)
 {
 	pr_debug("%s\n", __func__);
@@ -647,7 +570,6 @@
 
 	/* send AFE cal */
 	afe_send_cal(port_id);
-	afe_send_hw_delay(port_id, rate);
 
 	start.hdr.hdr_field = APR_HDR_FIELD(APR_MSG_TYPE_SEQ_CMD,
 				APR_HDR_LEN(APR_HDR_SIZE), APR_PKT_VER);