Browse Source

asoc: bolero: Add codec version info to support ADIE RTC

In order to differentiate between targets, codec version info
is used. Assign codec version based on number of macros
registered in bolero.

CRs-Fixed: 2281591
Change-Id: I0f4cf0e49645d3acf0c413ea93d9c0261ac98848
Signed-off-by: Aditya Bavanari <[email protected]>
Aditya Bavanari 6 years ago
parent
commit
5c1f1aada7
1 changed files with 22 additions and 1 deletions
  1. 22 1
      asoc/codecs/bolero/bolero-cdc.c

+ 22 - 1
asoc/codecs/bolero/bolero-cdc.c

@@ -23,6 +23,8 @@
 #include "internal.h"
 
 #define BOLERO_VERSION_1_0 0x0001
+#define BOLERO_VERSION_1_1 0x0002
+#define BOLERO_VERSION_1_2 0x0003
 #define BOLERO_VERSION_ENTRY_SIZE 32
 
 static struct snd_soc_codec_driver bolero;
@@ -412,6 +414,12 @@ static ssize_t bolero_version_read(struct snd_info_entry *entry,
 	case BOLERO_VERSION_1_0:
 		len = snprintf(buffer, sizeof(buffer), "BOLERO_1_0\n");
 		break;
+	case BOLERO_VERSION_1_1:
+		len = snprintf(buffer, sizeof(buffer), "BOLERO_1_1\n");
+		break;
+	case BOLERO_VERSION_1_2:
+		len = snprintf(buffer, sizeof(buffer), "BOLERO_1_2\n");
+		break;
 	default:
 		len = snprintf(buffer, sizeof(buffer), "VER_UNDEFINED\n");
 	}
@@ -499,7 +507,20 @@ static int bolero_soc_codec_probe(struct snd_soc_codec *codec)
 		}
 	}
 	priv->codec = codec;
-	priv->version = BOLERO_VERSION_1_0;
+	/*
+	 * In order for the ADIE RTC to differentiate between targets
+	 * version info is used.
+	 * Assign 1.0 for target with only one macro
+	 * Assign 1.1 for target with two macros
+	 * Assign 1.2 for target with more than two macros
+	 */
+	if (priv->num_macros_registered == 1)
+		priv->version = BOLERO_VERSION_1_0;
+	else if (priv->num_macros_registered == 2)
+		priv->version = BOLERO_VERSION_1_1;
+	else if (priv->num_macros_registered > 2)
+		priv->version = BOLERO_VERSION_1_2;
+
 	dev_dbg(codec->dev, "%s: bolero soc codec probe success\n", __func__);
 err:
 	return ret;