diff -rupN rockbox-18325.orig/firmware/drivers/audio/wm8731.c rockbox-18325.patched/firmware/drivers/audio/wm8731.c --- rockbox-18325.orig/firmware/drivers/audio/wm8731.c 2008-08-21 08:40:17.000000000 +1000 +++ rockbox-18325.patched/firmware/drivers/audio/wm8731.c 2008-09-11 16:08:13.000000000 +1000 @@ -232,8 +232,30 @@ void audiohw_set_nsorder(int order) void audiohw_set_sample_rate(int sampling_control) { + int rate = 0; + switch(sampling_control) + { + case SAMPR_96: + rate = WM8731_USB24_96000HZ; + break; + case SAMPR_88: + rate = WM8731_USB24_88200HZ; + break; + case SAMPR_48: + rate = WM8731_USB24_48000HZ; + break; + case SAMPR_44: + rate = WM8731_USB24_44100HZ; + break; + case SAMPR_32: + rate = WM8731_USB24_32000HZ; + break; + case SAMPR_8: + rate = WM8731_USB24_8000HZ; + break; + } codec_set_active(false); - wmcodec_write(SAMPCTRL, sampling_control); + wmcodec_write(SAMPCTRL, rate); codec_set_active(true); } diff -rupN rockbox-18325.orig/firmware/export/config-h10.h rockbox-18325.patched/firmware/export/config-h10.h --- rockbox-18325.orig/firmware/export/config-h10.h 2008-08-21 08:40:18.000000000 +1000 +++ rockbox-18325.patched/firmware/export/config-h10.h 2008-09-11 16:09:05.000000000 +1000 @@ -18,10 +18,10 @@ #define INPUT_SRC_CAPS (SRC_CAP_MIC | SRC_CAP_LINEIN | SRC_CAP_FMRADIO) /* define the bitmask of hardware sample rates */ -#define HW_SAMPR_CAPS (SAMPR_CAP_44) +#define HW_SAMPR_CAPS (SAMPR_CAP_96 | SAMPR_CAP_88 | SAMPR_CAP_48 | SAMPR_CAP_44 | SAMPR_CAP_32 | SAMPR_CAP_8) /* define the bitmask of recording sample rates */ -#define REC_SAMPR_CAPS (SAMPR_CAP_44) +#define REC_SAMPR_CAPS (SAMPR_CAP_96 | SAMPR_CAP_88 | SAMPR_CAP_48 | SAMPR_CAP_44 | SAMPR_CAP_32 | SAMPR_CAP_8) /* define this if you have a bitmap LCD display */ #define HAVE_LCD_BITMAP diff -rupN rockbox-18325.orig/firmware/target/arm/pcm-pp.c rockbox-18325.patched/firmware/target/arm/pcm-pp.c --- rockbox-18325.orig/firmware/target/arm/pcm-pp.c 2008-08-21 08:40:18.000000000 +1000 +++ rockbox-18325.patched/firmware/target/arm/pcm-pp.c 2008-09-11 16:07:45.000000000 +1000 @@ -94,9 +94,13 @@ static int sr_ctrl = MROBE100_44100HZ; #endif void pcm_set_frequency(unsigned int frequency) -{ - (void)frequency; +{ +#ifdef HAVE_WM8731 + pcm_freq = frequency; +#else + (void)frequency; pcm_freq = HW_SAMPR_DEFAULT; +#endif #ifdef HAVE_WM8751 sr_ctrl = MROBE100_44100HZ; #endif @@ -107,6 +111,10 @@ void pcm_apply_settings(void) #ifdef HAVE_WM8751 audiohw_set_frequency(sr_ctrl); #endif + +#ifdef HAVE_WM8731 + audiohw_set_sample_rate(pcm_freq); +#endif pcm_curr_sampr = pcm_freq; }