Ver Fonte

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

Linux Build Service Account há 6 anos atrás
pai
commit
55d2545daa
1 ficheiros alterados com 22 adições e 1 exclusões
  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;