summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYuri Tikhonov <yur@pollux.denx.de>2008-03-18 13:33:30 +0100
committerWolfgang Denk <wd@denx.de>2008-03-18 22:24:49 +0100
commit23e20aa6488e6c0622496549861bfdc74108debe (patch)
tree41fc4ce7354be79ca1744958cad75fcacc3821b2
parent46bc0a938779aa1d664b847d36b08aa00f22e539 (diff)
downloadbootable_bootloader_goldelico_gta04-23e20aa6488e6c0622496549861bfdc74108debe.zip
bootable_bootloader_goldelico_gta04-23e20aa6488e6c0622496549861bfdc74108debe.tar.gz
bootable_bootloader_goldelico_gta04-23e20aa6488e6c0622496549861bfdc74108debe.tar.bz2
lwmon5: Fix register test logic to match the specific GDC h/w.
Signed-off-by: Dmitry Rakhchev <rda@emcraft.com> Signed-off-by: Yuri Tikhonov <yur@emcraft.com>
-rw-r--r--post/board/lwmon5/gdc.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/post/board/lwmon5/gdc.c b/post/board/lwmon5/gdc.c
index 73d5935..4af6a7a 100644
--- a/post/board/lwmon5/gdc.c
+++ b/post/board/lwmon5/gdc.c
@@ -35,7 +35,7 @@
DECLARE_GLOBAL_DATA_PTR;
-#define GDC_SCRATCH_REG 0xC1FF8008
+#define GDC_SCRATCH_REG 0xC1FF8044
#define GDC_VERSION_REG 0xC1FF8084
#define GDC_RAM_START 0xC0000000
#define GDC_RAM_END 0xC2000000
@@ -44,7 +44,7 @@ DECLARE_GLOBAL_DATA_PTR;
static int gdc_test_reg_one(uint value)
{
- int ret = 0;
+ int ret;
uint read_value;
/* write test pattern */
@@ -56,10 +56,9 @@ static int gdc_test_reg_one(uint value)
if (read_value != value) {
post_log("GDC SCRATCH test failed write %08X, read %08X\n",
value, read_value);
- ret = 1;
}
- return ret;
+ return (read_value != value);
}
/* Verify GDC, get memory size */
@@ -71,9 +70,16 @@ int gdc_post_test(int flags)
post_log("\n");
old_value = in_be32((void *)GDC_SCRATCH_REG);
- if (gdc_test_reg_one(0x55555555))
+ /*
+ * GPIOC2 register behaviour: the LIME graphics processor has a
+ * maximum of 5 GPIO ports that can be used in this hardware
+ * configuration. Thus only the bits for these 5 GPIOs can be
+ * activated in the GPIOC2 register. All other bits will always be
+ * read as zero.
+ */
+ if (gdc_test_reg_one(0x00150015))
ret = 1;
- if (gdc_test_reg_one(0xAAAAAAAA))
+ if (gdc_test_reg_one(0x000A000A))
ret = 1;
out_be32((void *)GDC_SCRATCH_REG, old_value);