From 41c497025f40615373817498606fabd0fcd41dd6 Mon Sep 17 00:00:00 2001 From: Dominik Wenger Date: Mon, 19 Oct 2009 18:14:27 +0000 Subject: Initial mini2440 port. Flyspray: FS#10627 Author: Bob Cousins git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23265 a1c6a512-1295-4272-9138-f99709370657 --- bootloader/SOURCES | 3 ++ bootloader/mini2440.c | 145 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 148 insertions(+) create mode 100644 bootloader/mini2440.c (limited to 'bootloader') diff --git a/bootloader/SOURCES b/bootloader/SOURCES index a512064ffd..de902e2a4b 100644 --- a/bootloader/SOURCES +++ b/bootloader/SOURCES @@ -57,4 +57,7 @@ show_logo.c #elif defined(LYRE_PROTO1) lyre_proto1.c show_logo.c +#elif defined(MINI2440) +mini2440.c +show_logo.c #endif diff --git a/bootloader/mini2440.c b/bootloader/mini2440.c new file mode 100644 index 0000000000..c17f386b5b --- /dev/null +++ b/bootloader/mini2440.c @@ -0,0 +1,145 @@ +/*************************************************************************** + * __________ __ ___. + * Open \______ \ ____ ____ | | _\_ |__ _______ ___ + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ + * \/ \/ \/ \/ \/ + * + * + * Copyright (C) 2009 by Bob Cousins, Lyre Project + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY + * KIND, either express or implied. + * + ****************************************************************************/ + +/* Include Standard files */ +#include +#include +#include "inttypes.h" +#include "string.h" +#include "cpu.h" +#include "system.h" +#include "lcd.h" +#include "kernel.h" +#include "thread.h" +#include "storage.h" +#include "fat.h" +#include "disk.h" +#include "font.h" +#include "backlight.h" +#include "button.h" +#include "panic.h" +#include "power.h" +#include "file.h" +#include "common.h" +#include "sd.h" +#include "backlight-target.h" +#include "lcd-target.h" +#include "debug-target.h" +#if 0 +#include "dma-target.h" +#include "uart-s3c2440.h" +#endif +#include "led-mini2440.h" + +/* Show the Rockbox logo - in show_logo.c */ +extern int show_logo(void); + + +int main(void) +{ +#if 0 + /* required later */ + unsigned char* loadbuffer; + int buffer_size; + int rc; + int(*kernel_entry)(void); +#endif + int start, elapsed; + + led_init(); + clear_leds(LED_ALL); + /* NB: something in system_init() prevents H-JTAG from downloading */ +/* system_init(); */ + kernel_init(); +/* enable_interrupt(IRQ_FIQ_STATUS); */ + backlight_init(); + lcd_init(); + lcd_setfont(FONT_SYSFIXED); + button_init(); +#if 0 + dma_init(); + uart_init_device(UART_DEBUG); +#endif +/* mini2440_test(); */ + +#if 1 + show_logo(); + /* pause here for now */ + led_flash(LED1|LED4, LED2|LED3); +#endif + + +#if 0 + /* TODO */ + + /* Show debug messages if button is pressed */ + if(button_read_device() & BUTTON_MENU) + verbose = true; + + printf("Rockbox boot loader"); + printf("Version %s", APPSVERSION); + + rc = storage_init(); + if(rc) + { + reset_screen(); + error(EATA, rc); + } + + disk_init(IF_MD(0)); + rc = disk_mount_all(); + if (rc<=0) + { + error(EDISK,rc); + } + + printf("Loading firmware"); + + /* Flush out anything pending first */ + cpucache_invalidate(); + + loadbuffer = (unsigned char*) 0x31000000; + buffer_size = (unsigned char*)0x31400000 - loadbuffer; + + rc = load_firmware(loadbuffer, BOOTFILE, buffer_size); + if(rc < 0) + error(EBOOTFILE, rc); + + printf("Loaded firmware %d\n", rc); + +/* storage_close(); */ + system_prepare_fw_start(); + + if (rc == EOK) + { + uart_printf ("entering kernel\n"); + cpucache_invalidate(); + kernel_entry = (void*) loadbuffer; + rc = kernel_entry(); + } + + uart_printf ("stopping %d\n", rc); +#endif + + /* end stop - should not get here */ + led_flash(LED_ALL, LED_NONE); + while (1); /* avoid warning */ +} -- cgit v1.2.3