From fc570147e66b91686aeffdf9896eb209027cf9ca Mon Sep 17 00:00:00 2001 From: Mark Arigo Date: Sat, 1 Aug 2009 17:51:00 +0000 Subject: Philips SA9200: initialize i2c, i2s, and as3514 as the OF does. Fixes clicks/pops heard when reading the adc. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22101 a1c6a512-1295-4272-9138-f99709370657 --- firmware/drivers/audio/as3514.c | 5 +++++ firmware/target/arm/i2c-pp.c | 7 +++++++ firmware/target/arm/i2s-pp.c | 8 ++++++++ 3 files changed, 20 insertions(+) diff --git a/firmware/drivers/audio/as3514.c b/firmware/drivers/audio/as3514.c index dc6efb511a..b7c99f433b 100644 --- a/firmware/drivers/audio/as3514.c +++ b/firmware/drivers/audio/as3514.c @@ -182,8 +182,13 @@ void audiohw_preinit(void) as3514_write(AS3514_HPH_OUT_L, HPH_OUT_L_HP_ON | HPH_OUT_L_HP_MUTE | 0x00); +#ifdef PHILIPS_SA9200 + /* LRCK 8-23kHz (there are audible clicks while reading the ADC otherwise) */ + as3514_write(AS3514_PLLMODE, PLLMODE_LRCK_8_23); +#else /* LRCK 24-48kHz */ as3514_write(AS3514_PLLMODE, PLLMODE_LRCK_24_48); +#endif /* DAC_Mute_off */ as3514_set(AS3514_DAC_L, DAC_L_DAC_MUTE_off); diff --git a/firmware/target/arm/i2c-pp.c b/firmware/target/arm/i2c-pp.c index 13c8cf0a1e..60497b04b9 100644 --- a/firmware/target/arm/i2c-pp.c +++ b/firmware/target/arm/i2c-pp.c @@ -299,6 +299,13 @@ void i2c_init(void) outl(0x1e, 0x600060a4); ascodec_write(AS3514_SUPERVISOR, 5); +#elif defined(PHILIPS_SA9200) + outl(0x0, 0x600060a4); + outl(inl(0x600060a4) | 0x20, 0x600060a4); + + outl(inl(0x7000c020) | 0x3, 0x7000c020); + outl(0x55, 0x7000c02c); + outl(0x54, 0x7000c030); #endif #endif diff --git a/firmware/target/arm/i2s-pp.c b/firmware/target/arm/i2s-pp.c index e4b9f8e1df..c9d66d53ae 100644 --- a/firmware/target/arm/i2s-pp.c +++ b/firmware/target/arm/i2s-pp.c @@ -63,9 +63,17 @@ void i2s_reset(void) #ifdef HAVE_AS3514 /* AS3514 can only operate as I2S Slave */ IISCONFIG |= IIS_MASTER; + /* Set I2S to 44.1kHz */ +#ifdef PHILIPS_SA9200 + /* values taken from the SA9200 OF */ + IISCLK = (IISCLK & ~0x1ff) | 31; + IISDIV = (IISDIV & ~0xc0000000) | (2 << 30); + IISDIV = (IISDIV & ~0x3f) | 16; +#else IISCLK = (IISCLK & ~0x1ff) | 33; IISDIV = 7; +#endif #endif /* HAVE_AS3514 */ IISCONFIG = ((IISCONFIG & ~IIS_FIFO_FORMAT_MASK) | IIS_FIFO_FORMAT_LE16_2); -- cgit v1.2.3