diff -urN alsa-lib-1.0.18-0rig//src/pcm/pcm_local.h alsa-lib-1.0.18/src/pcm/pcm_local.h
--- alsa-lib-1.0.18-0rig//src/pcm/pcm_local.h	2009-01-31 11:02:12.000000000 +0100
+++ alsa-lib-1.0.18/src/pcm/pcm_local.h	2009-01-31 11:03:24.000000000 +0100
@@ -611,6 +611,13 @@
 			   snd_pcm_hw_param_t var);
 int _snd_pcm_hw_param_set(snd_pcm_hw_params_t *params,
 			  snd_pcm_hw_param_t var, unsigned int val, int dir);
+
+#if	defined(AVR32_INLINE_BUG)
+int _snd_pcm_hw_params_set_format(snd_pcm_hw_params_t *params,
+						snd_pcm_format_t val);
+int _snd_pcm_hw_params_set_subformat(snd_pcm_hw_params_t *params,
+				     snd_pcm_subformat_t val);
+#else
 static inline int _snd_pcm_hw_params_set_format(snd_pcm_hw_params_t *params,
 						snd_pcm_format_t val)
 {
@@ -624,7 +631,7 @@
 	return _snd_pcm_hw_param_set(params, SND_PCM_HW_PARAM_SUBFORMAT,
 				     (unsigned long) val, 0);
 }
-
+#endif
 int _snd_pcm_hw_param_set_min(snd_pcm_hw_params_t *params,
 			      snd_pcm_hw_param_t var, unsigned int val, int dir);
 int _snd_pcm_hw_param_set_max(snd_pcm_hw_params_t *params,
diff -urN alsa-lib-1.0.18-0rig//src/pcm/pcm_route.c alsa-lib-1.0.18/src/pcm/pcm_route.c
--- alsa-lib-1.0.18-0rig//src/pcm/pcm_route.c	2009-01-31 11:02:12.000000000 +0100
+++ alsa-lib-1.0.18/src/pcm/pcm_route.c	2009-01-31 11:03:18.000000000 +0100
@@ -26,6 +26,7 @@
  *
  */
   
+
 #include <byteswap.h>
 #include <math.h>
 #include "pcm_local.h"
@@ -106,6 +107,23 @@
 
 #endif /* DOC_HIDDEN */
 
+
+#if	defined(AVR32_INLINE_BUG)
+int _snd_pcm_hw_params_set_format(snd_pcm_hw_params_t *params,
+						snd_pcm_format_t val)
+{
+	return _snd_pcm_hw_param_set(params, SND_PCM_HW_PARAM_FORMAT,
+				     (unsigned long) val, 0);
+}
+
+int _snd_pcm_hw_params_set_subformat(snd_pcm_hw_params_t *params,
+				     snd_pcm_subformat_t val)
+{
+	return _snd_pcm_hw_param_set(params, SND_PCM_HW_PARAM_SUBFORMAT,
+				     (unsigned long) val, 0);
+}
+#endif
+
 static void snd_pcm_route_convert1_zero(const snd_pcm_channel_area_t *dst_area,
 					snd_pcm_uframes_t dst_offset,
 					const snd_pcm_channel_area_t *src_areas ATTRIBUTE_UNUSED,
@@ -483,6 +501,8 @@
 				  snd_pcm_uframes_t frames,
 				  snd_pcm_route_params_t *params)
 {
+#if	defined(AVR32_INLINE_BUG)
+#endif
 	unsigned int dst_channel;
 	snd_pcm_route_ttable_dst_t *dstp;
 	const snd_pcm_channel_area_t *dst_area;
@@ -551,8 +571,20 @@
 	_snd_pcm_hw_param_set_mask(sparams, SND_PCM_HW_PARAM_ACCESS,
 				   &saccess_mask);
 	if (route->sformat != SND_PCM_FORMAT_UNKNOWN) {
+#if	defined(AVR32_INLINE_BUG)
+/* Start of  of problem */
+#endif
 		_snd_pcm_hw_params_set_format(sparams, route->sformat);
 		_snd_pcm_hw_params_set_subformat(sparams, SND_PCM_SUBFORMAT_STD);
+#if	0
+		_snd_pcm_hw_param_set(sparams, SND_PCM_HW_PARAM_FORMAT,
+				     (unsigned long) route->sformat, 0);
+		_snd_pcm_hw_param_set(sparams, SND_PCM_HW_PARAM_SUBFORMAT,
+				     (unsigned long) SND_PCM_SUBFORMAT_STD, 0);
+#endif
+#if	defined(AVR32_INLINE_BUG)
+/* End of problem */
+#endif
 	}
 	if (route->schannels >= 0) {
 		_snd_pcm_hw_param_set(sparams, SND_PCM_HW_PARAM_CHANNELS,
