diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dts b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dts
index 42f15405750c..4f8d89f472a2 100644
--- a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dts
+++ b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dts
@@ -54,6 +54,9 @@
 		gpio = <&gpio_ao GPIOAO_8 GPIO_ACTIVE_HIGH>;
 		enable-active-high;
 		regulator-always-on;
+
+		/* FC8731-09VF05NRR */
+		vin-supply = <&vddao_3v3>;
 	};
 
 	tf_io: gpio-regulator-tf_io {
@@ -68,6 +71,8 @@
 
 		states = <3300000 0>,
 			 <1800000 1>;
+		/* RT9179GB */
+		vin-supply = <&vcc_5v>;
 	};
 
 	flash_1v8: regulator-flash_1v8 {
@@ -429,7 +434,6 @@
 	cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_LOW>;
 	vmmc-supply = <&tflash_vdd>;
 	vqmmc-supply = <&tf_io>;
-
 };
 
 /* eMMC */
diff --git a/drivers/clk/meson/g12a.c b/drivers/clk/meson/g12a.c
index b3af61cc6fb9..81c6e33621df 100644
--- a/drivers/clk/meson/g12a.c
+++ b/drivers/clk/meson/g12a.c
@@ -283,6 +283,8 @@ static struct clk_fixed_factor g12a_fclk_div2_div = {
 		.ops = &clk_fixed_factor_ops,
 		.parent_hws = (const struct clk_hw *[]) { &g12a_fixed_pll.hw },
 		.num_parents = 1,
+		/* Anand */
+		.flags = CLK_IS_CRITICAL,
 	},
 };
 
@@ -298,6 +300,8 @@ static struct clk_regmap g12a_fclk_div2 = {
 			&g12a_fclk_div2_div.hw
 		},
 		.num_parents = 1,
+		/* Anand */
+		.flags = CLK_IS_CRITICAL,
 	},
 };
 
@@ -375,7 +379,7 @@ static struct clk_regmap g12a_cpu_clk_premux1 = {
 		},
 		.num_parents = 3,
 		/* This sub-tree is used a parking clock */
-		.flags = CLK_SET_RATE_NO_REPARENT
+		.flags = CLK_SET_RATE_NO_REPARENT,
 	},
 };
 
@@ -604,7 +608,7 @@ static struct clk_regmap g12b_cpub_clk_premux1 = {
 		},
 		.num_parents = 3,
 		/* This sub-tree is used a parking clock */
-		.flags = CLK_SET_RATE_NO_REPARENT,
+		.flags = CLK_SET_RATE_NO_REPARENT | CLK_IS_CRITICAL,
 	},
 };
 
@@ -622,6 +626,8 @@ static struct clk_regmap g12b_cpub_clk_mux1_div = {
 			&g12b_cpub_clk_premux1.hw
 		},
 		.num_parents = 1,
+		/* Anand */
+		.flags = CLK_IS_CRITICAL,
 	},
 };
 
@@ -641,7 +647,8 @@ static struct clk_regmap g12b_cpub_clk_postmux1 = {
 		},
 		.num_parents = 2,
 		/* This sub-tree is used a parking clock */
-		.flags = CLK_SET_RATE_NO_REPARENT,
+		/* Anand */
+		.flags = CLK_SET_RATE_NO_REPARENT | CLK_IS_CRITICAL,
 	},
 };
 
@@ -681,7 +688,8 @@ static struct clk_regmap g12b_cpub_clk = {
 			&g12a_sys_pll.hw
 		},
 		.num_parents = 2,
-		.flags = CLK_SET_RATE_PARENT,
+		/* Anand */
+		.flags = CLK_SET_RATE_PARENT | CLK_IS_CRITICAL,
 	},
 };
 
@@ -1151,6 +1159,8 @@ static struct clk_regmap g12b_cpub_clk_div16_en = {
 		 * This clock is used to debug the cpu_clk range
 		 * Linux should not change it at runtime
 		 */
+		/* Anand */
+		.flags = CLK_IGNORE_UNUSED,
 	},
 };
 
@@ -1164,6 +1174,8 @@ static struct clk_fixed_factor g12a_cpu_clk_div16 = {
 			&g12a_cpu_clk_div16_en.hw
 		},
 		.num_parents = 1,
