summaryrefslogtreecommitdiffstats
path: root/bootloader/tpj1022.c
blob: 0088f73690ed871027e6172f79828ecf99c34fb3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
/***************************************************************************
 *             __________               __   ___.
 *   Open      \______   \ ____   ____ |  | _\_ |__   _______  ___
 *   Source     |       _//  _ \_/ ___\|  |/ /| __ \ /  _ \  \/  /
 *   Jukebox    |    |   (  <_> )  \___|    < | \_\ (  <_> > <  <
 *   Firmware   |____|_  /\____/ \___  >__|_ \|___  /\____/__/\_ \
 *                     \/            \/     \/    \/            \/
 * $Id$
 *
 * Copyright (C) 2006 by Dave Chapman
 *
 * Based on Rockbox iriver bootloader by Linus Nielsen Feltzing
 * 
 * All files in this archive are subject to the GNU General Public License.
 * See the file COPYING in the source tree root for full license agreement.
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 * KIND, either express or implied.
 *
 ****************************************************************************/
#include "config.h"

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "cpu.h"
#include "system.h"
#include "lcd.h"
#include "kernel.h"
#include "thread.h"
#include "ata.h"
#include "fat.h"
#include "disk.h"
#include "font.h"
#include "adc.h"
#include "backlight.h"
#include "panic.h"
#include "power.h"
#include "file.h"

char version[] = APPSVERSION;

int line=0;

void* main(void)
{
    int i;
    int rc;
    int fd;
    char buffer[80];
    unsigned char* framebuffer = (unsigned char*)0x11e00000;

#if 0
    lcd_init();
    font_init();

    lcd_puts(0, line++ ,"Hello World!");
    lcd_update();
#endif

    i=ata_init();

    disk_init();
    rc = disk_mount_all();

#if 0
    /* Dump the flash */
    fd=open("/flash.bin",O_CREAT|O_RDWR);
    write(fd,(char*)0,1024*1024);
    close(fd);
#endif

#if 1
    /* Dump what may be the framebuffer */
    fd=open("/framebuffer.bin",O_CREAT|O_RDWR|O_TRUNC);
    write(fd,framebuffer,220*176*4);
    close(fd);
#endif


    fd=open("/gpio.txt",O_CREAT|O_RDWR|O_TRUNC);
    unsigned int gpio_a = GPIOA_INPUT_VAL;
    unsigned int gpio_b = GPIOB_INPUT_VAL;
    unsigned int gpio_c = GPIOC_INPUT_VAL;
    unsigned int gpio_d = GPIOD_INPUT_VAL;
    unsigned int gpio_e = GPIOE_INPUT_VAL;
    unsigned int gpio_f = GPIOF_INPUT_VAL;
    unsigned int gpio_g = GPIOG_INPUT_VAL;
    unsigned int gpio_h = GPIOH_INPUT_VAL;
    unsigned int gpio_i = GPIOI_INPUT_VAL;
    unsigned int gpio_j = GPIOJ_INPUT_VAL;
    unsigned int gpio_k = GPIOK_INPUT_VAL;
    unsigned int gpio_l = GPIOL_INPUT_VAL;

    snprintf(buffer, sizeof(buffer), "%02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x\n",gpio_a,gpio_b,gpio_c,gpio_d,gpio_e,gpio_f,gpio_g,gpio_h,gpio_i,gpio_j,gpio_k,gpio_l);
    write(fd,buffer,strlen(buffer)+1);
    close(fd);

    /* Wait for FFWD button to be pressed */
    while((GPIOA_INPUT_VAL & 0x04) != 0);


    /* Now reboot */
    DEV_RS |= 0x4;

    return 0;
}

/* These functions are present in the firmware library, but we reimplement
   them here because the originals do a lot more than we want */

void reset_poweroff_timer(void)
{
}

int dbg_ports(void)
{
   return 0;
}

void mpeg_stop(void)
{
}

void usb_acknowledge(void)
{
}

void usb_wait_for_disconnect(void)
{
}

void sys_poweroff(void)
{
}