e8257c627ce82eaa4327c0f9f78ab289d5066395
[mw/milkymist.git] / software / demo / main.c
1 /*
2  * Milkymist VJ SoC (Software)
3  * Copyright (C) 2007, 2008, 2009, 2010 Sebastien Bourdeauducq
4  *
5  * This program is free software: you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation, version 3 of the License.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
16  */
17
18 #include <stdio.h>
19 #include <console.h>
20 #include <uart.h>
21 #include <system.h>
22 #include <irq.h>
23 #include <board.h>
24 #include <version.h>
25
26 #include <hal/brd.h>
27 #include <hal/mem.h>
28 #include <hal/time.h>
29 #include <hal/vga.h>
30 #include <hal/snd.h>
31 #include <hal/pfpu.h>
32 #include <hal/tmu.h>
33
34 #include "apipe.h"
35 #include "rpipe.h"
36 #include "renderer.h"
37 #include "cpustats.h"
38 #include "memstats.h"
39 #include "osd.h"
40 #include "shell.h"
41
42 static void banner()
43 {
44         putsnonl("\n\n\e[1m     |\\  /|'||      |\\  /|'   |\n"
45                           "     | \\/ ||||_/\\  /| \\/ ||(~~|~\n"
46                           "     |    |||| \\ \\/ |    ||_) |\n"
47                           "                _/          v"VERSION"\n"
48                           "\e[0m           SoC demo program\n\n\n");
49 }
50
51 int main()
52 {
53         irq_setmask(0);
54         irq_enable(1);
55         uart_async_init();
56         banner();
57         brd_init();
58         cpustats_init();
59         memstats_init();
60         time_init();
61         mem_init();
62         vga_init();
63         //snd_init();
64         pfpu_init();
65         tmu_init();
66         renderer_init();
67         apipe_init();
68         rpipe_init();
69         //osd_init();
70         shell_init();
71
72         while(1) {
73                 if(readchar_nonblock())
74                         shell_input(readchar());
75                 apipe_service();
76                 rpipe_service();
77                 osd_service();
78         }
79         
80         return 0;
81 }