cleanup..
[rpi-open-firmware.git] / romstage.c
index 310b5c1..2fb84d0 100644 (file)
@@ -22,24 +22,11 @@ VideoCoreIV first stage bootloader.
 \r
 uint32_t g_CPUID;\r
 \r
-#define UART_DR     (UART_BASE+0x00)\r
-#define UART_RSRECR (UART_BASE+0x04)\r
-#define UART_FR     (UART_BASE+0x18)\r
-#define UART_ILPR   (UART_BASE+0x20)\r
 #define UART_IBRD   (UART_BASE+0x24)\r
 #define UART_FBRD   (UART_BASE+0x28)\r
 #define UART_LCRH   (UART_BASE+0x2C)\r
 #define UART_CR     (UART_BASE+0x30)\r
-#define UART_IFLS   (UART_BASE+0x34)\r
-#define UART_IMSC   (UART_BASE+0x38)\r
-#define UART_RIS    (UART_BASE+0x3C)\r
-#define UART_MIS    (UART_BASE+0x40)\r
 #define UART_ICR    (UART_BASE+0x44)\r
-#define UART_DMACR  (UART_BASE+0x48)\r
-#define UART_ITCR   (UART_BASE+0x80)\r
-#define UART_ITIP   (UART_BASE+0x84)\r
-#define UART_ITOP   (UART_BASE+0x88)\r
-#define UART_TDR    (UART_BASE+0x8C)\r
 \r
 void uart_putc(unsigned int ch) {\r
        while(UART_MSR & 0x20);\r
@@ -72,39 +59,6 @@ void uart_init(void) {
        mmio_write32(UART_CR, 0x301);\r
 }\r
 \r
-void led_init(void) {\r
-       unsigned int ra;\r
-\r
-       ra = GP_FSEL1;\r
-       ra &= ~(7 << 18);\r
-       ra |= 1 << 18;\r
-\r
-       GP_FSEL1 = ra;\r
-}\r
-\r
-/*\r
-  #define CM_PLLC_DIGRST_BITS                                9:9\r
-  #define CM_PLLC_DIGRST_SET                                 0x00000200\r
-  #define CM_PLLC_ANARST_BITS                                8:8\r
-  #define CM_PLLC_ANARST_SET                                 0x00000100\r
-  #define CM_PLLC_HOLDPER_BITS                               7:7\r
-  #define CM_PLLC_HOLDPER_SET                                0x00000080\r
-  #define CM_PLLC_LOADPER_BITS                               6:6\r
-  #define CM_PLLC_LOADPER_SET                                0x00000040\r
-  #define CM_PLLC_HOLDCORE2_BITS                             5:5\r
-  #define CM_PLLC_HOLDCORE2_SET                              0x00000020\r
-  #define CM_PLLC_LOADCORE2_BITS                             4:4\r
-  #define CM_PLLC_LOADCORE2_SET                              0x00000010\r
-  #define CM_PLLC_HOLDCORE1_BITS                             3:3\r
-  #define CM_PLLC_HOLDCORE1_SET                              0x00000008\r
-  #define CM_PLLC_LOADCORE1_BITS                             2:2\r
-  #define CM_PLLC_LOADCORE1_SET                              0x00000004\r
-  #define CM_PLLC_HOLDCORE0_BITS                             1:1\r
-  #define CM_PLLC_HOLDCORE0_SET                              0x00000002\r
-  #define CM_PLLC_LOADCORE0_BITS                             0:0\r
-  #define CM_PLLC_LOADCORE0_SET                              0x00000001\r
-*/\r
-\r
 void switch_vpu_to_pllc() {\r
        A2W_XOSC_CTRL |= A2W_PASSWORD | A2W_XOSC_CTRL_PLLCEN_SET;\r
 \r
@@ -158,39 +112,43 @@ void switch_vpu_to_pllc() {
        CM_TIMERCTL = CM_PASSWORD | CM_SRC_OSC | 0x10;\r
 }\r
 \r
+void set_interrupt(int intno, bool enable, int core) {\r
+    int base = (core == 0) ? IC0_BASE : IC1_BASE;\r
+\r
+    int offset = 0x10 + ((intno >> 3) << 2);\r
+    uint32_t slot = 0xF << ((intno & 7) << 2);\r
+\r
+    uint32_t v = mmio_read32(base + offset) & ~slot;\r
+    mmio_write32(base + offset, enable ? v | slot : v);\r
+}\r
+\r
 extern void sdram_init();\r
 extern void arm_init();\r
 extern void monitor_start();\r
 extern void PEStartPlatform();\r
 \r
-void print_crap() {\r
-       printf("TB_BOOT_OPT = 0x%X\n", TB_BOOT_OPT);\r
-}\r
-\r
 int _main(unsigned int cpuid, unsigned int load_address) {\r
        switch_vpu_to_pllc();\r
 \r
-       led_init();\r
        uart_init();\r
 \r
+       for(int i = 0; i < 64; ++i) {\r
+           set_interrupt(i, (i != (125 - 64)) && (i != (121 - 64)) && (i != (120 - 64)) && (i != (73 - 64)) && (i != (96 - 64)), 0);\r
+           set_interrupt(i, 0, 1);\r
+       }\r
+\r
+       IC0_VADDR = 0x1B000;\r
+       IC1_VADDR = 0x1B000;\r
+\r
+       __asm__ volatile("ei");\r
+\r
        printf(\r
-           "==================================================================\n"\r
-           "::\n"\r
-           ":: kFW for bcm270x, Copyright 2016-2017 rpi-open-firmware authors \n"\r
-           "::\n"\r
-           ":: BUILDATE  : %s %s \n"\r
-           ":: BUILDSTYLE: %s \n"\r
-           "::\n"\r
-           "==================================================================\n",\r
+           "Booting Raspberry Pi....\n"\r
+           "Copyright 2016-2017 rpi-open-firmware authors \n"\r
+           "BUILDATE  : %s %s \n",\r
            __DATE__, __TIME__,\r
-           "OPENSOURCE"\r
        );\r
 \r
-       printf("CPUID    = 0x%X\n", cpuid);\r
-       printf("LoadAddr = 0x%X\n", load_address);\r
-\r
-       print_crap();\r
-\r
        g_CPUID = cpuid;\r
 \r
        __cxx_init();\r
@@ -201,12 +159,8 @@ int _main(unsigned int cpuid, unsigned int load_address) {
 \r
        PEStartPlatform();\r
 \r
-       /* bring up ARM */\r
-       arm_init();\r
-\r
        /* start vpu monitor */\r
        monitor_start();\r
 \r
        panic("main exiting!");\r
 }\r
-\r
This page took 0.030396 seconds and 4 git commands to generate.