| Index: emcore/trunk/init.c | 
| — | — | @@ -54,6 +54,11 @@ | 
| 55 | 55 | #endif | 
| 56 | 56 |  | 
| 57 | 57 |  | 
|  | 58 | +#ifndef BATTERY_BOOT_LOCKOUT_THRESHOLD | 
|  | 59 | +#define BATTERY_BOOT_LOCKOUT_THRESHOLD 0 | 
|  | 60 | +#endif | 
|  | 61 | + | 
|  | 62 | + | 
| 58 | 63 | extern int _poolstart;   // Not an int at all, but gcc complains about void types being | 
| 59 | 64 | // used here, and we only need the address, so just make it happy... | 
| 60 | 65 |  | 
| — | — | @@ -119,25 +124,35 @@ | 
| 120 | 125 | void storageinitthread(void* arg0, void* arg1, void* arg2, void* arg3) | 
| 121 | 126 | { | 
| 122 | 127 | struct initbss* ib = (struct initbss*)arg0; | 
| 123 |  | -    int threshold = 0;
 | 
| 124 |  | -    DEBUGF("Battery state: %d mV, %d mAh", read_battery_voltage(0), read_battery_mwh_current(0));
 | 
| 125 |  | -    if (read_battery_mwh_current(0) <= threshold)
 | 
|  | 128 | +    DEBUGF("Battery state: %d, %d mV, %d mAh", read_battery_state(0), | 
|  | 129 | +           read_battery_voltage(0), read_battery_mwh_current(0)); | 
|  | 130 | +    switch (read_battery_state(0)) | 
| 126 | 131 | { | 
| 127 |  | -        backlight_set_brightness(50);
 | 
| 128 |  | -        cputs(CONSOLE_BOOT, "The battery is discharged.\n"
 | 
| 129 |  | -                            "Please connect to a power supply\n"
 | 
| 130 |  | -                            "and wait a few minutes.\n");
 | 
| 131 |  | -        while (read_battery_mwh_current(0) <= threshold)
 | 
|  | 132 | +    case BATTERY_STATE_NONPRESENT: | 
|  | 133 | +        cputs(CONSOLE_BOOT, "No battery connected.\n"); | 
|  | 134 | +        break; | 
|  | 135 | +    case BATTERY_STATE_IDLE: | 
|  | 136 | +    case BATTERY_STATE_CHARGING: | 
|  | 137 | +    case BATTERY_STATE_DISCHARGING: | 
|  | 138 | +        if (read_battery_mwh_current(0) <= BATTERY_BOOT_LOCKOUT_THRESHOLD) | 
| 132 | 139 | { | 
| 133 |  | -            DEBUGF("Battery state: %d mV, %d mAh", read_battery_voltage(0), read_battery_mwh_current(0));
 | 
| 134 |  | -            sleep(10000000);
 | 
| 135 |  | -            if (read_input_state(0) != INPUT_STATE_ACTIVE)
 | 
|  | 140 | +            backlight_set_brightness(50); | 
|  | 141 | +            cputs(CONSOLE_BOOT, "The battery is discharged.\n" | 
|  | 142 | +                                "Please connect to a power supply\n" | 
|  | 143 | +                                "and wait a few minutes.\n"); | 
|  | 144 | +            while (read_battery_mwh_current(0) <= BATTERY_BOOT_LOCKOUT_THRESHOLD) | 
| 136 | 145 | { | 
| 137 |  | -                shutdown(true);
 | 
| 138 |  | -                power_off();
 | 
|  | 146 | +                DEBUGF("Battery state: %d, %d mV, %d mAh", read_battery_state(0), | 
|  | 147 | +                       read_battery_voltage(0), read_battery_mwh_current(0)); | 
|  | 148 | +                sleep(10000000); | 
|  | 149 | +                if (read_battery_state(0) != BATTERY_STATE_CHARGING) | 
|  | 150 | +                { | 
|  | 151 | +                    shutdown(true); | 
|  | 152 | +                    power_off(); | 
|  | 153 | +                } | 
| 139 | 154 | } | 
|  | 155 | +            backlight_set_brightness(100); | 
| 140 | 156 | } | 
| 141 |  | -        backlight_set_brightness(100);
 | 
| 142 | 157 | } | 
| 143 | 158 | DEBUGF("Initializing storage drivers..."); | 
| 144 | 159 | int rc = storage_init(); | 
| — | — | @@ -148,10 +163,13 @@ | 
| 149 | 164 | } | 
| 150 | 165 | DEBUGF("Initializing storage subsystem..."); | 
| 151 | 166 | disk_init_subsystem(); | 
| 152 |  | -    DEBUGF("Reading partition tables...");
 | 
| 153 |  | -    disk_init();
 | 
| 154 | 167 | DEBUGF("Mounting partitions..."); | 
| 155 |  | -    disk_mount_all();
 | 
|  | 168 | +    rc = disk_mount_all(); | 
|  | 169 | +    if (IS_ERR(rc)) | 
|  | 170 | +    { | 
|  | 171 | +        DEBUGF("FS mount error: %08X\n", rc); | 
|  | 172 | +        cprintf(CONSOLE_BOOT, "FS mount error: %08X\n", rc); | 
|  | 173 | +    } | 
| 156 | 174 | DEBUGF("Storage init finished."); | 
| 157 | 175 | wakeup_signal(&(ib->storagewakeup)); | 
| 158 | 176 | } |