From 36e8fc08726fcf40071aad48f20df004d9c499ef Mon Sep 17 00:00:00 2001 From: Vitja Makarov Date: Fri, 18 Sep 2009 05:48:37 +0000 Subject: tcc77x: add tcc77x_cscfg_bw() helper for external memory bus width setup git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22729 a1c6a512-1295-4272-9138-f99709370657 --- firmware/target/arm/ata-nand-telechips.c | 2 +- firmware/target/arm/tcc77x/iaudio7/lcd-iaudio7.c | 2 +- firmware/target/arm/tcc77x/system-target.h | 13 +++++++++++++ 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/firmware/target/arm/ata-nand-telechips.c b/firmware/target/arm/ata-nand-telechips.c index 7250211eb9..4875ea6dc0 100644 --- a/firmware/target/arm/ata-nand-telechips.c +++ b/firmware/target/arm/ata-nand-telechips.c @@ -900,7 +900,7 @@ int nand_init(void) mutex_init(&ata_mtx); #ifdef CPU_TCC77X - CSCFG2 = 0x318a8010; + CSCFG2 = 0x018a8010 | tcc77x_cscfg_bw(TCC77X_CSCFG_BW8); GPIOC_FUNC &= ~(CS_GPIO_BIT | WE_GPIO_BIT); GPIOC_FUNC |= 0x1; diff --git a/firmware/target/arm/tcc77x/iaudio7/lcd-iaudio7.c b/firmware/target/arm/tcc77x/iaudio7/lcd-iaudio7.c index ef7e1ec140..6da0d2c083 100644 --- a/firmware/target/arm/tcc77x/iaudio7/lcd-iaudio7.c +++ b/firmware/target/arm/tcc77x/iaudio7/lcd-iaudio7.c @@ -128,7 +128,7 @@ static void _display_on(void) void lcd_init_device(void) { /* Configure external memory banks */ - CSCFG1 = 0x2d500023 | (((MCFG >> 11) & 1) << 28); + CSCFG1 = 0x0d500023 | tcc77x_cscfg_bw(TCC77X_CSCFG_BW16); /* may be reset */ GPIOA |= 0x8000; diff --git a/firmware/target/arm/tcc77x/system-target.h b/firmware/target/arm/tcc77x/system-target.h index 55dd52ef47..beeeac05c6 100644 --- a/firmware/target/arm/tcc77x/system-target.h +++ b/firmware/target/arm/tcc77x/system-target.h @@ -43,4 +43,17 @@ static inline void udelay(unsigned usecs) while (TIME_BEFORE(USEC_TIMER, stop)); } + +#define TCC77X_CSCFG_BW8 0 +#define TCC77X_CSCFG_BW16 1 + +/* Due to hardware bug or "feature" this hack is needed to set bus width bits */ +static inline +unsigned long tcc77x_cscfg_bw(int bw) { + if (bw == TCC77X_CSCFG_BW8) + return (((MCFG >> 11) & 3) ^ 3) << 28; + else + return (((MCFG >> 11) & 3) ^ 2) << 28; +} + #endif /* SYSTEM_TARGET_H */ -- cgit v1.2.3