diff --git a/sound/pci/Kconfig b/sound/pci/Kconfig
index 8756c8e..56d93bf 100644
--- a/sound/pci/Kconfig
+++ b/sound/pci/Kconfig
@@ -578,8 +578,6 @@ config SND_FM801_TEA575X_BOOL
          FM801 chip with a TEA5757 tuner (MediaForte SF256-PCS, SF256-PCP and
          SF64-PCR) into the snd-fm801 driver.

-source "sound/pci/hda/Kconfig"
-
 config SND_HDSP
        tristate "RME Hammerfall DSP Audio"
        select FW_LOADER
@@ -889,3 +887,5 @@ config SND_YMFPCI
          will be called snd-ymfpci.

 endif  # SND_PCI
+
+source "sound/pci/hda/Kconfig"
diff --git a/sound/pci/hda/Kconfig b/sound/pci/hda/Kconfig
index 0e53634..d983d24 100644
--- a/sound/pci/hda/Kconfig
+++ b/sound/pci/hda/Kconfig
@@ -1,5 +1,5 @@
-menuconfig SND_HDA_INTEL
-       tristate "Intel HD Audio"
+menuconfig SND_HDA
+       tristate "HD Audio"
        select SND_PCM
        select SND_VMASTER
        select SND_KCTL_JACK
@@ -10,9 +10,55 @@ menuconfig SND_HDA_INTEL
          This option enables the HD-audio controller.  Don't forget
          to choose the appropriate codec options below.

+config SND_HDA_INTEL
+       tristate "Intel HD Audio"
+       depends on SND_PCI
+       select SND_HDA
+       help
+         Say Y here to support standard PC HDA over PCI
+
+         This options enables support for HD Audio via PCI present on
+         most PCs.
+
          To compile this driver as a module, choose M here: the module
          will be called snd-hda-intel.

+config SND_HDA_TEGRA
+       tristate "Tegra HD Audio"
+       select SND_HDA
+       help
+         Say Y here to support the HDA controller present in Nvidia
+         Tegra SoCs
+
+         This options enables support for the HD Audio controller
+         present in some Nvidia Tegra SoCs, used to communicate audio
+         to the HDMI output.
+
+         To compile this driver as a module, choose M here: the module
+         will be called snd-hda-tegra.
+
+if SND_HDA_INTEL || SND_HDA_TEGRA
+
+config SND_HDA_CODEC_HDMI
+       tristate "Build HDMI/DisplayPort HD-audio codec support"
+       help
+         Say Y or M here to include HDMI and DisplayPort HD-audio codec
+         support in snd-hda-intel or tegra driver.  This includes all
+         AMD/ATI, Intel and Nvidia HDMI/DisplayPort codecs.
+
+comment "Set to Y if you want auto-loading the codec driver"
+       depends on SND_HDA_INTEL=y && SND_HDA_CODEC_HDMI=m
+
+config SND_HDA_POWER_SAVE_DEFAULT
+       int "Default time-out for HD-audio power-save mode"
+       depends on PM
+       default 0
+       help
+         The default time-out value in seconds for HD-audio automatic
+         power-save mode.  0 means to disable the power-save mode.
+
+endif
+
 if SND_HDA_INTEL

 config SND_HDA_DSP_LOADER
@@ -126,16 +172,6 @@ config SND_HDA_CODEC_VIA
 comment "Set to Y if you want auto-loading the codec driver"
        depends on SND_HDA_INTEL=y && SND_HDA_CODEC_VIA=m

-config SND_HDA_CODEC_HDMI
-       tristate "Build HDMI/DisplayPort HD-audio codec support"
-       help
-         Say Y or M here to include HDMI and DisplayPort HD-audio codec
-         support in snd-hda-intel driver.  This includes all AMD/ATI,
-         Intel and Nvidia HDMI/DisplayPort codecs.
-
-comment "Set to Y if you want auto-loading the codec driver"
-       depends on SND_HDA_INTEL=y && SND_HDA_CODEC_HDMI=m
-
 config SND_HDA_I915
        bool
        default y
@@ -220,12 +256,4 @@ config SND_HDA_GENERIC
 comment "Set to Y if you want auto-loading the codec driver"
        depends on SND_HDA_INTEL=y && SND_HDA_GENERIC=m

-config SND_HDA_POWER_SAVE_DEFAULT
-       int "Default time-out for HD-audio power-save mode"
-       depends on PM
-       default 0
-       help
-         The default time-out value in seconds for HD-audio automatic
-         power-save mode.  0 means to disable the power-save mode.
-
 endif
diff --git a/sound/pci/hda/Makefile b/sound/pci/hda/Makefile
index c5fa8e7..a964b6e 100644
--- a/sound/pci/hda/Makefile
+++ b/sound/pci/hda/Makefile
@@ -1,4 +1,6 @@
-snd-hda-intel-objs := hda_shared.o hda_intel.o
+snd-hda-intel-objs := hda_intel.o
+snd-hda-shared-objs := hda_shared.o
+snd-hda-tegra-objs := hda_tegra.o
 # for haswell power well
 snd-hda-intel-$(CONFIG_SND_HDA_I915) +=        hda_i915.o

@@ -25,7 +27,8 @@ snd-hda-codec-via-objs :=     patch_via.o
 snd-hda-codec-hdmi-objs :=     patch_hdmi.o hda_eld.o

 # common driver
-obj-$(CONFIG_SND_HDA_INTEL) := snd-hda-codec.o
+obj-$(CONFIG_SND_HDA) := snd-hda-codec.o
+obj-$(CONFIG_SND_HDA) += snd-hda-shared.o

 # codec drivers
 obj-$(CONFIG_SND_HDA_GENERIC) += snd-hda-codec-generic.o
@@ -45,3 +48,4 @@ obj-$(CONFIG_SND_HDA_CODEC_HDMI) += snd-hda-codec-hdmi.o
 # otherwise the codec patches won't be hooked before the PCI probe
 # when built in kernel
 obj-$(CONFIG_SND_HDA_INTEL) += snd-hda-intel.o
+obj-$(CONFIG_SND_HDA_TEGRA) += snd-hda-tegra.o