+		/* Anand */
+		.flags = CLK_IS_CRITICAL,
 	},
 };
 
@@ -1177,6 +1189,8 @@ static struct clk_fixed_factor g12b_cpub_clk_div16 = {
 			&g12b_cpub_clk_div16_en.hw
 		},
 		.num_parents = 1,
+		/* Anand */
+		.flags = CLK_IS_CRITICAL,
 	},
 };
 
@@ -1336,6 +1350,8 @@ static struct clk_fixed_factor g12b_cpub_clk_div2 = {
 			&g12b_cpub_clk.hw
 		},
 		.num_parents = 1,
+		/* Anand */
+		.flags = CLK_IS_CRITICAL,
 	},
 };
 
@@ -1349,6 +1365,8 @@ static struct clk_fixed_factor g12b_cpub_clk_div3 = {
 			&g12b_cpub_clk.hw
 		},
 		.num_parents = 1,
+		/* Anand */
+		.flags = CLK_IS_CRITICAL,
 	},
 };
 
@@ -1362,6 +1380,8 @@ static struct clk_fixed_factor g12b_cpub_clk_div4 = {
 			&g12b_cpub_clk.hw
 		},
 		.num_parents = 1,
+		/* Anand */
+		.flags = CLK_IS_CRITICAL,
 	},
 };
 
@@ -1375,6 +1395,8 @@ static struct clk_fixed_factor g12b_cpub_clk_div5 = {
 			&g12b_cpub_clk.hw
 		},
 		.num_parents = 1,
+		/* Anand */
+		.flags = CLK_IS_CRITICAL,
 	},
 };
 
@@ -1388,6 +1410,8 @@ static struct clk_fixed_factor g12b_cpub_clk_div6 = {
 			&g12b_cpub_clk.hw
 		},
 		.num_parents = 1,
+		/* Anand */
+		.flags = CLK_IS_CRITICAL,
 	},
 };
 
@@ -1401,6 +1425,8 @@ static struct clk_fixed_factor g12b_cpub_clk_div7 = {
 			&g12b_cpub_clk.hw
 		},
 		.num_parents = 1,
+		/* Anand */
+		.flags = CLK_IS_CRITICAL,
 	},
 };
 
@@ -1414,6 +1440,8 @@ static struct clk_fixed_factor g12b_cpub_clk_div8 = {
 			&g12b_cpub_clk.hw
 		},
 		.num_parents = 1,
+		/* Anand */
+		.flags = CLK_IS_CRITICAL,
 	},
 };
 
@@ -1438,6 +1466,8 @@ static struct clk_regmap g12b_cpub_clk_apb_sel = {
 			&g12b_cpub_clk_div8.hw
 		},
 		.num_parents = 7,
+		/* Anand */
+		.flags = CLK_IS_CRITICAL,
 	},
 };
 
@@ -1458,6 +1488,8 @@ static struct clk_regmap g12b_cpub_clk_apb = {
 		 * This clock is set by the ROM monitor code,
 		 * Linux should not change it at runtime
 		 */
+		/* Anand */
+		.flags = CLK_IS_CRITICAL,
 	},
 };
 
@@ -1481,6 +1513,8 @@ static struct clk_regmap g12b_cpub_clk_atb_sel = {
 			&g12b_cpub_clk_div8.hw
 		},
 		.num_parents = 7,
+		/* Anand */
+		.flags = CLK_IS_CRITICAL,
 	},
 };
 
@@ -1501,6 +1535,8 @@ static struct clk_regmap g12b_cpub_clk_atb = {
 		 * This clock is set by the ROM monitor code,
 		 * Linux should not change it at runtime
 		 */
+		/* Anand */
+		.flags = CLK_IS_CRITICAL,
 	},
 };
 
@@ -1524,6 +1560,8 @@ static struct clk_regmap g12b_cpub_clk_axi_sel = {
 			&g12b_cpub_clk_div8.hw
 		},
 		.num_parents = 7,
+		/* Anand */
+		.flags = CLK_IS_CRITICAL,
 	},
 };
 
@@ -1544,6 +1582,8 @@ static struct clk_regmap g12b_cpub_clk_axi = {
 		 * This clock is set by the ROM monitor code,
 		 * Linux should not change it at runtime
 		 */
+		/* Anand */
+		.flags = CLK_IS_CRITICAL,
 	},
 };
 
