1 .cpu arm7tdmi 2 .arch armv4t 3 .fpu softvfp 4 .eabi_attribute 20, 1 5 .eabi_attribute 21, 1 6 .eabi_attribute 23, 3 7 .eabi_attribute 24, 1 8 .eabi_attribute 25, 1 9 .eabi_attribute 26, 1 10 .eabi_attribute 30, 4 11 .eabi_attribute 34, 0 12 .eabi_attribute 18, 4 13 .file "init.c" 14 .text 15 .Ltext0: 16 .cfi_sections .debug_frame 17 .file 1 "board/se_k2x0/init.c" 18 .section .text.board_init,"ax",%progbits 19 .align 2 20 .global board_init 21 .syntax unified 22 .arm 24 board_init: 25 .LVL0: 26 .LFB76: 1:board/se_k2x0/init.c **** /* Initialization for the Sony Ericsson K200i/K220i */ 2:board/se_k2x0/init.c **** 3:board/se_k2x0/init.c **** /* (C) 2010 by Harald Welte 4:board/se_k2x0/init.c **** * (C) 2010-22 by Steve Markgraf 5:board/se_k2x0/init.c **** * 6:board/se_k2x0/init.c **** * All Rights Reserved 7:board/se_k2x0/init.c **** * 8:board/se_k2x0/init.c **** * This program is free software; you can redistribute it and/or modify 9:board/se_k2x0/init.c **** * it under the terms of the GNU General Public License as published by 10:board/se_k2x0/init.c **** * the Free Software Foundation; either version 2 of the License, or 11:board/se_k2x0/init.c **** * (at your option) any later version. 12:board/se_k2x0/init.c **** * 13:board/se_k2x0/init.c **** * This program is distributed in the hope that it will be useful, 14:board/se_k2x0/init.c **** * but WITHOUT ANY WARRANTY; without even the implied warranty of 15:board/se_k2x0/init.c **** * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16:board/se_k2x0/init.c **** * GNU General Public License for more details. 17:board/se_k2x0/init.c **** * 18:board/se_k2x0/init.c **** */ 19:board/se_k2x0/init.c **** 20:board/se_k2x0/init.c **** #include 21:board/se_k2x0/init.c **** #include 22:board/se_k2x0/init.c **** 23:board/se_k2x0/init.c **** #include 24:board/se_k2x0/init.c **** #include 25:board/se_k2x0/init.c **** #include 26:board/se_k2x0/init.c **** #include 27:board/se_k2x0/init.c **** #include 28:board/se_k2x0/init.c **** #include 29:board/se_k2x0/init.c **** #include 30:board/se_k2x0/init.c **** #include 31:board/se_k2x0/init.c **** 32:board/se_k2x0/init.c **** #include 33:board/se_k2x0/init.c **** #include 34:board/se_k2x0/init.c **** #include 35:board/se_k2x0/init.c **** #include 36:board/se_k2x0/init.c **** #include 37:board/se_k2x0/init.c **** #include 38:board/se_k2x0/init.c **** #include 39:board/se_k2x0/init.c **** 40:board/se_k2x0/init.c **** #include 41:board/se_k2x0/init.c **** #include 42:board/se_k2x0/init.c **** 43:board/se_k2x0/init.c **** #include 44:board/se_k2x0/init.c **** #include 45:board/se_k2x0/init.c **** 46:board/se_k2x0/init.c **** #include 47:board/se_k2x0/init.c **** #include "keymap.h" 48:board/se_k2x0/init.c **** 49:board/se_k2x0/init.c **** #define ASIC_CONF_REG 0xfffef008 50:board/se_k2x0/init.c **** #define ARMIO_LATCH_OUT 0xfffe4802 51:board/se_k2x0/init.c **** #define IO_CNTL_REG 0xfffe4804 52:board/se_k2x0/init.c **** #define IO_CONF_REG 0xfffef00a 53:board/se_k2x0/init.c **** 54:board/se_k2x0/init.c **** static void board_io_init(void) 55:board/se_k2x0/init.c **** { 56:board/se_k2x0/init.c **** uint16_t reg; 57:board/se_k2x0/init.c **** 58:board/se_k2x0/init.c **** reg = readw(ASIC_CONF_REG); 59:board/se_k2x0/init.c **** /* Set LPG and PWL pin mux */ 60:board/se_k2x0/init.c **** reg |= (1 << 6) | (1 << 4); 61:board/se_k2x0/init.c **** /* TWL3025: Set SPI+RIF RX clock to rising edge */ 62:board/se_k2x0/init.c **** reg |= (1 << 13) | (1 << 14); 63:board/se_k2x0/init.c **** writew(reg, ASIC_CONF_REG); 64:board/se_k2x0/init.c **** 65:board/se_k2x0/init.c **** writew(0xc060, IO_CNTL_REG); 66:board/se_k2x0/init.c **** writew(0x03fd, IO_CONF_REG); 67:board/se_k2x0/init.c **** 68:board/se_k2x0/init.c **** /* set default IO state */ 69:board/se_k2x0/init.c **** writew(0x1f83, ARMIO_LATCH_OUT); 70:board/se_k2x0/init.c **** } 71:board/se_k2x0/init.c **** 72:board/se_k2x0/init.c **** void board_init(int with_irq) 73:board/se_k2x0/init.c **** { 27 .loc 1 73 1 view -0 28 .cfi_startproc 29 @ Function supports interworking. 30 @ args = 0, pretend = 0, frame = 0 31 @ frame_needed = 0, uses_anonymous_args = 0 74:board/se_k2x0/init.c **** /* Configure the memory interface */ 75:board/se_k2x0/init.c **** calypso_mem_cfg(CALYPSO_nCS0, 4, CALYPSO_MEM_16bit, 1); 32 .loc 1 75 2 view .LVU1 73:board/se_k2x0/init.c **** /* Configure the memory interface */ 33 .loc 1 73 1 is_stmt 0 view .LVU2 34 0000 1F402DE9 push {r0, r1, r2, r3, r4, lr} 35 .LCFI0: 36 .cfi_def_cfa_offset 24 37 .cfi_offset 4, -8 38 .cfi_offset 14, -4 39 .loc 1 75 2 view .LVU3 40 0004 0130A0E3 mov r3, #1 73:board/se_k2x0/init.c **** /* Configure the memory interface */ 41 .loc 1 73 1 view .LVU4 42 0008 0040A0E1 mov r4, r0 43 .loc 1 75 2 view .LVU5 44 000c 0320A0E1 mov r2, r3 45 0010 0410A0E3 mov r1, #4 46 0014 0000A0E3 mov r0, #0 47 .LVL1: 48 .loc 1 75 2 view .LVU6 49 0018 FEFFFFEB bl calypso_mem_cfg 50 .LVL2: 76:board/se_k2x0/init.c **** calypso_mem_cfg(CALYPSO_nCS1, 5, CALYPSO_MEM_16bit, 1); 51 .loc 1 76 2 is_stmt 1 view .LVU7 52 001c 0130A0E3 mov r3, #1 53 0020 0510A0E3 mov r1, #5 54 0024 0320A0E1 mov r2, r3 55 0028 0200A0E3 mov r0, #2 56 002c FEFFFFEB bl calypso_mem_cfg 57 .LVL3: 77:board/se_k2x0/init.c **** calypso_mem_cfg(CALYPSO_nCS2, 4, CALYPSO_MEM_16bit, 1); 58 .loc 1 77 2 view .LVU8 59 0030 0130A0E3 mov r3, #1 60 0034 0410A0E3 mov r1, #4 61 0038 0320A0E1 mov r2, r3 62 003c 0100A0E1 mov r0, r1 63 0040 FEFFFFEB bl calypso_mem_cfg 64 .LVL4: 78:board/se_k2x0/init.c **** calypso_mem_cfg(CALYPSO_nCS3, 5, CALYPSO_MEM_16bit, 1); 65 .loc 1 78 2 view .LVU9 66 0044 0130A0E3 mov r3, #1 67 0048 0510A0E3 mov r1, #5 68 004c 0320A0E1 mov r2, r3 69 0050 0600A0E3 mov r0, #6 70 0054 FEFFFFEB bl calypso_mem_cfg 71 .LVL5: 79:board/se_k2x0/init.c **** calypso_mem_cfg(CALYPSO_CS4, 5, CALYPSO_MEM_8bit, 1); /* TODO: add one dummy cycle */ 72 .loc 1 79 2 view .LVU10 73 0058 0130A0E3 mov r3, #1 74 005c 0020A0E3 mov r2, #0 75 0060 0510A0E3 mov r1, #5 76 0064 0A00A0E3 mov r0, #10 77 0068 FEFFFFEB bl calypso_mem_cfg 78 .LVL6: 80:board/se_k2x0/init.c **** calypso_mem_cfg(CALYPSO_nCS6, 0, CALYPSO_MEM_32bit, 1); 79 .loc 1 80 2 view .LVU11 80 006c 0130A0E3 mov r3, #1 81 0070 0220A0E3 mov r2, #2 82 0074 0010A0E3 mov r1, #0 83 0078 0C00A0E3 mov r0, #12 84 007c FEFFFFEB bl calypso_mem_cfg 85 .LVL7: 81:board/se_k2x0/init.c **** calypso_mem_cfg(CALYPSO_nCS7, 0, CALYPSO_MEM_32bit, 0); 86 .loc 1 81 2 view .LVU12 87 0080 0030A0E3 mov r3, #0 88 0084 0220A0E3 mov r2, #2 89 0088 0310A0E1 mov r1, r3 90 008c 0800A0E3 mov r0, #8 91 0090 FEFFFFEB bl calypso_mem_cfg 92 .LVL8: 82:board/se_k2x0/init.c **** 83:board/se_k2x0/init.c **** /* Set VTCXO_DIV2 = 1, configure PLL for 104 MHz and give ARM half of that */ 84:board/se_k2x0/init.c **** calypso_clock_set(2, CALYPSO_PLL13_104_MHZ, ARM_MCLK_DIV_2); 93 .loc 1 84 2 view .LVU13 94 0094 0220A0E3 mov r2, #2 95 0098 021BA0E3 mov r1, #2048 96 009c 0200A0E1 mov r0, r2 97 00a0 FEFFFFEB bl calypso_clock_set 98 .LVL9: 85:board/se_k2x0/init.c **** 86:board/se_k2x0/init.c **** /* Configure the RHEA bridge with some sane default values */ 87:board/se_k2x0/init.c **** calypso_rhea_cfg(0, 0, 0xff, 0, 1, 0, 0); 99 .loc 1 87 2 view .LVU14 100 00a4 0030A0E3 mov r3, #0 101 00a8 0120A0E3 mov r2, #1 102 00ac 0310A0E1 mov r1, r3 103 00b0 0300A0E1 mov r0, r3 104 00b4 08308DE5 str r3, [sp, #8] 105 00b8 04308DE5 str r3, [sp, #4] 106 00bc 00208DE5 str r2, [sp] 107 00c0 FF20A0E3 mov r2, #255 108 00c4 FEFFFFEB bl calypso_rhea_cfg 109 .LVL10: 88:board/se_k2x0/init.c **** 89:board/se_k2x0/init.c **** /* Initialize board-specific GPIO */ 90:board/se_k2x0/init.c **** board_io_init(); 110 .loc 1 90 2 view .LVU15 111 .LBB6: 112 .LBI6: 54:board/se_k2x0/init.c **** { 113 .loc 1 54 13 view .LVU16 114 .LBB7: 56:board/se_k2x0/init.c **** 115 .loc 1 56 2 view .LVU17 58:board/se_k2x0/init.c **** /* Set LPG and PWL pin mux */ 116 .loc 1 58 2 view .LVU18 58:board/se_k2x0/init.c **** /* Set LPG and PWL pin mux */ 117 .loc 1 58 6 is_stmt 0 view .LVU19 118 00c8 F8209FE5 ldr r2, .L8 119 00cc B73F52E1 ldrh r3, [r2, #-247] 120 .LVL11: 60:board/se_k2x0/init.c **** /* TWL3025: Set SPI+RIF RX clock to rising edge */ 121 .loc 1 60 2 is_stmt 1 view .LVU20 62:board/se_k2x0/init.c **** writew(reg, ASIC_CONF_REG); 122 .loc 1 62 2 view .LVU21 62:board/se_k2x0/init.c **** writew(reg, ASIC_CONF_REG); 123 .loc 1 62 6 is_stmt 0 view .LVU22 124 00d0 063A83E3 orr r3, r3, #24576 125 .LVL12: 62:board/se_k2x0/init.c **** writew(reg, ASIC_CONF_REG); 126 .loc 1 62 6 view .LVU23 127 00d4 503083E3 orr r3, r3, #80 128 .LVL13: 63:board/se_k2x0/init.c **** 129 .loc 1 63 2 is_stmt 1 view .LVU24 130 00d8 B73F42E1 strh r3, [r2, #-247] @ movhi 65:board/se_k2x0/init.c **** writew(0x03fd, IO_CONF_REG); 131 .loc 1 65 2 view .LVU25 132 00dc E8109FE5 ldr r1, .L8+4 133 00e0 E8309FE5 ldr r3, .L8+8 134 .LVL14: 65:board/se_k2x0/init.c **** writew(0x03fd, IO_CONF_REG); 135 .loc 1 65 2 is_stmt 0 view .LVU26 136 00e4 BB1F43E1 strh r1, [r3, #-251] @ movhi 137 .LVL15: 66:board/se_k2x0/init.c **** 138 .loc 1 66 2 is_stmt 1 view .LVU27 139 00e8 E4109FE5 ldr r1, .L8+12 140 00ec B51F42E1 strh r1, [r2, #-245] @ movhi 69:board/se_k2x0/init.c **** } 141 .loc 1 69 2 view .LVU28 142 00f0 E0209FE5 ldr r2, .L8+16 143 .LBE7: 144 .LBE6: 91:board/se_k2x0/init.c **** 92:board/se_k2x0/init.c **** /* Enable bootrom mapping to route exception vectors to RAM */ 93:board/se_k2x0/init.c **** calypso_bootrom(with_irq); 145 .loc 1 93 2 is_stmt 0 view .LVU29 146 00f4 0400A0E1 mov r0, r4 147 .LBB9: 148 .LBB8: 69:board/se_k2x0/init.c **** } 149 .loc 1 69 2 view .LVU30 150 00f8 BD2F43E1 strh r2, [r3, #-253] @ movhi 151 .LVL16: 69:board/se_k2x0/init.c **** } 152 .loc 1 69 2 view .LVU31 153 .LBE8: 154 .LBE9: 155 .loc 1 93 2 is_stmt 1 view .LVU32 156 00fc FEFFFFEB bl calypso_bootrom 157 .LVL17: 94:board/se_k2x0/init.c **** calypso_exceptions_install(); 158 .loc 1 94 2 view .LVU33 159 0100 FEFFFFEB bl calypso_exceptions_install 160 .LVL18: 95:board/se_k2x0/init.c **** 96:board/se_k2x0/init.c **** /* Initialize interrupt controller */ 97:board/se_k2x0/init.c **** if (with_irq) 161 .loc 1 97 2 view .LVU34 162 .loc 1 97 5 is_stmt 0 view .LVU35 163 0104 000054E3 cmp r4, #0 98:board/se_k2x0/init.c **** irq_init(); 164 .loc 1 98 3 is_stmt 1 view .LVU36 165 0108 FEFFFF1B blne irq_init 166 .LVL19: 167 .L2: 99:board/se_k2x0/init.c **** 100:board/se_k2x0/init.c **** sercomm_bind_uart(UART_MODEM); 168 .loc 1 100 2 view .LVU37 169 010c 0100A0E3 mov r0, #1 170 0110 FEFFFFEB bl sercomm_bind_uart 171 .LVL20: 101:board/se_k2x0/init.c **** cons_bind_uart(UART_IRDA); 172 .loc 1 101 2 view .LVU38 102:board/se_k2x0/init.c **** 103:board/se_k2x0/init.c **** /* initialize MODEM UART to be used for sercomm */ 104:board/se_k2x0/init.c **** uart_init(UART_MODEM, with_irq); 173 .loc 1 104 2 is_stmt 0 view .LVU39 174 0114 FF4004E2 and r4, r4, #255 175 .LVL21: 101:board/se_k2x0/init.c **** cons_bind_uart(UART_IRDA); 176 .loc 1 101 2 view .LVU40 177 0118 0000A0E3 mov r0, #0 178 011c FEFFFFEB bl cons_bind_uart 179 .LVL22: 180 .loc 1 104 2 is_stmt 1 view .LVU41 181 0120 0410A0E1 mov r1, r4 182 0124 0100A0E3 mov r0, #1 183 0128 FEFFFFEB bl uart_init 184 .LVL23: 105:board/se_k2x0/init.c **** uart_baudrate(UART_MODEM, UART_115200); 185 .loc 1 105 2 view .LVU42 186 012c 0210A0E3 mov r1, #2 187 0130 0100A0E3 mov r0, #1 188 0134 FEFFFFEB bl uart_baudrate 189 .LVL24: 106:board/se_k2x0/init.c **** 107:board/se_k2x0/init.c **** /* initialize IRDA UART to be used for old-school console code. 108:board/se_k2x0/init.c **** * note: IRDA uart only accessible on C115 and C117 PCB */ 109:board/se_k2x0/init.c **** uart_init(UART_IRDA, with_irq); 190 .loc 1 109 2 view .LVU43 191 0138 0410A0E1 mov r1, r4 192 013c 0000A0E3 mov r0, #0 193 0140 FEFFFFEB bl uart_init 194 .LVL25: 110:board/se_k2x0/init.c **** uart_baudrate(UART_IRDA, UART_115200); 195 .loc 1 110 2 view .LVU44 196 0144 0210A0E3 mov r1, #2 197 0148 0000A0E3 mov r0, #0 198 014c FEFFFFEB bl uart_baudrate 199 .LVL26: 111:board/se_k2x0/init.c **** 112:board/se_k2x0/init.c **** /* Initialize hardware timers */ 113:board/se_k2x0/init.c **** hwtimer_init(); 200 .loc 1 113 2 view .LVU45 201 0150 FEFFFFEB bl hwtimer_init 202 .LVL27: 114:board/se_k2x0/init.c **** 115:board/se_k2x0/init.c **** /* Initialize DMA controller */ 116:board/se_k2x0/init.c **** dma_init(); 203 .loc 1 116 2 view .LVU46 204 0154 FEFFFFEB bl dma_init 205 .LVL28: 117:board/se_k2x0/init.c **** 118:board/se_k2x0/init.c **** /* Initialize real time clock */ 119:board/se_k2x0/init.c **** rtc_init(); 206 .loc 1 119 2 view .LVU47 207 0158 FEFFFFEB bl rtc_init 208 .LVL29: 120:board/se_k2x0/init.c **** 121:board/se_k2x0/init.c **** /* Initialize system timers (uses hwtimer 2) */ 122:board/se_k2x0/init.c **** timer_init(); 209 .loc 1 122 2 view .LVU48 210 015c FEFFFFEB bl timer_init 211 .LVL30: 123:board/se_k2x0/init.c **** 124:board/se_k2x0/init.c **** /* Initialize LCD driver and backlight */ 125:board/se_k2x0/init.c **** fb_init(); 212 .loc 1 125 2 view .LVU49 213 .LBB10: 214 .LBI10: 215 .file 2 "include/fb/framebuffer.h" 1:include/fb/framebuffer.h **** #ifndef _FB_FRAMEBUFFER_H 2:include/fb/framebuffer.h **** #define _FB_FRAMEBUFFER_H 3:include/fb/framebuffer.h **** 4:include/fb/framebuffer.h **** #include 5:include/fb/framebuffer.h **** #include 6:include/fb/framebuffer.h **** 7:include/fb/framebuffer.h **** /* color is encoded as */ 8:include/fb/framebuffer.h **** /* if a color is "special", then the RGB components most likely 9:include/fb/framebuffer.h **** don't make sense. Use "special" colours when you have to 10:include/fb/framebuffer.h **** mask out bits with transparency or you have to encode 11:include/fb/framebuffer.h **** colours in a fixed color palette ... */ 12:include/fb/framebuffer.h **** 13:include/fb/framebuffer.h **** #define FB_COLOR_WHITE 0x00ffffffU 14:include/fb/framebuffer.h **** #define FB_COLOR_BLACK 0x00000000U 15:include/fb/framebuffer.h **** #define FB_COLOR_TRANSP 0x01ffffffU 16:include/fb/framebuffer.h **** 17:include/fb/framebuffer.h **** #define FB_COLOR_RGB(r,g,b) ((((r) & 0xff)<<16)|(((g)&0xff)<<8)|((b)&0xff)) 18:include/fb/framebuffer.h **** #define FB_COLOR_RED FB_COLOR_RGB(0xff,0x00,0x00) 19:include/fb/framebuffer.h **** #define FB_COLOR_GREEN FB_COLOR_RGB(0x00,0xff,0x00) 20:include/fb/framebuffer.h **** #define FB_COLOR_BLUE FB_COLOR_RGB(0x00,0x00,0xff) 21:include/fb/framebuffer.h **** 22:include/fb/framebuffer.h **** /* encode */ 23:include/fb/framebuffer.h **** 24:include/fb/framebuffer.h **** /* decode */ 25:include/fb/framebuffer.h **** #define FB_COLOR_IS_SPECIAL(v) (!!((v) & 0xff000000U)) 26:include/fb/framebuffer.h **** #define FB_COLOR_TO_R(v) (((v)>>16) & 0xff) 27:include/fb/framebuffer.h **** #define FB_COLOR_TO_G(v) (((v)>> 8) & 0xff) 28:include/fb/framebuffer.h **** #define FB_COLOR_TO_B(v) ( (v) & 0xff) 29:include/fb/framebuffer.h **** 30:include/fb/framebuffer.h **** struct framebuffer { 31:include/fb/framebuffer.h **** char name[8]; // keep it short! 32:include/fb/framebuffer.h **** void (*init)(); // (re)initialize 33:include/fb/framebuffer.h **** void (*clear)(); // clear display 34:include/fb/framebuffer.h **** void (*set_p)(uint16_t x,uint16_t y); // set pixel to fg color 35:include/fb/framebuffer.h **** void (*boxto)(uint16_t x,uint16_t y); // draw box to xy 36:include/fb/framebuffer.h **** void (*lineto)(uint16_t x,uint16_t y); // draw line to xy 37:include/fb/framebuffer.h **** int (*putstr)(char *c,int maxwidth); // put text in current font to fb 38:include/fb/framebuffer.h **** void (*flush)(); // flush changes 39:include/fb/framebuffer.h **** 40:include/fb/framebuffer.h **** uint16_t width,height; // width/height of fb 41:include/fb/framebuffer.h **** uint16_t cursor_x,cursor_y; // current cursor 42:include/fb/framebuffer.h **** uint32_t fg_color,bg_color; // current fg/bg color 43:include/fb/framebuffer.h **** enum fb_font_id font; // current font 44:include/fb/framebuffer.h **** }; 45:include/fb/framebuffer.h **** 46:include/fb/framebuffer.h **** /* there is a single framebuffer, the specific driver defines 47:include/fb/framebuffer.h **** the "framebuffer" symbol */ 48:include/fb/framebuffer.h **** extern struct framebuffer *framebuffer; 49:include/fb/framebuffer.h **** 50:include/fb/framebuffer.h **** static inline void 51:include/fb/framebuffer.h **** fb_init(){ 216 .loc 2 51 1 view .LVU50 217 .LBB11: 52:include/fb/framebuffer.h **** framebuffer->init(); 218 .loc 2 52 2 view .LVU51 219 .loc 2 52 13 is_stmt 0 view .LVU52 220 0160 74309FE5 ldr r3, .L8+20 221 0164 003093E5 ldr r3, [r3] 222 .loc 2 52 2 view .LVU53 223 0168 083093E5 ldr r3, [r3, #8] 224 016c 0FE0A0E1 mov lr, pc 225 0170 13FF2FE1 bx r3 226 .LVL31: 227 .LBE11: 228 .LBE10: 126:board/se_k2x0/init.c **** bl_mode_pwl(1); 229 .loc 1 126 2 is_stmt 1 view .LVU54 230 0174 0100A0E3 mov r0, #1 231 0178 FEFFFFEB bl bl_mode_pwl 232 .LVL32: 127:board/se_k2x0/init.c **** bl_level(50); 233 .loc 1 127 2 view .LVU55 234 017c 3200A0E3 mov r0, #50 235 0180 FEFFFFEB bl bl_level 236 .LVL33: 128:board/se_k2x0/init.c **** 129:board/se_k2x0/init.c **** /* Initialize keypad driver */ 130:board/se_k2x0/init.c **** keypad_init(keymap, with_irq); 237 .loc 1 130 2 view .LVU56 238 0184 0410A0E1 mov r1, r4 239 0188 50009FE5 ldr r0, .L8+24 240 018c FEFFFFEB bl keypad_init 241 .LVL34: 131:board/se_k2x0/init.c **** 132:board/se_k2x0/init.c **** /* Initialize ABB driver (uses SPI) */ 133:board/se_k2x0/init.c **** twl3025_init(); 242 .loc 1 133 2 view .LVU57 243 0190 FEFFFFEB bl twl3025_init 244 .LVL35: 134:board/se_k2x0/init.c **** 135:board/se_k2x0/init.c **** /* K200i uses 13 sectors of 256 KiB each */ 136:board/se_k2x0/init.c **** if (tiffs_init(0x01800000, 0x40000, 13) < 0) { 245 .loc 1 136 2 view .LVU58 246 .loc 1 136 6 is_stmt 0 view .LVU59 247 0194 0D20A0E3 mov r2, #13 248 0198 0117A0E3 mov r1, #262144 249 019c 0605A0E3 mov r0, #25165824 250 01a0 FEFFFFEB bl tiffs_init 251 .LVL36: 252 .loc 1 136 5 view .LVU60 253 01a4 000050E3 cmp r0, #0 254 01a8 030000AA bge .L1 137:board/se_k2x0/init.c **** /* K220i uses 52 sectors of 64 KiB each */ 138:board/se_k2x0/init.c **** tiffs_init(0x01800000, 0x10000, 52); 255 .loc 1 138 3 is_stmt 1 view .LVU61 256 01ac 3420A0E3 mov r2, #52 257 01b0 0118A0E3 mov r1, #65536 258 01b4 0605A0E3 mov r0, #25165824 259 01b8 FEFFFFEB bl tiffs_init 260 .LVL37: 261 .L1: 139:board/se_k2x0/init.c **** } 140:board/se_k2x0/init.c **** } 262 .loc 1 140 1 is_stmt 0 view .LVU62 263 01bc 10D08DE2 add sp, sp, #16 264 .LCFI1: 265 .cfi_def_cfa_offset 8 266 @ sp needed 267 01c0 1040BDE8 pop {r4, lr} 268 .LCFI2: 269 .cfi_restore 14 270 .cfi_restore 4 271 .cfi_def_cfa_offset 0 272 01c4 1EFF2FE1 bx lr 273 .L9: 274 .align 2 275 .L8: 276 01c8 FFF0FEFF .word -69377 277 01cc 60C0FFFF .word -16288 278 01d0 FF48FEFF .word -112385 279 01d4 FD030000 .word 1021 280 01d8 831F0000 .word 8067 281 01dc 00000000 .word framebuffer 282 01e0 00000000 .word .LANCHOR0 283 .cfi_endproc 284 .LFE76: 286 .section .rodata 287 .set .LANCHOR0,. + 0 290 keymap: 291 0000 0901060B .ascii "\011\001\006\013\002\007\014\003\010\015\004\016\025" 291 02070C03 291 080D040E 291 15 292 000d 0005100F .ascii "\000\005\020\017\021\022\012\037\026\027\030" 292 11120A1F 292 161718 293 .text 294 .Letext0: 295 .file 3 "/usr/lib/gcc/arm-none-eabi/12.2.1/include/stdint.h" 296 .file 4 "include/keypad.h" 297 .file 5 "include/calypso/clock.h" 298 .file 6 "include/uart.h" 299 .file 7 "include/fb/font.h" 300 .file 8 "include/calypso/backlight.h" 301 .file 9 "include/abb/twl3025.h" 302 .file 10 "include/comm/timer.h" 303 .file 11 "include/calypso/rtc.h" 304 .file 12 "include/calypso/dma.h" 305 .file 13 "include/calypso/timer.h" 306 .file 14 "include/tiffs.h" 307 .file 15 "include/console.h" 308 .file 16 "include/comm/sercomm.h" 309 .file 17 "include/calypso/irq.h" 310 .file 18 "board/se_k2x0/keymap.h" DEFINED SYMBOLS *ABS*:00000000 init.c /tmp/ccnaAxQR.s:19 .text.board_init:00000000 $a /tmp/ccnaAxQR.s:24 .text.board_init:00000000 board_init /tmp/ccnaAxQR.s:276 .text.board_init:000001c8 $d /tmp/ccnaAxQR.s:290 .rodata:00000000 keymap UNDEFINED SYMBOLS calypso_mem_cfg calypso_clock_set calypso_rhea_cfg calypso_bootrom calypso_exceptions_install irq_init sercomm_bind_uart cons_bind_uart uart_init uart_baudrate hwtimer_init dma_init rtc_init timer_init bl_mode_pwl bl_level keypad_init twl3025_init tiffs_init framebuffer