summaryrefslogtreecommitdiff
path: root/board/esd/pmc405/pmc405.c
diff options
context:
space:
mode:
authorstroese <stroese>2004-12-16 18:40:02 +0000
committerstroese <stroese>2004-12-16 18:40:02 +0000
commit4510a7b736b94e4401907ff556107a8252a84440 (patch)
treeb8bec6130367b857d27381507d84302c59ef729f /board/esd/pmc405/pmc405.c
parent12537cc5a9cb4134e358725ca5720c434afac814 (diff)
downloadu-boot-imx-4510a7b736b94e4401907ff556107a8252a84440.zip
u-boot-imx-4510a7b736b94e4401907ff556107a8252a84440.tar.gz
u-boot-imx-4510a7b736b94e4401907ff556107a8252a84440.tar.bz2
PMC405 board update
Diffstat (limited to 'board/esd/pmc405/pmc405.c')
-rw-r--r--board/esd/pmc405/pmc405.c65
1 files changed, 65 insertions, 0 deletions
diff --git a/board/esd/pmc405/pmc405.c b/board/esd/pmc405/pmc405.c
index 6d2432c..a72547d 100644
--- a/board/esd/pmc405/pmc405.c
+++ b/board/esd/pmc405/pmc405.c
@@ -27,6 +27,9 @@
#include <malloc.h>
+extern void lxt971_no_sleep(void);
+
+
/* fpga configuration data - not compressed, generated by bin2c */
const unsigned char fpgadata[] =
{
@@ -62,6 +65,18 @@ int board_early_init_f (void)
*/
mtebc (epcr, 0xa8400000);
+ /*
+ * Setup GPIO pins (CS6+CS7 as GPIO)
+ */
+ mtdcr(cntrl0, mfdcr(cntrl0) | 0x00300000);
+
+ /*
+ * Configure GPIO pins
+ */
+ out32(GPIO0_ODR, 0x00000000); /* no open drain pins */
+ out32(GPIO0_TCR, CFG_FPGA_PRG | CFG_FPGA_CLK | CFG_FPGA_DATA); /* setup for output */
+ out32(GPIO0_OR, 0); /* outputs -> low */
+
return 0;
}
@@ -76,6 +91,12 @@ int misc_init_f (void)
int misc_init_r (void)
{
+ DECLARE_GLOBAL_DATA_PTR;
+
+ /* adjust flash start and offset */
+ gd->bd->bi_flashstart = 0 - gd->bd->bi_flashsize;
+ gd->bd->bi_flashoffset = 0;
+
return (0);
}
@@ -99,6 +120,11 @@ int checkboard (void)
putc ('\n');
+ /*
+ * Disable sleep mode in LXT971
+ */
+ lxt971_no_sleep();
+
return 0;
}
@@ -130,3 +156,42 @@ int testdram (void)
}
/* ------------------------------------------------------------------------- */
+
+int do_cantest(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+{
+ ulong addr;
+ volatile uchar *ptr;
+ volatile uchar val;
+ int i;
+
+ addr = simple_strtol (argv[1], NULL, 16) + 0x16;
+
+ i = 0;
+ for (;;) {
+ ptr = (uchar *)addr;
+ for (i=0; i<8; i++) {
+ *ptr = i;
+ val = *ptr;
+
+ if (val != i) {
+ printf("ERROR: addr=%p write=0x%02X, read=0x%02X\n", ptr, i, val);
+ return 0;
+ }
+
+ /* Abort if ctrl-c was pressed */
+ if (ctrlc()) {
+ puts("\nAbort\n");
+ return 0;
+ }
+
+ ptr++;
+ }
+ }
+
+ return 0;
+}
+U_BOOT_CMD(
+ cantest, 3, 1, do_cantest,
+ "cantest - Test CAN controller",
+ NULL
+ );