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 #include #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,