diff --git a/hardware/nvidia/platform/t19x/galen/kernel-dts/common/tegra194-audio-p2822-0000.dtsi b/hardware/nvidia/platform/t19x/galen/kernel-dts/common/tegra194-audio-p2822-0000.dtsi
index b936b70..06f92b4 100644
--- a/hardware/nvidia/platform/t19x/galen/kernel-dts/common/tegra194-audio-p2822-0000.dtsi
+++ b/hardware/nvidia/platform/t19x/galen/kernel-dts/common/tegra194-audio-p2822-0000.dtsi
@@ -33,6 +33,7 @@
 	};
 
 	i2c@c250000 {
+/*
 		rt5658: rt5659.7-001a@1a {
 			compatible = "realtek,rt5658";
 			reg = <0x1a>;
@@ -42,7 +43,15 @@
 			realtek,dmic2-data-pin = <RT5659_DMIC2_DATA_IN2P>;
 
 			gpios = <&tegra_main_gpio TEGRA194_MAIN_GPIO(S, 5) 0>;
-
+*/
+		sgtl5000: sgtl5000.7-000a@0a {
+			compatible = "fsl,sgtl5000";
+			reg = <0x0a>;
+			clocks = <&bpmp_clks TEGRA194_CLK_AUD_MCLK>;
+			VDDA-supply = <&sgtl5000_reg>;
+			VDDIO-supply = <&sgtl5000_reg>;
+			VDDD-supply = <&sgtl5000_reg>;
+			clock-names = "extern1";
 			status = "okay";
 		};
 	};
@@ -82,14 +91,8 @@
 			"clk_m", "extern1";
 
 		nvidia,audio-routing =
-			"x Headphone Jack",     "x HPO L Playback",
-			"x Headphone Jack",     "x HPO R Playback",
-			"x IN1P",               "x Mic Jack",
-			"x Int Spk",            "x SPO Playback",
-			"x DMIC L1",            "x Int Mic",
-			"x DMIC L2",            "x Int Mic",
-			"x DMIC R1",            "x Int Mic",
-			"x DMIC R2",            "x Int Mic",
+            "x Headphone",          "x LINE_OUT",
+            "x MIC_IN",             "x Mic",
 			"y Headphone",          "y OUT",
 			"y IN",                 "y Mic",
 			"z Headphone",          "z OUT",
@@ -115,9 +118,14 @@
 
 			/* Override with Codec entries */
 			nvidia,dai-link-1 {
+			/*
 				link-name = "rt565x-playback";
 				codec-dai = <&rt5658>;
 				codec-dai-name = "rt5659-aif1";
+			*/
+                link-name = "sgtl5000-playback";
+                codec-dai = <&sgtl5000>;
+                codec-dai-name = "sgtl5000";
 			};
 
 			/* Override with BT SCO entries */
diff --git a/hardware/nvidia/platform/t19x/galen/kernel-dts/common/tegra194-fixed-regulator-p2888-0001.dtsi b/hardware/nvidia/platform/t19x/galen/kernel-dts/common/tegra194-fixed-regulator-p2888-0001.dtsi
index ee26ebb..5335a62 100644
--- a/hardware/nvidia/platform/t19x/galen/kernel-dts/common/tegra194-fixed-regulator-p2888-0001.dtsi
+++ b/hardware/nvidia/platform/t19x/galen/kernel-dts/common/tegra194-fixed-regulator-p2888-0001.dtsi
@@ -24,5 +24,14 @@
 			regulator-max-microvolt = <5000000>;
 			regulator-always-on;
 		};
+
+		sgtl5000_reg: regulator@0 {
+			compatible = "regulator-fixed";
+			reg = <0>;
+			regulator-name = "vdd-ac-bat";
+			regulator-min-microvolt = <1800000>;
+			regulator-max-microvolt = <1800000>;
+			regulator-always-on;
+		};
 	};
 };
