Changeset 1628
- Timestamp:
- 01/30/12 06:09:43 (16 months ago)
- Location:
- trunk
- Files:
-
- 12 edited
-
. (modified) (1 prop)
-
camera_list.csv (modified) (1 diff)
-
platform/a430/kbd.c (modified) (2 diffs)
-
platform/a430/lib.c (modified) (1 diff)
-
platform/a430/main.c (modified) (2 diffs)
-
platform/a430/notes.txt (modified) (1 diff)
-
platform/a430/platform_camera.h (modified) (3 diffs)
-
platform/a430/shooting.c (modified) (3 diffs)
-
platform/a430/sub/100b/capt_seq.c (modified) (8 diffs)
-
platform/a430/sub/100b/lib.c (modified) (2 diffs)
-
platform/a430/sub/100b/stubs_min.S (modified) (1 diff)
-
platform/generic/kbd.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk
- Property svn:mergeinfo changed
/branches/release-1_0 merged: 1627
- Property svn:mergeinfo changed
-
trunk/camera_list.csv
r1620 r1628 8 8 a3300,100d,BETA,,SKIP_AUTOBUILD 9 9 a410,100f,BETA,100e, 10 a430,100b,BETA,, SKIP_AUTOBUILD10 a430,100b,BETA,, 11 11 a450,100d,,, 12 12 a460,100d,,, -
trunk/platform/a430/kbd.c
r1568 r1628 1 #include "lolevel.h" 2 #include "platform.h" 3 #include "conf.h" 4 #include "core.h" 5 #include "keyboard.h" 1 #include "../generic/kbd.c" 6 2 7 typedef struct {8 long hackkey;9 long canonkey;10 } KeyMap;11 12 13 long kbd_new_state[3] = { 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF };14 static long kbd_prev_state[3] = { 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF };15 static long kbd_mod_state = 0xFFFFFFFF ;16 17 static KeyMap keymap[];18 static long last_kbd_key = 0;19 20 #define NEW_SS (0x2000)21 #define SD_READONLY_FLAG (0x20000)22 23 #define USB_MASK 0x4000024 #define USB_IDX 225 26 extern void usb_remote_key( int ) ;27 int get_usb_bit()28 {29 long usb_physw[3];30 usb_physw[USB_IDX] = 0;31 _kbd_read_keys_r2(usb_physw);32 return(( usb_physw[USB_IDX] & USB_MASK)==USB_MASK) ;33 }34 35 36 #ifndef MALLOCD_STACK37 static char kbd_stack[NEW_SS];38 #endif39 40 long __attribute__((naked)) wrap_kbd_p1_f() ;41 42 static void __attribute__((noinline)) mykbd_task_proceed()43 {44 while (physw_run){45 _SleepTask(10);46 47 if (wrap_kbd_p1_f() == 1){ // autorepeat ?48 _kbd_p2_f();49 }50 }51 }52 53 void __attribute__((naked,noinline)) mykbd_task()54 {55 /* WARNING56 * Stack pointer manipulation performed here!57 * This means (but not limited to):58 * function arguments destroyed;59 * function CAN NOT return properly;60 * MUST NOT call or use stack variables before stack61 * is setup properly;62 *63 */64 65 register int i;66 register long *newstack;67 68 #ifndef MALLOCD_STACK69 newstack = (void*)kbd_stack;70 #else71 newstack = malloc(NEW_SS);72 #endif73 74 for (i=0;i<NEW_SS/4;i++)75 newstack[i]=0xdededede;76 77 asm volatile (78 "MOV SP, %0"79 :: "r"(((char*)newstack)+NEW_SS)80 : "memory"81 );82 83 mykbd_task_proceed();84 85 /* function can be modified to restore SP here...86 */87 88 _ExitTask();89 }90 91 92 long __attribute__((naked,noinline)) wrap_kbd_p1_f()93 {94 95 asm volatile(96 "STMFD SP!, {R4-R7,LR}\n"97 "SUB SP, SP, #0xC\n"98 "BL my_kbd_read_keys\n"99 "B _kbd_p1_f_cont\n"100 );101 return 0; // shut up the compiler102 }103 104 105 void my_kbd_read_keys()106 {107 kbd_prev_state[0] = kbd_new_state[0];108 kbd_prev_state[1] = kbd_new_state[1];109 kbd_prev_state[2] = kbd_new_state[2];110 111 kbd_fetch_data(kbd_new_state);112 113 if (kbd_process() == 0){114 // leave it alone...115 physw_status[0] = kbd_new_state[0];116 physw_status[1] = kbd_new_state[1];117 physw_status[2] = kbd_new_state[2];118 119 } else {120 // override keys121 122 physw_status[0] = kbd_new_state[0];123 physw_status[1] = kbd_new_state[1];124 physw_status[2] = (kbd_new_state[2] & (~0x1fff)) |125 (kbd_mod_state & 0x1fff);126 127 }128 129 _kbd_read_keys_r2(physw_status);130 131 usb_remote_key(physw_status[USB_IDX]) ;132 133 if (conf.remote_enable) {134 physw_status[USB_IDX] = physw_status[USB_IDX] & ~(SD_READONLY_FLAG | USB_MASK);135 }136 else137 physw_status[USB_IDX] = physw_status[USB_IDX] & ~SD_READONLY_FLAG;138 139 }140 141 142 void kbd_key_press(long key)143 {144 int i;145 for (i=0;keymap[i].hackkey;i++){146 if (keymap[i].hackkey == key){147 kbd_mod_state &= ~keymap[i].canonkey;148 return;149 }150 }151 }152 153 void kbd_key_release(long key)154 {155 int i;156 for (i=0;keymap[i].hackkey;i++){157 if (keymap[i].hackkey == key){158 kbd_mod_state |= keymap[i].canonkey;159 return;160 }161 }162 }163 164 void kbd_key_release_all()165 {166 kbd_mod_state |= 0x1fff;167 }168 169 long kbd_is_key_pressed(long key)170 {171 int i;172 for (i=0;keymap[i].hackkey;i++){173 if (keymap[i].hackkey == key){174 return ((kbd_new_state[2] & keymap[i].canonkey) == 0) ? 1:0;175 }176 }177 return 0;178 }179 180 long kbd_is_key_clicked(long key)181 {182 int i;183 for (i=0;keymap[i].hackkey;i++){184 if (keymap[i].hackkey == key){185 return ((kbd_prev_state[2] & keymap[i].canonkey) != 0) &&186 ((kbd_new_state[2] & keymap[i].canonkey) == 0);187 }188 }189 return 0;190 }191 192 long kbd_get_pressed_key()193 {194 int i;195 for (i=0;keymap[i].hackkey;i++){196 if ((kbd_new_state[2] & keymap[i].canonkey) == 0){197 return keymap[i].hackkey;198 }199 }200 return 0;201 }202 203 long kbd_get_clicked_key()204 {205 int i;206 for (i=0;keymap[i].hackkey;i++){207 if (((kbd_prev_state[2] & keymap[i].canonkey) != 0) &&208 ((kbd_new_state[2] & keymap[i].canonkey) == 0)){209 return keymap[i].hackkey;210 }211 }212 return 0;213 }214 215 void kbd_reset_autoclicked_key() {216 last_kbd_key = 0;217 }218 219 long kbd_get_autoclicked_key() {220 static long last_kbd_time = 0, press_count = 0;221 register long key, t;222 223 key=kbd_get_clicked_key();224 if (key) {225 last_kbd_key = key;226 press_count = 0;227 last_kbd_time = get_tick_count();228 return key;229 } else {230 if (last_kbd_key && kbd_is_key_pressed(last_kbd_key)) {231 t = get_tick_count();232 if (t-last_kbd_time>((press_count)?175:500)) {233 ++press_count;234 last_kbd_time = t;235 return last_kbd_key;236 } else {237 return 0;238 }239 } else {240 last_kbd_key = 0;241 return 0;242 }243 }244 }245 246 long kbd_use_zoom_as_mf() {247 return 0;248 }249 3 static KeyMap keymap[] = { 250 4 /* tiny bug: key order matters. see kbd_get_pressed_key() … … 259 13 { KEY_SHOOT_FULL_ONLY, 0x00000020 }, 260 14 { KEY_SHOOT_HALF, 0x00000010 }, 261 // { KEY_ZOOM_IN , 0x00000001 }, // KEY_UP/KEY_ZOOM_IN262 // { KEY_ZOOM_OUT , 0x00000002 }, // KEY_DOWN/KEY_ZOOM_OUT/KEY_ERASE263 15 { KEY_MENU , 0x00000400 }, 264 16 { KEY_DISPLAY , 0x00000200 }, 265 17 { KEY_PRINT , 0x00001000 }, // KEY_DOWN/KEY_ZOOM_OUT/KEY_ERASE 266 // { KEY_ERASE , 0x00000002 },267 // { KEY_DUMMY , 0x00001000 },268 18 { 0, 0 } 269 19 }; -
trunk/platform/a430/lib.c
r1376 r1628 2 2 3 3 int get_flash_params_count(void){ 4 return 1 11;4 return 108; 5 5 } -
trunk/platform/a430/main.c
r1376 r1628 11 11 } 12 12 13 static const int fl_tbl[] = {5400, 6800, 8100, 9800, 11800, 14400, 17300 };13 static const int fl_tbl[] = {5400, 6800, 8100, 9800, 11800, 14400, 17300, 21600}; //from a460 14 14 #define NUM_FL (sizeof(fl_tbl)/sizeof(fl_tbl[0])) 15 15 #define CF_EFL 70371 … … 33 33 } 34 34 35 /* static struct {36 int hackmode;37 int canonmode;38 } modemap[] = {39 { MODE_AUTO, 32768 },40 { MODE_P, 32772 },41 // { MODE_TV, 32771 },42 // { MODE_AV, 32770 },43 // { MODE_M, 32769 },44 { MODE_PORTRAIT, 16397 },45 // { MODE_NIGHT, 32782 },46 // { MODE_LANDSCAPE, 32780 },47 { MODE_VIDEO_STD, 2597 },48 // { MODE_VIDEO_SPEED, 2597 },49 { MODE_VIDEO_COMPACT, 2599 },50 // { MODE_VIDEO_MY_COLORS, 2595 },51 // { MODE_VIDEO_COLOR_ACCENT, 2594 },52 // { MODE_STITCH, 33290 },53 // { MODE_MY_COLORS, 16922 },54 // { MODE_SCN_WATER, 16405 },55 { MODE_SCN_NIGHT, 16395 },56 { MODE_SCN_CHILD, 16400 },57 { MODE_SCN_PARTY, 16401 },58 { MODE_SCN_GRASS, 16402 },59 { MODE_SCN_SNOW, 16403 },60 { MODE_SCN_BEACH, 16404 },61 { MODE_SCN_FIREWORK, 16405 }//,62 */63 35 #define MODESCNT (sizeof(modemap)/sizeof(modemap[0])) 64 65 /* int mode_get() {66 int mode, i, t=0xFF;67 68 mode = (physw_status[2] & 0x00002000)?MODE_REC:MODE_PLAY;69 // mode |= (physw_status[2] & 0x00008000)?0:MODE_SCREEN_OPENED;70 // mode |= (physw_status[2] & 0x00004000)?0:MODE_SCREEN_ROTATED;71 72 _GetPropertyCase(PROPCASE_SHOOTING_MODE, &t, 4);73 for (i=0; i<MODESCNT; ++i) {74 if (modemap[i].canonmode == t) {75 return (mode | (modemap[i].hackmode & MODE_SHOOTING_MASK));76 }77 }78 return (mode);79 }80 81 */ -
trunk/platform/a430/notes.txt
r925 r1628 5 5 - A430 uses Propset 1 of Properties (see http://tinyurl.com/6zbv9b) 6 6 7 7 Changes: 8 2012-01-05 9 - histogram, zebra display now correct for replay mode 10 - raw numbering fixed 11 - optical data copied from A460 (same 4x zoom optics), updated 12 - modemap corrected 13 - some corrections in capt_seq.c 14 - most of kbd.c thrown out, the generic one is used 15 - usb sensing identified, working (for usb remote) -
trunk/platform/a430/platform_camera.h
r1555 r1628 37 37 #undef CAM_HAS_IS 38 38 #define CAM_CAN_MUTE_MICROPHONE 1 39 #define CAM_AF_SCAN_DURING_VIDEO_RECORD 1 39 #define CAM_AF_SCAN_DURING_VIDEO_RECORD 1 //crashes, when used in 640x480 mode 40 40 #define CAM_EV_IN_VIDEO 1 41 41 … … 49 49 -96906, 1000000, 148194, 1000000, 191583, 1000000 50 50 51 #define CAM_CONSOLE_LOG_ENABLED 152 51 #define cam_CalibrationIlluminant1 1 // Daylight 53 52 // cropping … … 60 59 // camera name 61 60 #define PARAM_CAMERA_NAME 3 // parameter number for GetParameterData 62 #define CAM_BRACKETING 1 63 // #define CAM_MULTIPART 1 64 65 #define REMOTE_SYNC_STATUS_LED 0xc0220084 // specifies an LED that turns on while camera waits for USB remote to sync 61 #define CAM_DETECT_SCREEN_ERASE 1 -
trunk/platform/a430/shooting.c
r1376 r1628 1 1 #define PARAM_FILE_COUNTER 0x34 2 #define PARAM_EXPOSURE_COUNTER 0x01 2 3 3 4 #include "platform.h" 4 5 5 6 const ApertureSize aperture_sizes_table[] = { 6 { 9, 292, "2.8" }, 7 { 10, 303, "3.2" }, 8 { 11, 320, "3.5" }, 9 { 12, 342, "3.5" }, 10 { 13, 367, "4.0" }, 11 { 14, 395, "4.5" }, 12 { 15, 427, "5.1" }, 13 { 16, 571, "8.0 ND" }, 14 { 17, 590, "9.0 ND" }, 15 { 18, 610, "10.0 ND" }, 16 { 19, 633, "10.0 ND" }, 17 { 20, 660, "11.0 ND" }, 18 { 21, 688, "13.0 ND" }, 19 { 22, 722, "16.0 ND" }, 20 }; 7 { 9, 288, "2.8" }, 8 { 10, 302, "3.2" }, 9 { 11, 318, "3.5" }, 10 { 12, 339, "3.5" }, 11 { 13, 363, "4.0" }, 12 { 14, 390, "4.5" }, 13 { 15, 420, "5.0" }, 14 { 16, 457, "5.8" }, 15 { 17, 449, "8.0 ND" }, 16 { 18, 466, "9.0 ND" }, 17 { 19, 485, "10.0 ND" }, 18 { 20, 510, "10.0 ND" }, 19 { 21, 536, "11.0 ND" }, 20 { 22, 565, "13.0 ND" }, 21 { 23, 597, "16.0 ND" }, 22 { 24, 635, "18.0 ND" }, 23 };// from a460, second column updated (propcase 68) 21 24 22 25 const ShutterSpeed shutter_speeds_table[] = { … … 71 74 const ISOTable iso_table[] = { 72 75 { 0, 0, "Auto", -1}, 73 { 1, 80, "80", -1},76 { 1, 64, "64", -1}, 74 77 { 2, 100, "100", -1}, 75 78 { 3, 200, "200", -1}, … … 79 82 /* 80 83 http://www.usa.canon.com/cusa/support/consumer/digital_cameras/powershot_a_series/powershot_a430#Specifications 81 Shooting Modes82 Auto; Creative: P, Av, Tv, M; Image: Portrait, Landscape, Night Scene,83 Special Scene84 (Foliage, Snow, Beach, Fireworks, Underwater, Indoor, Kids & Pets,85 Night Snapshot, Color Accent, Color Swap),86 My Colors, Stitch Assist, Movie87 Movie: 640 x 480 / 320 x 240 (30 fps/15 fps) available up to 1GB or 1 hour for each file size,88 320 x 240 (1 min. at 60 fps), 160 x 120 (3 min. at 15 fps)89 84 canon mode list FFD588D4 in 100b 90 85 */ 91 86 static const CapturemodeMap modemap[] = { 92 { MODE_M, 32769 },87 // { MODE_M, 32769 }, 93 88 { MODE_P, 32772 }, 94 89 { MODE_AUTO, 32768 }, 95 { MODE_PORTRAIT, 32781 }, 96 { MODE_NIGHT_SCENE, 32782 }, // "night scene" on dial, different from "night snapshot" under "scene" below 97 { MODE_STITCH, 33290 }, 98 { MODE_SCN_NIGHT_SNAPSHOT, 16395 }, // "night snapshot" 99 { MODE_SCN_KIDS_PETS, 16399 }, // "kids and pets" 100 { MODE_SCN_INDOOR, 16400 }, // "indoor" 101 { MODE_SCN_FOLIAGE, 16401 }, // "foliage" 102 { MODE_SCN_SNOW, 16402 }, // "snow" 103 { MODE_SCN_BEACH, 16403 }, // "beach" 104 { MODE_SCN_FIREWORK, 16404 }, // "fireworks" 105 { MODE_SCN_COLOR_ACCENT, 16920 }, // "color accent" 106 { MODE_SCN_COLOR_SWAP, 16921 }, // "color swap" 107 { MODE_VIDEO_STD, 2593 }, 108 { MODE_VIDEO_SPEED, 2594 }, // "fast frame rate" 90 { MODE_PORTRAIT, 16396 }, 91 // { MODE_NIGHT_SCENE, 32782 }, // "night scene" on dial, different from "night snapshot" under "scene" below 92 { MODE_STITCH, 33289 }, // 93 { MODE_SCN_NIGHT_SNAPSHOT, 16394 }, // "night snapshot" 94 { MODE_SCN_KIDS_PETS, 16398 }, // "kids and pets" 95 { MODE_SCN_INDOOR, 16399 }, // "indoor" 96 { MODE_SCN_FOLIAGE, 16400 }, // "foliage" 97 { MODE_SCN_SNOW, 16401 }, // "snow" 98 { MODE_SCN_BEACH, 16402 }, // "beach" 99 { MODE_SCN_FIREWORK, 16403 }, // "fireworks" 100 { MODE_SCN_COLOR_ACCENT, 33303 }, // "color accent" 101 { MODE_SCN_COLOR_SWAP, 33304 }, // "color swap" 102 { MODE_SUPER_MACRO, 33288 }, // 103 { MODE_VIDEO_STD, 3613 }, // 104 /* { MODE_VIDEO_SPEED, 2594 }, // "fast frame rate" 109 105 { MODE_VIDEO_COMPACT, 2595 }, // "compact" 110 106 { MODE_VIDEO_COLOR_ACCENT, 2591 }, // "color accent" 111 107 { MODE_VIDEO_COLOR_SWAP, 2592 }, // "color swap" 108 */ 112 109 }; 113 110 #include "../generic/shooting.c" 114 111 115 long get_file_next_counter() { 116 return get_file_counter();112 long get_file_next_counter() { //looks like this hack is needed for old vxworks 113 return ((get_file_counter()>>4)+1)<<4; 117 114 } 115 118 116 119 117 long get_target_file_num() { -
trunk/platform/a430/sub/100b/capt_seq.c
r1376 r1628 6 6 7 7 #include "../../../generic/capt_seq.c" 8 //please note: comments ending in question marks contain the original authors' work 9 //since most of these functions is copied from the original fw, I corrected parts of the code, 10 //where (in my opinion) it shouldn't differ from the original - srsa_4c 8 11 9 12 void __attribute__((naked,noinline)) sub_FFD2C9B8_my(long p) … … 26 29 "LDR R0, [R3]\n" 27 30 "BL sub_FFC8B090\n" 28 "BL wait_until_remote_button_is_released\n" 29 "BL capt_seq_hook_set_nr\n" 30 "B sub_FFD2C9F4\n" 31 "BL wait_until_remote_button_is_released\n" // + 32 "BL capt_seq_hook_set_nr\n" // + 33 "B sub_FFD2C9F4\n" //jump to the rest 31 34 ); 32 35 } … … 73 76 74 77 "BL sub_FFD2C9B8_my\n" 75 "BL capt_seq_hook_raw_here\n" 78 "BL capt_seq_hook_raw_here\n" // + 76 79 77 80 // "BL sub_FFD483A4\n" … … 211 214 "BEQ loc_FFD29B9C\n" 212 215 "MOV R1, #0x28C\n" 213 "LDR R0, =0xFFD295 2C\n"214 "ADD R1, R1, # 3\n"216 "LDR R0, =0xFFD29530\n" // =0xffd2952c ? 217 "ADD R1, R1, #2\n" // #3 ? 215 218 "BL sub_FFC03AEC\n" 216 "BL _ExitTask\n" 217 "BL sub_FFC11620\n" 219 "BL sub_FFC11620\n" // ExitTask 218 220 "ADD SP, SP, #4\n" 219 221 "LDMFD SP!, {R4,PC}\n" … … 312 314 " LDR R12, [SP]\n" 313 315 " MOV R0, R5\n" 314 " LDR R1, [R12,#0x 40]\n"316 " LDR R1, [R12,#0x24]\n" //0x40 ? 315 317 " MOV R2, R4\n" 316 " LDR R3, [R12,#0x 50]\n"317 " MOV LR, PC\n" 318 " LDR PC, [R12,#0x 4C]\n"318 " LDR R3, [R12,#0x34]\n" //0x50 ? 319 " MOV LR, PC\n" 320 " LDR PC, [R12,#0x30]\n" //0x4C ? 319 321 " B loc_FFCDEB88\n" 320 322 "loc_FFCDEB50:\n" … … 342 344 " MOV R2, R4\n" 343 345 " ADD R0, R12, #4\n" 344 " LDR R1, [R12,#0x 40]\n"345 " LDR R3, [R12,#0x 50]\n"346 " MOV LR, PC\n" 347 " LDR PC, [R12,#0x 4C]\n"346 " LDR R1, [R12,#0x24]\n" //0x40 ? 347 " LDR R3, [R12,#0x34]\n" //0x50 ? 348 " MOV LR, PC\n" 349 " LDR PC, [R12,#0x30]\n" //0x4c ? 348 350 " B loc_FFCDED9C\n" 349 351 "loc_FFCDEBB8:\n" 350 " SUB R3, R2, #0x17\n"351 " B HI loc_FFCDEC0C\n"352 " CMP R2, #0x17\n" //SUB R3, R2, #0x17 ? 353 " BNE loc_FFCDEC0C\n" //BHI loc_FFCDEC0C ? 352 354 " LDR R1, [R12,#0x24]\n" 353 355 " ADD R1, R1, R1,LSL#1\n" … … 365 367 " LDR R2, [R3,#0x34]\n" 366 368 " MOV LR, PC\n" 367 " LDR PC, [R3,#0x 4C]\n"369 " LDR PC, [R3,#0x30]\n" //0x4c ? 368 370 " LDR R0, [SP]\n" 369 371 " BL sub_FFCDD8BC\n" … … 518 520 " LDR R12, [SP]\n" 519 521 " LDR R2, [R12]\n" 520 " CMP R2, #0x 20\n"522 " CMP R2, #0x1F\n" //0x20 ? 521 523 " BNE loc_FFCDEA08\n" 522 524 " MOV R0, R12\n" -
trunk/platform/a430/sub/100b/lib.c
r1527 r1628 21 21 return 0x4FEED0; // ?? "CRAW BUF","WBIntegPrm.c" - 1/3" 4 MPix - (2272*1704*10/8=0x49D7C0) 22 22 } 23 24 /*25 void *vid_get_viewport_live_fb()26 {27 return (void*)0;28 }29 */30 23 31 24 void *vid_get_viewport_live_fb() // from a540 … … 54 47 void *vid_get_viewport_fb_d() 55 48 { 56 return (void*)(*(int*)0x71 964); // ?? (found in sub_FFD0F248)49 return (void*)(*(int*)0x71AB0); // @ffd0f29c 57 50 } 58 51 -
trunk/platform/a430/sub/100b/stubs_min.S
r1376 r1628 15 15 DEF(some_flag_for_af_scan, 0x72BA0) // 0xFFD2A294 16 16 DEF(levent_table, 0xFFD3547C) 17 DEF(playrec_mode, 0x63 9C) // FFD3263817 DEF(playrec_mode, 0x638C) // @ffd32644 18 18 DEF(sys_mempart_id, 0xD648) // memFindMax 19 -
trunk/platform/generic/kbd.c
r1568 r1628 33 33 34 34 #if defined(CAMERA_a630) || defined(CAMERA_a640) || defined(CAMERA_a610)\ 35 || defined(CAMERA_a620) || defined(CAMERA_ixus800_sd700) || defined(CAMERA_a410) 35 || defined(CAMERA_a620) || defined(CAMERA_ixus800_sd700) || defined(CAMERA_a410)\ 36 || defined(CAMERA_a430) 36 37 #define USB_MASK 0x8000000 37 38 #define USB_IDX 1 … … 50 51 x = (long)*mmio2; 51 52 #elif defined(CAMERA_a610) || defined(CAMERA_a620) || defined(CAMERA_a630)\ 52 || defined(CAMERA_a640) || defined(CAMERA_ixus800_sd700) || defined(CAMERA_a410) 53 || defined(CAMERA_a640) || defined(CAMERA_ixus800_sd700) || defined(CAMERA_a410)\ 54 || defined(CAMERA_a430) 53 55 x = (long)*mmio1; 54 56 #elif defined(CAMERA_a710) || defined(CAMERA_a700)
Note: See TracChangeset
for help on using the changeset viewer.