diff options
Diffstat (limited to 'apps')
-rw-r--r-- | apps/main.c | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/apps/main.c b/apps/main.c index b7e02151fb..820c9c3088 100644 --- a/apps/main.c +++ b/apps/main.c | |||
@@ -50,6 +50,7 @@ | |||
50 | #include "wps-display.h" | 50 | #include "wps-display.h" |
51 | #include "playlist.h" | 51 | #include "playlist.h" |
52 | #include "buffer.h" | 52 | #include "buffer.h" |
53 | #include "rolo.h" | ||
53 | 54 | ||
54 | char appsversion[]=APPSVERSION; | 55 | char appsversion[]=APPSVERSION; |
55 | 56 | ||
@@ -97,6 +98,7 @@ void init(void) | |||
97 | { | 98 | { |
98 | int rc, i; | 99 | int rc, i; |
99 | struct partinfo* pinfo; | 100 | struct partinfo* pinfo; |
101 | bool coldstart; /* starting from Flash */ | ||
100 | 102 | ||
101 | system_init(); | 103 | system_init(); |
102 | kernel_init(); | 104 | kernel_init(); |
@@ -131,6 +133,9 @@ void init(void) | |||
131 | 133 | ||
132 | button_init(); | 134 | button_init(); |
133 | 135 | ||
136 | /* if nobody initialized ATA before, I consider this a cold start */ | ||
137 | coldstart = (PACR2 & 0x4000) != 0; | ||
138 | |||
134 | rc = ata_init(); | 139 | rc = ata_init(); |
135 | if(rc) | 140 | if(rc) |
136 | { | 141 | { |
@@ -168,7 +173,7 @@ void init(void) | |||
168 | dbg_partitions(); | 173 | dbg_partitions(); |
169 | } | 174 | } |
170 | } | 175 | } |
171 | 176 | ||
172 | settings_load(); | 177 | settings_load(); |
173 | 178 | ||
174 | status_init(); | 179 | status_init(); |
@@ -188,6 +193,22 @@ void init(void) | |||
188 | global_settings.channel_config ); | 193 | global_settings.channel_config ); |
189 | 194 | ||
190 | power_init(); | 195 | power_init(); |
196 | |||
197 | if (coldstart && !usb_detect()) | ||
198 | { /* when starting from flash, this time _we_ have to yield */ | ||
199 | int fd; | ||
200 | #ifdef HAVE_LCD_CHARCELLS | ||
201 | static const char filename[] = "/archos.mod"; | ||
202 | #else | ||
203 | static const char filename[] = "/ajbrec.ajz"; | ||
204 | #endif | ||
205 | fd = open(filename, O_RDONLY); | ||
206 | if(fd >= 0) /* no complaint if it doesn't exit */ | ||
207 | { | ||
208 | close(fd); | ||
209 | rolo_load((char*)filename); /* start if it does */ | ||
210 | } | ||
211 | } | ||
191 | } | 212 | } |
192 | 213 | ||
193 | int main(void) | 214 | int main(void) |