summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVitja Makarov <vitja.makarov@gmail.com>2009-09-18 05:48:37 +0000
committerVitja Makarov <vitja.makarov@gmail.com>2009-09-18 05:48:37 +0000
commit36e8fc08726fcf40071aad48f20df004d9c499ef (patch)
treeda5b5cb31dbbbdadf0534ec4b2b046cea17d2aaf
parent05fd9ee182a6a9147bd2fe285ee91307e6620c96 (diff)
downloadrockbox-36e8fc08726fcf40071aad48f20df004d9c499ef.tar.gz
rockbox-36e8fc08726fcf40071aad48f20df004d9c499ef.zip
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
-rw-r--r--firmware/target/arm/ata-nand-telechips.c2
-rw-r--r--firmware/target/arm/tcc77x/iaudio7/lcd-iaudio7.c2
-rw-r--r--firmware/target/arm/tcc77x/system-target.h13
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)
900 mutex_init(&ata_mtx); 900 mutex_init(&ata_mtx);
901 901
902#ifdef CPU_TCC77X 902#ifdef CPU_TCC77X
903 CSCFG2 = 0x318a8010; 903 CSCFG2 = 0x018a8010 | tcc77x_cscfg_bw(TCC77X_CSCFG_BW8);
904 904
905 GPIOC_FUNC &= ~(CS_GPIO_BIT | WE_GPIO_BIT); 905 GPIOC_FUNC &= ~(CS_GPIO_BIT | WE_GPIO_BIT);
906 GPIOC_FUNC |= 0x1; 906 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)
128void lcd_init_device(void) 128void lcd_init_device(void)
129{ 129{
130 /* Configure external memory banks */ 130 /* Configure external memory banks */
131 CSCFG1 = 0x2d500023 | (((MCFG >> 11) & 1) << 28); 131 CSCFG1 = 0x0d500023 | tcc77x_cscfg_bw(TCC77X_CSCFG_BW16);
132 132
133 /* may be reset */ 133 /* may be reset */
134 GPIOA |= 0x8000; 134 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)
43 while (TIME_BEFORE(USEC_TIMER, stop)); 43 while (TIME_BEFORE(USEC_TIMER, stop));
44} 44}
45 45
46
47#define TCC77X_CSCFG_BW8 0
48#define TCC77X_CSCFG_BW16 1
49
50/* Due to hardware bug or "feature" this hack is needed to set bus width bits */
51static inline
52unsigned long tcc77x_cscfg_bw(int bw) {
53 if (bw == TCC77X_CSCFG_BW8)
54 return (((MCFG >> 11) & 3) ^ 3) << 28;
55 else
56 return (((MCFG >> 11) & 3) ^ 2) << 28;
57}
58
46#endif /* SYSTEM_TARGET_H */ 59#endif /* SYSTEM_TARGET_H */