diff --git a/kernel/kernel-4.9/arch/arm64/configs/tegra_ar1335_defconfig b/kernel/kernel-4.9/arch/arm64/configs/tegra_ar1335_defconfig
index 8ca132f..d501152 100644
--- a/kernel/kernel-4.9/arch/arm64/configs/tegra_ar1335_defconfig
+++ b/kernel/kernel-4.9/arch/arm64/configs/tegra_ar1335_defconfig
@@ -647,6 +647,7 @@ CONFIG_SND_USB_AUDIO=y
 CONFIG_SND_SOC=y
 CONFIG_SND_SOC_TAS2552=y
 CONFIG_SND_SIMPLE_CARD=y
+CONFIG_SND_SOC_SGTL5000=y
 CONFIG_SND_SOC_TEGRA_T186REF_P4573_ALT=y
 CONFIG_SND_SOC_TEGRA_T186REF_M3420_ALT=y
 CONFIG_SND_SOC_TEGRA_ALT=y
diff --git a/kernel/nvidia/sound/soc/tegra-alt/machine_drivers/tegra_machine_driver_mobile.c b/kernel/nvidia/sound/soc/tegra-alt/machine_drivers/tegra_machine_driver_mobile.c
index 4a892c7..ee4d93f 100644
--- a/kernel/nvidia/sound/soc/tegra-alt/machine_drivers/tegra_machine_driver_mobile.c
+++ b/kernel/nvidia/sound/soc/tegra-alt/machine_drivers/tegra_machine_driver_mobile.c
@@ -642,6 +642,23 @@ static int tegra_machine_dai_init(struct snd_soc_pcm_runtime *runtime,
 		}
 	}
 
+    rtd = snd_soc_get_pcm_runtime(card, "sgtl5000-playback");
+    if (rtd) {
+            dai_params =
+            (struct snd_soc_pcm_stream *)rtd->dai_link->params;
+
+            dai_params->rate_min = clk_rate;
+            dai_params->channels_min = channels;
+            dai_params->formats = formats;
+
+            err = snd_soc_dai_set_sysclk(rtd->codec_dai, RT5659_SCLK_S_MCLK,
+                                         clk_out_rate, SND_SOC_CLOCK_IN);
+            if (err < 0) {
+                    dev_err(card->dev, "codec_dai clock not set\n");
+                    return err;
+            }
+    }
+
 	return 0;
 }
 
@@ -712,7 +729,6 @@ static int tegra_machine_resume_post(struct snd_soc_card *card)
 {
 	struct tegra_machine *machine = snd_soc_card_get_drvdata(card);
 	struct snd_soc_pcm_runtime *rtd;
-
 	if (machine->is_hs_supported) {
 		rtd = snd_soc_get_pcm_runtime(card, "rt565x-playback");
 		if (rtd)
@@ -869,6 +885,21 @@ static int tegra_machine_sfc_init(struct snd_soc_pcm_runtime *rtd)
 	return err;
 }
 
+static int tegra_machine_sgtl5000_init(struct snd_soc_pcm_runtime *rtd)
+{
+       struct tegra_machine *machine = snd_soc_card_get_drvdata(rtd->card);
+       int err;
+
+       err = tegra_alt_asoc_utils_set_extern_parent(&machine->audio_clock,
+                                                    "pll_a_out0");
+       if (err < 0) {
+               dev_err(rtd->card->dev, "Failed to set extern clk parent\n");
+               return err;
+       }
+
+       return 0;
+}
+
 static void dai_link_setup(struct platform_device *pdev)
 {
 	struct snd_soc_card *card = platform_get_drvdata(pdev);
@@ -912,6 +943,10 @@ static void dai_link_setup(struct platform_device *pdev)
 				"dspk-playback-l"))
 				tegra_machine_codec_links[i].init =
 					tegra_machine_dspk_init;
+            else if (strstr(tegra_machine_codec_links[i].name,
+                "sgtl5000-playback"))
+                tegra_machine_codec_links[i].init =
+                    tegra_machine_sgtl5000_init;
 		}
 	}
 
