00001
00057 #include <dma.h>
00058 #include <led.h>
00059 #include <board.h>
00060 #include <mainloop.h>
00061
00062 #include <clk/sys.h>
00063
00064 #include <gfx/gfx.h>
00065 #include <gfx/win.h>
00066 #include <gfx/sysfont.h>
00067
00068 #ifdef CONFIG_TOUCH_RESISTIVE
00069 #include <touch/touch.h>
00070 #endif
00071
00072 #include "app_desktop.h"
00073
00074 #ifdef CONFIG_FS_TSFS
00075 #include <spi.h>
00076 #include <block/device.h>
00077 #include <block/dataflash.h>
00078 #include <fs/tsfs.h>
00079
00080 DECLARE_SPI_MASTER(CONFIG_APP_DATAFLASH_SPI_ID, my_master);
00081 DECLARE_SPI_DEVICE(CONFIG_APP_DATAFLASH_SPI_ID, my_device);
00082
00083 static struct block_device *bdev;
00084 static struct workqueue_task ready_task;
00085 struct tsfs myfs;
00086 struct spi_master *master;
00087 struct spi_device *device;
00088
00089 static void tsfs_ready_callback(struct workqueue_task *task)
00090 {
00091 }
00092
00093 static void spi_ready_callback(struct workqueue_task *task)
00094 {
00095 workqueue_task_set_work_func(&ready_task, tsfs_ready_callback);
00096 tsfs_init(&myfs, bdev, &ready_task);
00097 }
00098 #endif
00099
00100 int main(void)
00101 {
00102 cpu_irq_enable();
00103 sysclk_init();
00104 dbg_init();
00105 board_init();
00106 led_activate(BOARD_LED0_ID);
00107 workqueue_init(&main_workqueue);
00108 #ifdef CONFIG_TOUCH_RESISTIVE
00109 touch_init();
00110 touch_enable();
00111 #endif
00112 gfx_init();
00113 membag_init(CPU_DMA_ALIGN);
00114 win_init();
00115
00116 #ifdef CONFIG_FS_TSFS
00117 master = spi_master_get_base(CONFIG_APP_DATAFLASH_SPI_ID, &my_master);
00118 device = spi_device_get_base(CONFIG_APP_DATAFLASH_SPI_ID, &my_device);
00119
00120 spi_enable(CONFIG_APP_DATAFLASH_SPI_ID);
00121
00122 spi_master_init(CONFIG_APP_DATAFLASH_SPI_ID, master);
00123 spi_master_setup_device(CONFIG_APP_DATAFLASH_SPI_ID, master, device,
00124 SPI_MODE_0, CONFIG_CPU_HZ, BOARD_DATAFLASH_SS);
00125
00126 workqueue_task_init(&ready_task, spi_ready_callback);
00127 bdev = dataflash_blkdev_init(CONFIG_APP_DATAFLASH_SPI_ID, master, device,
00128 &ready_task);
00129 #endif
00130
00131 app_desktop_setup();
00132
00133 mainloop_run(&main_workqueue);
00134 }