--- /dev/null
+
+Upstream-Status: Backport
+
+commit 7df57eb5d6bdc85ddcf2b9afb6cd0cacfb22096e
+Author: Nitin A Kamble <nitin.a.kamble@intel.com>
+Date:   Thu Sep 25 18:19:43 2014 -0700
+
+    asoc.h: fix build with v3.17 kernel
+    
+    The snd_soc_codec structure has changed in the v3.17 kernel. Some
+    of the redundant fields have been removed. To be specific this commit
+    from the v3.17 kernel causes the build failure for lttng-modules.
+    
+    |commit f4333203ec933f9272c90c7add01774ec2cf94d3
+    |Author: Lars-Peter Clausen <lars@metafoo.de>
+    |Date:   Mon Jun 16 18:13:02 2014 +0200
+    |
+    |    ASoC: Move name and id from CODEC/platform to component
+    |
+    |    The component struct already has a name and id field which are initialized to
+    |    the same values as the same fields in the CODEC and platform structs. So remove
+    |    them from the CODEC and platform structs and used the ones from the component
+    |    struct instead.
+    |
+    |    Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
+    |    Signed-off-by: Mark Brown <broonie@linaro.org>
+    
+    The asoc.h is changed according to the change in the above kernel commit
+    to fix the lttng-modules build. The change in the lttng-modules code is
+    conditional on the kernel version, so that it does not break builds with
+    previous kernel versions.
+    
+    Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
+    Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
+
+diff --git a/instrumentation/events/lttng-module/asoc.h b/instrumentation/events/lttng-module/asoc.h
+index 672bea4..bf9cf86 100644
+--- a/instrumentation/events/lttng-module/asoc.h
++++ b/instrumentation/events/lttng-module/asoc.h
+@@ -21,6 +21,14 @@ struct snd_soc_card;
+ struct snd_soc_dapm_widget;
+ #endif
+ 
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,16,0))
++#define CODEC_NAME_FIELD component.name
++#define CODEC_ID_FIELD component.id
++#else
++#define CODEC_NAME_FIELD name
++#define CODEC_ID_FIELD id
++#endif
++
+ /*
+  * Log register events
+  */
+@@ -32,15 +40,15 @@ DECLARE_EVENT_CLASS(snd_soc_reg,
+       TP_ARGS(codec, reg, val),
+ 
+       TP_STRUCT__entry(
+-              __string(       name,           codec->name     )
++              __string(       name,           codec->CODEC_NAME_FIELD )
+               __field(        int,            id              )
+               __field(        unsigned int,   reg             )
+               __field(        unsigned int,   val             )
+       ),
+ 
+       TP_fast_assign(
+-              tp_strcpy(name, codec->name)
+-              tp_assign(id, codec->id)
++              tp_strcpy(name, codec->CODEC_NAME_FIELD)
++              tp_assign(id, codec->CODEC_ID_FIELD)
+               tp_assign(reg, reg)
+               tp_assign(val, val)
+       ),
+@@ -77,15 +85,15 @@ DECLARE_EVENT_CLASS(snd_soc_preg,
+       TP_ARGS(platform, reg, val),
+ 
+       TP_STRUCT__entry(
+-              __string(       name,           platform->name  )
++              __string(       name,           platform->CODEC_NAME_FIELD      )
+               __field(        int,            id              )
+               __field(        unsigned int,   reg             )
+               __field(        unsigned int,   val             )
+       ),
+ 
+       TP_fast_assign(
+-              tp_strcpy(name, platform->name)
+-              tp_assign(id, platform->id)
++              tp_strcpy(name, platform->CODEC_NAME_FIELD)
++              tp_assign(id, platform->CODEC_ID_FIELD)
+               tp_assign(reg, reg)
+               tp_assign(val, val)
+       ),
+@@ -399,17 +407,17 @@ TRACE_EVENT(snd_soc_cache_sync,
+       TP_ARGS(codec, type, status),
+ 
+       TP_STRUCT__entry(
+-              __string(       name,           codec->name     )
++              __string(       name,           codec->CODEC_NAME_FIELD )
+               __string(       status,         status          )
+               __string(       type,           type            )
+               __field(        int,            id              )
+       ),
+ 
+       TP_fast_assign(
+-              tp_strcpy(name, codec->name)
++              tp_strcpy(name, codec->CODEC_NAME_FIELD)
+               tp_strcpy(status, status)
+               tp_strcpy(type, type)
+-              tp_assign(id, codec->id)
++              tp_assign(id, codec->CODEC_ID_FIELD)
+       ),
+ 
+       TP_printk("codec=%s.%d type=%s status=%s", __get_str(name),