Bladeren bron

ASoC: codecs: Add support for new audio clocks

Add support for new audio clocks for audio playback and capture.

Change-Id: I9c07700a8060717fa9213b8536efb5780c9936bb
Signed-off-by: Sudheer Papothi <[email protected]>
Sudheer Papothi 4 jaren geleden
bovenliggende
commit
34c62909f4
1 gewijzigde bestanden met toevoegingen van 64 en 19 verwijderingen
  1. 64 19
      asoc/codecs/audio-ext-clk-up.c

+ 64 - 19
asoc/codecs/audio-ext-clk-up.c

@@ -35,6 +35,10 @@ enum {
 	AUDIO_EXT_CLK_LPASS8,
 	AUDIO_EXT_CLK_LPASS_AUDIO_HW_VOTE,
 	AUDIO_EXT_CLK_LPASS9,
+	AUDIO_EXT_CLK_LPASS10,
+	AUDIO_EXT_CLK_LPASS11,
+	AUDIO_EXT_CLK_LPASS12,
+	AUDIO_EXT_CLK_LPASS13,
 	AUDIO_EXT_CLK_LPASS_MAX,
 	AUDIO_EXT_CLK_EXTERNAL_PLL = AUDIO_EXT_CLK_LPASS_MAX,
 	AUDIO_EXT_CLK_MAX,
@@ -161,16 +165,16 @@ static u8 audio_ext_clk_get_parent(struct clk_hw *hw)
 		}
 		pr_debug("%s: parent index = %u\n", __func__, ret);
 		return ret;
-	} else if ((clk_priv->clk_src >= AUDIO_EXT_CLK_LPASS6) &&
-		    (clk_priv->clk_src < AUDIO_EXT_CLK_LPASS_MAX) &&
+	} else if ((clk_priv->clk_src >= AUDIO_EXT_CLK_LPASS10) &&
+		    (clk_priv->clk_src < AUDIO_EXT_CLK_LPASS13) &&
 		     clk_priv->clk_name) {
-			for (i = 0; i < num_parents; i++) {
-				if (!strcmp(parent_names[i],
-						clk_priv->clk_name))
-					ret = i;
-			}
-			pr_debug("%s: parent index = %u\n", __func__, ret);
-			return ret;
+		for (i = 0; i < num_parents; i++) {
+			if (!strcmp(parent_names[i],
+					clk_priv->clk_name))
+				ret = i;
+		}
+		pr_debug("%s: parent index = %u\n", __func__, ret);
+		return ret;
 	} else
 		return 0;
 }
@@ -382,9 +386,6 @@ static struct audio_ext_clk audio_clk_array[] = {
 			.div = 1,
 			.hw.init = &(struct clk_init_data){
 				.name = "audio_lpass_mclk6",
-				.parent_names = (const char *[])
-							{ "audio_lpass_mclk5" },
-				.num_parents = 1,
 				.ops = &audio_ext_clk_ops,
 			},
 		},
@@ -396,9 +397,6 @@ static struct audio_ext_clk audio_clk_array[] = {
 			.div = 1,
 			.hw.init = &(struct clk_init_data){
 				.name = "audio_lpass_mclk7",
-				.parent_names = (const char *[])
-							{ "audio_lpass_mclk5" },
-				.num_parents = 1,
 				.ops = &audio_ext_clk_ops,
 			},
 		},
@@ -419,9 +417,6 @@ static struct audio_ext_clk audio_clk_array[] = {
 			.div = 1,
 			.hw.init = &(struct clk_init_data){
 				.name = "audio_lpass_mclk8",
-				.parent_names = (const char *[])
-							{ "audio_lpass_mclk5" },
-				.num_parents = 1,
 				.ops = &audio_ext_clk_ops,
 			},
 		},
@@ -442,13 +437,63 @@ static struct audio_ext_clk audio_clk_array[] = {
 			.div = 1,
 			.hw.init = &(struct clk_init_data){
 				.name = "audio_lpass_mclk9",
+				.ops = &audio_ext_clk_ops,
+			},
+		},
+	},
+	{
+		.pnctrl_info = {NULL},
+		.fact = {
+			.mult = 1,
+			.div = 1,
+			.hw.init = &(struct clk_init_data){
+				.name = "audio_lpass_mclk10",
+				.parent_names = (const char *[])
+							{ "audio_lpass_mclk6" },
+				.num_parents = 1,
+				.ops = &audio_ext_clk_ops,
+			},
+		},
+	},
+	{
+		.pnctrl_info = {NULL},
+		.fact = {
+			.mult = 1,
+			.div = 1,
+			.hw.init = &(struct clk_init_data){
+				.name = "audio_lpass_mclk11",
+				.parent_names = (const char *[])
+							{ "audio_lpass_mclk6" },
+				.num_parents = 1,
+				.ops = &audio_ext_clk_ops,
+			},
+		},
+	},
+	{
+		.pnctrl_info = {NULL},
+		.fact = {
+			.mult = 1,
+			.div = 1,
+			.hw.init = &(struct clk_init_data){
+				.name = "audio_lpass_mclk12",
 				.parent_names = (const char *[])
-							{ "audio_lpass_mclk5" },
+							{ "audio_lpass_mclk6" },
 				.num_parents = 1,
 				.ops = &audio_ext_clk_ops,
 			},
 		},
 	},
+	{
+		.pnctrl_info = {NULL},
+		.fact = {
+			.mult = 1,
+			.div = 1,
+			.hw.init = &(struct clk_init_data){
+				.name = "audio_lpass_mclk13",
+				.ops = &audio_ext_clk_ops,
+			},
+		},
+	},
 	{
 		.pnctrl_info = {NULL},
 		.fact = {