| 1 | #include "platform.h" |
|---|
| 2 | #include "lolevel.h" |
|---|
| 3 | |
|---|
| 4 | void vid_bitmap_refresh() |
|---|
| 5 | { |
|---|
| 6 | _ScreenLock(); |
|---|
| 7 | _RefreshPhysicalScreen(1); |
|---|
| 8 | } |
|---|
| 9 | |
|---|
| 10 | void shutdown() |
|---|
| 11 | { |
|---|
| 12 | volatile long *p = (void*)0xc0220014; // from task_by (not really complete) |
|---|
| 13 | |
|---|
| 14 | asm( |
|---|
| 15 | "MRS R1, CPSR\n" |
|---|
| 16 | "AND R0, R1, #0x80\n" |
|---|
| 17 | "ORR R1, R1, #0x80\n" |
|---|
| 18 | "MSR CPSR_cf, R1\n" |
|---|
| 19 | :::"r1","r0"); |
|---|
| 20 | |
|---|
| 21 | *p = 0x44; |
|---|
| 22 | |
|---|
| 23 | while(1); |
|---|
| 24 | } |
|---|
| 25 | |
|---|
| 26 | |
|---|
| 27 | #define LED_PR 0xc0220134 // red LED, no DP |
|---|
| 28 | |
|---|
| 29 | void debug_led(int state) |
|---|
| 30 | { |
|---|
| 31 | volatile long *p=(void*)LED_PR; |
|---|
| 32 | if (state) |
|---|
| 33 | p[0]=0x46; |
|---|
| 34 | else |
|---|
| 35 | p[0]=0x44; |
|---|
| 36 | } |
|---|
| 37 | |
|---|
| 38 | int get_flash_params_count(void){ |
|---|
| 39 | return 122; // sub_FF95A4BC, similar to SD990 |
|---|
| 40 | } |
|---|
| 41 | |
|---|
| 42 | /* |
|---|
| 43 | D10 has 3 led values |
|---|
| 44 | 0/0 - Upper indicator Green |
|---|
| 45 | 1/1 - Upper indicator Orange |
|---|
| 46 | 2/9 - AF |
|---|
| 47 | 10-11 appears to also drive AF, but using the same codepath as non AF leds (no assert on invalid) |
|---|
| 48 | note, LEDDrive returns 3 on invalid params otherwise 0 |
|---|
| 49 | second param 0 = solid on, 1 = off, 2-7 blink patterns |
|---|
| 50 | 2: continuous ~1 blink/sec |
|---|
| 51 | 3: continuous fast blink |
|---|
| 52 | 4: continuous medium blink (2/sec ?) |
|---|
| 53 | 5: burst of 3? fast blinks |
|---|
| 54 | 6: continuous slow blinks |
|---|
| 55 | 7: if led was off 1 very fast blink. depends on previous state |
|---|
| 56 | 8: no obvious effect, but returns 0 for AF |
|---|
| 57 | >8: If used with AF ASSERT!! LEDDrv.c Line 215, otherwise returns 3 |
|---|
| 58 | */ |
|---|
| 59 | void camera_set_led(int led, int state, int bright) { |
|---|
| 60 | static char led_table[]={0,1,9}; |
|---|
| 61 | _LEDDrive(led_table[led%sizeof(led_table)], state<=1 ? !state : state); |
|---|
| 62 | } |
|---|