From c49f135f72f98633653300bab5b0ac993b03c6be Mon Sep 17 00:00:00 2001 From: Imre Kaloz Date: Tue, 23 Jun 2009 21:04:37 +0000 Subject: use broken-out patches for the coldfire to make it easier to follow differences against the bsp SVN-Revision: 16547 --- .../coldfire/patches/038-m5445x_audio_rates.patch | 77 ++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 target/linux/coldfire/patches/038-m5445x_audio_rates.patch (limited to 'target/linux/coldfire/patches/038-m5445x_audio_rates.patch') diff --git a/target/linux/coldfire/patches/038-m5445x_audio_rates.patch b/target/linux/coldfire/patches/038-m5445x_audio_rates.patch new file mode 100644 index 0000000..09e47c4 --- /dev/null +++ b/target/linux/coldfire/patches/038-m5445x_audio_rates.patch @@ -0,0 +1,77 @@ +From de5f4660856350ac43f642bb7c5adf063fc68287 Mon Sep 17 00:00:00 2001 +From: Kurt Mahan +Date: Mon, 10 Dec 2007 13:15:33 -0700 +Subject: [PATCH] Fix to allow playback at other than 44.1. + +LTIBName: m5445x-audio-rates +Signed-off-by: Kurt Mahan +--- + drivers/spi/ssi_audio.c | 34 ++++++++++++++++++++++++---------- + 1 files changed, 24 insertions(+), 10 deletions(-) + +--- a/drivers/spi/ssi_audio.c ++++ b/drivers/spi/ssi_audio.c +@@ -34,7 +34,6 @@ + #define SOUND_DEVICE_NAME "sound" + #define DRIVER_NAME "ssi_audio" + +- + /* #define AUDIO_DEBUG */ + + #ifdef CONFIG_MMU +@@ -315,24 +314,36 @@ static inline void disable_ssi(void) + } + + /* Audio CODEC initialization */ +-/* TODO: also the SSI frequency/dividers must be adjusted */ + static void adjust_codec_speed(void) { + #ifdef AUDIO_DEBUG + printk(DRIVER_NAME ":adjust_codec_speed: %d\n", audio_device->speed); + #endif +- +- if (audio_device->speed == 8000) { ++ disable_ssi(); ++ switch (audio_device->speed) { ++ case 8000: ++ MCF_CCM_CDR = MCF_CCM_CDR_SSIDIV(255); + codec_write(CODEC_SAMPLE_RATE_REG,CODEC_SAMPLE_8KHZ); +- } else if (audio_device->speed == 16000) { ++ break; ++ case 16000: ++ MCF_CCM_CDR = MCF_CCM_CDR_SSIDIV(129); + codec_write(CODEC_SAMPLE_RATE_REG,CODEC_SAMPLE_16KHZ); +- } else if (audio_device->speed == 22000) { ++ break; ++ case 22000: ++ case 22050: ++ MCF_CCM_CDR = MCF_CCM_CDR_SSIDIV(94); + codec_write(CODEC_SAMPLE_RATE_REG,CODEC_SAMPLE_22KHZ); +- } else if (audio_device->speed == 44000 || audio_device->speed == 44100) { ++ break; ++ case 44000: ++ case 44100: ++ MCF_CCM_CDR = MCF_CCM_CDR_SSIDIV(47); + codec_write(CODEC_SAMPLE_RATE_REG,CODEC_SAMPLE_44KHZ); +- } else if (audio_device->speed == 48000) { ++ break; ++ case 48000: ++ MCF_CCM_CDR = MCF_CCM_CDR_SSIDIV(42); + codec_write(CODEC_SAMPLE_RATE_REG,CODEC_SAMPLE_48KHZ); +- } else { +- /* default 44KHz */ ++ break; ++ default: ++ MCF_CCM_CDR = MCF_CCM_CDR_SSIDIV(47); + codec_write(CODEC_SAMPLE_RATE_REG,CODEC_SAMPLE_44KHZ); + } + } +@@ -712,6 +723,9 @@ static int ssi_audio_ioctl(struct inode + case SNDCTL_DSP_SAMPLESIZE: + if (access_ok(VERIFY_READ, (void *) arg, sizeof(val))) { + get_user(val, (unsigned long *) arg); ++#ifdef AUDIO_DEBUG ++ printk(DRIVER_NAME ":ssi_audio_ioctl: SNDCTL_DSP_SAMPLESIZE: %d\n", val); ++#endif + ssi_audio_txdrain(); + ssi_audio_setsamplesize(val); + } else { -- cgit v1.1