Changeset 1290


Ignore:
Timestamp:
08/12/11 13:10:10 (3 years ago)
Author:
philmoz
Message:

SX220 patch from funnel: http://chdk.setepontos.com/index.php?topic=650.msg71630#msg71630
-fix for save raw file counter not being updated correctly
-fix for ISO overrides in capt_seq.c and shooting.c
-fix for jogdial task in boot.c and kbd.c

Location:
trunk/platform/sx220hs
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/platform/sx220hs/kbd.c

    r1285 r1290  
    109109} 
    110110 
    111  
     111// Set to 1 to disable jogdial events from being processed in firmware 
    112112volatile int jogdial_stopped=0; 
    113113 
     
    147147} 
    148148 
     149// copied from g12 and sx30, thx to philmoz 
     150// Pointer to stack location where jogdial task records previous and current 
     151// jogdial positions 
     152extern short* jog_position; 
     153 
     154void jogdial_control(int n) 
     155{ 
     156    if (jogdial_stopped && !n) 
     157    { 
     158        // If re-enabling jogdial set the task code current & previous positions to the actual 
     159        // dial positions so that the change won't get processed by the firmware 
     160        jog_position[0] = jog_position[2] = (*(short*)0xC0240106);  // Rear dial 
     161    } 
     162    jogdial_stopped = n; 
     163} 
     164 
    149165// like SX30 and g12 
    150166void my_kbd_read_keys() { 
     
    163179                  physw_status[1] = kbd_new_state[1]; 
    164180          physw_status[2] = kbd_new_state[2]; 
    165                 jogdial_stopped=0; 
     181                 jogdial_control(0); 
    166182    } else { 
    167183        // override keys 
     
    171187         
    172188                if ((jogdial_stopped==0) && !state_kbd_script_run) { 
    173             jogdial_stopped=1; 
     189            jogdial_control(1); 
    174190            get_jogdial_direction(); 
    175191        } 
    176192        else if (jogdial_stopped && state_kbd_script_run) 
    177             jogdial_stopped=0; 
     193            jogdial_control(0); 
    178194    } 
    179195 
  • trunk/platform/sx220hs/shooting.c

    r1251 r1290  
    126126#include "../generic/shooting.c" 
    127127 
     128// Override ISO settings (need to do this before exposure calc for ISO as well as after) 
     129void __attribute__((naked,noinline)) shooting_expo_iso_override(void){ 
     130 asm volatile("STMFD   SP!, {R0-R12,LR}\n"); 
     131 
     132    if ((state_kbd_script_run) && (photo_param_put_off.sv96)) 
     133    { 
     134        shooting_set_sv96(photo_param_put_off.sv96, SET_NOW); 
     135        // photo_param_put_off.sv96 is not reset here, it will be reset in next call to shooting_expo_param_override 
     136    } 
     137    else if ((conf.iso_override_value) && (conf.iso_override_koef) && !(conf.override_disable==1)) 
     138        shooting_set_iso_real(shooting_get_iso_override_value(), SET_NOW); 
     139    else if (conf.autoiso_enable && shooting_get_flash_mode()/*NOT FOR FLASH AUTO MODE*/ && !(conf.override_disable==1 && conf.override_disable_all)) 
     140        shooting_set_autoiso(shooting_get_iso_mode()); 
     141 
     142 asm volatile("LDMFD   SP!, {R0-R12,PC}\n"); 
     143} 
     144 
    128145long get_file_next_counter() { 
    129146        return get_file_counter(); 
  • trunk/platform/sx220hs/sub/100a/boot.c

    r1251 r1290  
    448448}                         
    449449 
     450// copied like in g12 and sx30, thx to philmoz 
     451// Pointer to stack location where jogdial task records previous and current 
     452// jogdial positions 
     453short *jog_position; 
     454 
    450455// In SX220 called RotaryEncoder FF05671C 
    451456void __attribute__((naked,noinline)) JogDial_task_my() { 
     
    458463                 "MOV     R0, #0\n" 
    459464                 "ADD     R10, SP, #8\n" 
    460                  "ADD     R9, SP, #0xC\n" 
    461  
     465                 "ADD     R9, SP, #0xC\n"                                 
     466                                  
     467                                 // Save pointer for kbd.c routine 
     468                                 "LDR R2, =jog_position \n" 
     469                                 "STR R9, [R2] \n"             
     470                                  
    462471 "loc_FF05673C:\n" 
    463472                 "ADD     R2, SP, #0x14\n" 
    464473                 "MOV     R1, #0\n" 
    465474                 "ADD     R4, R2, R0,LSL#1\n" 
    466                  "ADD     R3, SP, #0x10\n" 
     475                                 "ADD     R3, SP, #0x10\n" 
    467476                 "STRH    R1, [R4]\n" 
    468477                 "ADD     R4, R3, R0,LSL#1\n" 
  • trunk/platform/sx220hs/sub/100a/capt_seq.c

    r1251 r1290  
    77static long *nrflag = (long*)(0x89D4+0x8);  // sx220 FF190524 + 8  
    88#define NR_AUTO (0)                                                     // have to explictly reset value back to 0 to enable auto 
    9  
     9#define PAUSE_FOR_FILE_COUNTER 100          // Enable delay in capt_seq_hook_raw_here to ensure file counter is updated 
    1010 
    1111#include "../../../generic/capt_seq.c" 
     
    159159 
    160160 "loc_FF077714:\n" 
    161                                          
     161                   
     162                                 "BL      shooting_expo_iso_override\n"    // added 
    162163                 "BL      sub_FF077F04\n" 
    163                                  "BL      shooting_expo_param_override\n"  // + patched                  
     164                                 "BL      shooting_expo_param_override\n"  // added                  
    164165                                 "BL      sub_FF074BC4\n" 
    165166                                  
     
    178179                                 // "BL      sub_FF18D790\n"    // SX220 
    179180                                 "BL      sub_FF18D790_my\n"   // + patched 
     181                                 "BL      capt_seq_hook_raw_here\n"     //added 
    180182                                 "MOV     R4, R0\n" 
    181183                 "MOV     R2, R8\n" 
     
    568570 "loc_FF18D98C:\n"                            
    569571                 "MOV     R0, R4\n" 
    570                  "BL      sub_FF3058A0_my\n"            //patched 
    571                                   
     572                 "BL      sub_FF3058A0\n" 
     573 
    572574 "loc_FF18D994:\n"                           
    573575  
     
    586588                        ); 
    587589}  
    588  
    589 void __attribute__((naked,noinline)) sub_FF3058A0_my(  ) { 
    590 asm volatile ( 
    591 "       STMFD   SP!, {R3-R7,LR} \n"                 
    592 "       MOV     R4, R0 \n"                            
    593 "       BL      sub_FF18E4F0 \n"                       
    594 "       MVN     R1, #0 \n"                            
    595 "       BL      sub_FF0826F8 \n"                       
    596 "       LDR     R0, =0xFF18D1CC \n"                   
    597 "       MOV     R1, R4 \n"                            
    598 "       BL      sub_FF0B8C48 \n"                       
    599 "       MOV     R0, R4 \n"                            
    600 "       BL      sub_FF18D0C8 \n"                       
    601 "       MOV     R0, R4 \n"                            
    602 "       BL      sub_FF18D53C \n"                       
    603 "       MOV     R6, R0 \n"                            
    604 "       LDR     R1, =0xEF48 \n"                       
    605 "       MOV     R2, #4 \n"                            
    606 "       MOV     R0, #0x8A \n"                         
    607 "       BL      sub_FF08A944 \n"                       
    608 "       TST     R0, #1 \n"                            
    609 "       LDRNE   R1, =0x21E \n"                      
    610 "       LDRNE   R0, =0xFF305AB0 \n"                 
    611 "       BLNE    sub_FF00EC88 \n"                     
    612 "       BL      sub_FF07AF50 \n"                       
    613 "       CMP     R6, #0xA \n"                          
    614 "       MOV     R5, #1 \n"                            
    615 "       MOV     R7, #0 \n"                            
    616 "       ADDCC   PC, PC, R6, LSL #2 \n"              
    617 "       B       loc_FF3059D0 \n"                        
    618 "       B       loc_FF3059D0 \n"                        
    619 "       B       loc_FF305934 \n"                        
    620 "       B       loc_FF305944 \n"                        
    621 "       B       loc_FF305960 \n"                        
    622 "       B       loc_FF305970 \n"                        
    623 "       B       loc_FF30599C \n"                        
    624 "       B       loc_FF3059D0 \n"                        
    625 "       B       loc_FF3059D0 \n"                        
    626 "       B       loc_FF3059D0 \n"                        
    627 "       B       loc_FF3059B4 \n"                        
    628 "loc_FF305934:\n" 
    629 "       MOV     R0, #1 \n"                            
    630 "       BL      sub_FF0B8C78 \n"                       
    631 "       STRH    R7, [R4, #0x10] \n"                  
    632 "       B       loc_FF3059C4 \n"                        
    633 "loc_FF305944:\n" 
    634 "       MOV     R0, #1 \n"                            
    635 "       BL      sub_FF0B8C78 \n"                       
    636 "       MOV     R0, R4 \n"                            
    637 "       STRH    R5, [R4, #0x10] \n"                  
    638 "       BL      sub_FF305688 \n"                       
    639 "loc_FF305958:\n" 
    640 "       MOV     R5, R0 \n"                            
    641 "       B       loc_FF3059E0 \n"                        
    642 "loc_FF305960:\n" 
    643 "       MOV     R0, #1 \n"                            
    644 "       BL      sub_FF0B8C78 \n"                       
    645 "       MOV     R0, #1 \n"                            
    646 "       B       loc_FF30597C \n"                        
    647 "loc_FF305970:\n" 
    648 "       MOV     R0, #1 \n"                            
    649 "       BL      sub_FF0B8C78 \n"                       
    650 "       MOV     R0, #2 \n"                            
    651 "loc_FF30597C:\n" 
    652 "       BL      sub_FF24C69C \n"                       
    653 "       MOV     R0, R4 \n"                            
    654 "       STRH    R5, [R4, #0x10] \n"                  
    655 "       BL      sub_FF305688 \n"                       
    656 "       MOV     R5, R0 \n"                            
    657 "       MOV     R0, #0 \n"                            
    658 "       BL      sub_FF24C69C \n"                       
    659 "       B       loc_FF3059E0 \n"                        
    660 "loc_FF30599C:\n" 
    661 "       MOV     R0, #1 \n"                            
    662 "       BL      sub_FF0B8C78 \n"                       
    663 "       MOV     R0, R4 \n"                            
    664 "       STRH    R7, [R4, #0x10] \n"                  
    665 "       BL      sub_FF305750 \n"                       
    666 "       B       loc_FF305958 \n"                        
    667 "loc_FF3059B4:\n" 
    668 "       MOV     R0, #0 \n"                            
    669 "       BL      sub_FF0B8C78 \n"                       
    670 "       MOV     R0, #4 \n"                            
    671 "       STRH    R0, [R4, #0x10] \n"                  
    672 "loc_FF3059C4:\n" 
    673 "       MOV     R0, R4 \n"                            
    674 "       BL      sub_FF305608 \n"                       
    675 "       B       loc_FF305958 \n"                        
    676 "loc_FF3059D0:\n" 
    677 "       MOV     R1, #0x264 \n"                        
    678 "       LDR     R0, =0xFF305AB0 \n"                   
    679 "       BL      sub_FF00EC88 \n"                       
    680 "       MOV     R5, #0x1D \n"                         
    681 "loc_FF3059E0:\n" 
    682 "       TST     R5, #1 \n"                            
    683 "       MOVNE   R0, R5 \n"                          
    684 "       BNE     loc_FF305A84 \n"                      
    685 "       LDR     R5, =0xEF44 \n"                       
    686 "       LDR     R0, [R5] \n"                          
    687 "       CMP     R0, #0 \n"                            
    688 "       BNE     loc_FF305A10 \n"                      
    689 "       LDRH    R0, [R4, #0x10] \n"                  
    690 "       CMP     R0, #1 \n"                            
    691 "       CMPNE   R0, #3 \n"                          
    692 "       CMPNE   R0, #5 \n"                          
    693 "       BEQ     loc_FF305A24 \n"                      
    694 "loc_FF305A10:\n" 
    695 "       LDR     R0, =0x3EB1C \n"                      
    696 "       LDRH    R0, [R0] \n"                         
    697 "       SUB     R1, R0, #0x4000 \n"                   
    698 "       SUBS    R1, R1, #0x20C \n"                   
    699 "       BLEQ    sub_FF0A14C8 \n"                     
    700 "loc_FF305A24:\n" 
    701 "       MOV     R0, R4 \n"                            
    702 "       BL      sub_FF18D638 \n"                       
    703 "       MOV     R0, R4 \n"                            
    704 "       BL      sub_FF18D5D4 \n"                       
    705 "       BL      capt_seq_hook_raw_here\n"     //added 
    706 "       LDR     R0, [R5] \n"                          
    707 "       CMP     R0, #0 \n"                            
    708 "       BNE     loc_FF305A54 \n"                      
    709 "       LDRH    R0, [R4, #0x10] \n"                  
    710 "       CMP     R0, #1 \n"                            
    711 "       CMPNE   R0, #3 \n"                          
    712 "       CMPNE   R0, #5 \n"                          
    713 "       BEQ     loc_FF305A80 \n"                      
    714 "loc_FF305A54:\n" 
    715 "       BL      sub_FF18E4F0 \n"                       
    716 "       LDR     R4, =0x27E \n"                        
    717 "       LDR     R2, =0x3A98 \n"                       
    718 "       LDR     R3, =0xFF305AB0 \n"                   
    719 "       MOV     R1, #4 \n"                            
    720 "       STR     R4, [SP] \n"                          
    721 "       BL      sub_FF07DB68 \n"                       
    722 "       CMP     R0, #0 \n"                            
    723 "       MOVNE   R1, R4 \n"                          
    724 "       LDRNE   R0, =0xFF305AB0 \n"                 
    725 "       BLNE    sub_FF00EC88 \n"                     
    726 "loc_FF305A80:\n" 
    727 "       MOV     R0, #0 \n"                            
    728 "loc_FF305A84:\n" 
    729 "       LDMFD   SP!, {R3-R7,PC} \n"                 
    730         ); 
    731 } 
    732590 
    733591///////sx220 sub_FF0C3E54 
  • trunk/platform/sx220hs/sub/101a/boot.c

    r1251 r1290  
    460460} 
    461461 
     462// copied like in g12 and sx30, thx to philmoz 
     463// Pointer to stack location where jogdial task records previous and current 
     464// jogdial positions 
     465short *jog_position; 
     466 
    462467// In SX220 called RotaryEncoder FF05671C 
    463468void __attribute__((naked,noinline)) JogDial_task_my() { 
     
    471476                 "ADD     R10, SP, #8\n" 
    472477                 "ADD     R9, SP, #0xC\n" 
    473  
     478                                  
     479                                 // Save pointer for kbd.c routine 
     480                                 "LDR R2, =jog_position \n" 
     481                                 "STR R9, [R2] \n"             
     482                                  
    474483 "loc_FF05673C:\n" 
    475484                 "ADD     R2, SP, #0x14\n" 
  • trunk/platform/sx220hs/sub/101a/capt_seq.c

    r1251 r1290  
    77static long *nrflag = (long*)(0x89D4+0x8);  // sx220 FF190524 + 8  
    88#define NR_AUTO (0)                                                     // have to explictly reset value back to 0 to enable auto 
     9#define PAUSE_FOR_FILE_COUNTER 100          // Enable delay in capt_seq_hook_raw_here to ensure file counter is updated 
    910 
    1011#include "../../../generic/capt_seq.c" 
     
    159160 "loc_FF077714:\n"                            // 
    160161                                         
    161                  "BL      sub_FF077F04\n" 
    162                                  "BL      shooting_expo_param_override\n"  // + patched                  
     162                                 "BL      shooting_expo_iso_override\n"    // added 
     163                                 "BL      sub_FF077F04\n" 
     164                                 "BL      shooting_expo_param_override\n"  // added                  
    163165                                 "BL      sub_FF074BC4\n" 
    164166  
     
    176178                // "BL      sub_FF18D790\n"    // SX220 
    177179                                 "BL      sub_FF18D790_my\n"   // + patched 
     180                                 "BL      capt_seq_hook_raw_here\n"     //added 
    178181                                 "MOV     R4, R0\n" 
    179182                 "MOV     R2, R8\n" 
     
    565568 "loc_FF18D98C:\n"                            
    566569                 "MOV     R0, R4\n" 
    567                  "BL      sub_FF3058B8_my\n"            //patched 
     570                 "BL      sub_FF3058B8\n" 
    568571                         
    569572 "loc_FF18D994:\n"                           
     
    583586                        ); 
    584587}  
    585  
    586 void __attribute__((naked,noinline)) sub_FF3058B8_my(  ) { 
    587 asm volatile ( 
    588 "       STMFD   SP!, {R3-R7,LR} \n"                 
    589 "       MOV     R4, R0 \n"                            
    590 "       BL      sub_FF18E4F0 \n"                       
    591 "       MVN     R1, #0 \n"                            
    592 "       BL      sub_FF0826F8 \n"                       
    593 "       LDR     R0, =0xFF18D1CC \n"                   
    594 "       MOV     R1, R4 \n"                            
    595 "       BL      sub_FF0B8C48 \n"                       
    596 "       MOV     R0, R4 \n"                            
    597 "       BL      sub_FF18D0C8 \n"                       
    598 "       MOV     R0, R4 \n"                            
    599 "       BL      sub_FF18D53C \n"                       
    600 "       MOV     R6, R0 \n"                            
    601 "       LDR     R1, =0xEF48 \n"                       
    602 "       MOV     R2, #4 \n"                            
    603 "       MOV     R0, #0x8A \n"                         
    604 "       BL      sub_FF08A944 \n"                       
    605 "       TST     R0, #1 \n"                            
    606 "       LDRNE   R1, =0x21E \n"                      
    607 "       LDRNE   R0, =0xFF305AC8 \n"                 
    608 "       BLNE    sub_FF00EC88 \n"                     
    609 "       BL      sub_FF07AF50 \n"                       
    610 "       CMP     R6, #0xA \n"                          
    611 "       MOV     R5, #1 \n"                            
    612 "       MOV     R7, #0 \n"                            
    613 "       ADDCC   PC, PC, R6, LSL #2 \n"              
    614 "       B       loc_FF3059E8 \n"                        
    615 "       B       loc_FF3059E8 \n"                        
    616 "       B       loc_FF30594C \n"                        
    617 "       B       loc_FF30595C \n"                        
    618 "       B       loc_FF305978 \n"                        
    619 "       B       loc_FF305988 \n"                        
    620 "       B       loc_FF3059B4 \n"                        
    621 "       B       loc_FF3059E8 \n"                        
    622 "       B       loc_FF3059E8 \n"                        
    623 "       B       loc_FF3059E8 \n"                        
    624 "       B       loc_FF3059CC \n"                        
    625 "loc_FF30594C:\n" 
    626 "       MOV     R0, #1 \n"                            
    627 "       BL      sub_FF0B8C78 \n"                       
    628 "       STRH    R7, [R4, #0x10] \n"                  
    629 "       B       loc_FF3059DC \n"                        
    630 "loc_FF30595C:\n" 
    631 "       MOV     R0, #1 \n"                            
    632 "       BL      sub_FF0B8C78 \n"                       
    633 "       MOV     R0, R4 \n"                            
    634 "       STRH    R5, [R4, #0x10] \n"                  
    635 "       BL      sub_FF3056A0 \n"                       
    636 "loc_FF305970:\n" 
    637 "       MOV     R5, R0 \n"                            
    638 "       B       loc_FF3059F8 \n"                        
    639 "loc_FF305978:\n" 
    640 "       MOV     R0, #1 \n"                            
    641 "       BL      sub_FF0B8C78 \n"                       
    642 "       MOV     R0, #1 \n"                            
    643 "       B       loc_FF305994 \n"                        
    644 "loc_FF305988:\n" 
    645 "       MOV     R0, #1 \n"                            
    646 "       BL      sub_FF0B8C78 \n"                       
    647 "       MOV     R0, #2 \n"                            
    648 "loc_FF305994:\n" 
    649 "       BL      sub_FF24C69C \n"                       
    650 "       MOV     R0, R4 \n"                            
    651 "       STRH    R5, [R4, #0x10] \n"                  
    652 "       BL      sub_FF3056A0 \n"                       
    653 "       MOV     R5, R0 \n"                            
    654 "       MOV     R0, #0 \n"                            
    655 "       BL      sub_FF24C69C \n"                       
    656 "       B       loc_FF3059F8 \n"                        
    657 "loc_FF3059B4:\n" 
    658 "       MOV     R0, #1 \n"                            
    659 "       BL      sub_FF0B8C78 \n"                       
    660 "       MOV     R0, R4 \n"                            
    661 "       STRH    R7, [R4, #0x10] \n"                  
    662 "       BL      sub_FF305768 \n"                       
    663 "       B       loc_FF305970 \n"                        
    664 "loc_FF3059CC:\n" 
    665 "       MOV     R0, #0 \n"                            
    666 "       BL      sub_FF0B8C78 \n"                       
    667 "       MOV     R0, #4 \n"                            
    668 "       STRH    R0, [R4, #0x10] \n"                  
    669 "loc_FF3059DC:\n" 
    670 "       MOV     R0, R4 \n"                            
    671 "       BL      sub_FF305620 \n"                       
    672 "       B       loc_FF305970 \n"                        
    673 "loc_FF3059E8:\n" 
    674 "       MOV     R1, #0x264 \n"                        
    675 "       LDR     R0, =0xFF305AC8 \n"                   
    676 "       BL      sub_FF00EC88 \n"                       
    677 "       MOV     R5, #0x1D \n"                         
    678 "loc_FF3059F8:\n" 
    679 "       TST     R5, #1 \n"                            
    680 "       MOVNE   R0, R5 \n"                          
    681 "       BNE     loc_FF305A9C \n"                      
    682 "       LDR     R5, =0xEF44 \n"                       
    683 "       LDR     R0, [R5] \n"                          
    684 "       CMP     R0, #0 \n"                            
    685 "       BNE     loc_FF305A28 \n"                      
    686 "       LDRH    R0, [R4, #0x10] \n"                  
    687 "       CMP     R0, #1 \n"                            
    688 "       CMPNE   R0, #3 \n"                          
    689 "       CMPNE   R0, #5 \n"                          
    690 "       BEQ     loc_FF305A3C \n"                      
    691 "loc_FF305A28:\n" 
    692 "       LDR     R0, =0x3EB1C \n"                      
    693 "       LDRH    R0, [R0] \n"                         
    694 "       SUB     R1, R0, #0x4000 \n"                   
    695 "       SUBS    R1, R1, #0x20C \n"                   
    696 "       BLEQ    sub_FF0A14C8 \n"                     
    697 "loc_FF305A3C:\n" 
    698 "       MOV     R0, R4 \n"                            
    699 "       BL      sub_FF18D638 \n"                       
    700 "       MOV     R0, R4 \n"                            
    701 "       BL      sub_FF18D5D4 \n"                       
    702 "       BL      capt_seq_hook_raw_here\n"    //added                              
    703 "       LDR     R0, [R5] \n"                          
    704 "       CMP     R0, #0 \n"                            
    705 "       BNE     loc_FF305A6C \n"                      
    706 "       LDRH    R0, [R4, #0x10] \n"                  
    707 "       CMP     R0, #1 \n"                            
    708 "       CMPNE   R0, #3 \n"                          
    709 "       CMPNE   R0, #5 \n"                          
    710 "       BEQ     loc_FF305A98 \n"                      
    711 "loc_FF305A6C:\n" 
    712 "       BL      sub_FF18E4F0 \n"                       
    713 "       LDR     R4, =0x27E \n"                        
    714 "       LDR     R2, =0x3A98 \n"                       
    715 "       LDR     R3, =0xFF305AC8 \n"                   
    716 "       MOV     R1, #4 \n"                            
    717 "       STR     R4, [SP] \n"                          
    718 "       BL      sub_FF07DB68 \n"                       
    719 "       CMP     R0, #0 \n"                            
    720 "       MOVNE   R1, R4 \n"                          
    721 "       LDRNE   R0, =0xFF305AC8 \n"                 
    722 "       BLNE    sub_FF00EC88 \n"                     
    723 "loc_FF305A98:\n" 
    724 "       MOV     R0, #0 \n"                            
    725 "loc_FF305A9C:\n" 
    726 "       LDMFD   SP!, {R3-R7,PC} \n"                 
    727         ); 
    728 } 
    729588 
    730589///////sx220 sub_FF0C3E54 
Note: See TracChangeset for help on using the changeset viewer.