]> git.sur5r.net Git - u-boot/blobdiff - cpu/pxa/cpu.c
Merge branch 'master' of rsync://rsync.denx.de/git/u-boot
[u-boot] / cpu / pxa / cpu.c
index 6a3c24dedab399adf1003688d63f777a663cb1db..0ee8180361f5f43e5fcbb066d52d6e87e211a9e1 100644 (file)
 
 #include <common.h>
 #include <command.h>
+#include <asm/arch/pxa-regs.h>
+
+#ifdef CONFIG_USE_IRQ
+DECLARE_GLOBAL_DATA_PTR;
+#endif
 
 int cpu_init (void)
 {
        /*
-        * setup up stack if necessary
+        * setup up stacks if necessary
         */
-/*
-
-  FIXME: the stack is _below_ the uboot code!!
-
 #ifdef CONFIG_USE_IRQ
-       IRQ_STACK_START = _armboot_end +
-                       CONFIG_STACKSIZE + CONFIG_STACKSIZE_IRQ - 4;
-       FIQ_STACK_START = IRQ_STACK_START + CONFIG_STACKSIZE_FIQ;
-       _armboot_real_end = FIQ_STACK_START + 4;
-#else
-       _armboot_real_end = _armboot_end + CONFIG_STACKSIZE;
+       IRQ_STACK_START = _armboot_start - CFG_MALLOC_LEN - CFG_GBL_DATA_SIZE - 4;
+       FIQ_STACK_START = IRQ_STACK_START - CONFIG_STACKSIZE_IRQ;
 #endif
-*/
-       return (0);
+       return 0;
 }
 
 int cleanup_before_linux (void)
@@ -80,9 +76,7 @@ int cleanup_before_linux (void)
 
 int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 {
-       extern void reset_cpu (ulong addr);
-
-       printf ("reseting ...\n");
+       printf ("resetting ...\n");
 
        udelay (50000);                         /* wait 50 ms */
        disable_interrupts ();
@@ -150,3 +144,23 @@ int dcache_status (void)
 {
        return 0;                                       /* always off */
 }
+
+#ifndef CONFIG_CPU_MONAHANS
+void set_GPIO_mode(int gpio_mode)
+{
+       int gpio = gpio_mode & GPIO_MD_MASK_NR;
+       int fn = (gpio_mode & GPIO_MD_MASK_FN) >> 8;
+       int gafr;
+
+       if (gpio_mode & GPIO_MD_MASK_DIR)
+       {
+               GPDR(gpio) |= GPIO_bit(gpio);
+       }
+       else
+       {
+               GPDR(gpio) &= ~GPIO_bit(gpio);
+       }
+       gafr = GAFR(gpio) & ~(0x3 << (((gpio) & 0xf)*2));
+       GAFR(gpio) = gafr |  (fn  << (((gpio) & 0xf)*2));
+}
+#endif /* CONFIG_CPU_MONAHANS */