2 * Copyright (c) 2016, Fuzhou Rockchip Electronics Co., Ltd
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
10 .file "rk_ftl_arm_v8.S"
12 .irp num,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17\
13 ,18,19,20,21,22,23,24,25,26,27,28,29,30
14 .equ __reg_num_x\num, \num
16 .equ __reg_num_xzr, 31
18 .macro mrs_s, rt, sreg
19 .inst 0xd5200000|(\sreg)|(__reg_num_\rt)
22 .macro msr_s, sreg, rt
23 .inst 0xd5000000|(\sreg)|(__reg_num_\rt)
29 .type rknand_sys_storage_open, %function
30 rknand_sys_storage_open:
31 adrp x0, :got:kmalloc_caches
33 stp x29, x30, [sp, -32]!
35 ldr x0, [x0, #:got_lo12:kmalloc_caches]
40 movk w1, 0x240, lsl 16
41 bl kmem_cache_alloc_trace
45 add x0, x0, :lo12:.LC0
54 ldp x29, x30, [sp], 32
56 .size rknand_sys_storage_open, .-rknand_sys_storage_open
58 .type rknand_sys_storage_release, %function
59 rknand_sys_storage_release:
60 stp x29, x30, [sp, -16]!
68 ldp x29, x30, [sp], 16
70 .size rknand_sys_storage_release, .-rknand_sys_storage_release
73 .type FlashMemCmp8, %function
75 adrp x3, :got:g_slc2KBNand
77 ldr x3, [x3, #:got_lo12:g_slc2KBNand]
103 .size FlashMemCmp8, .-FlashMemCmp8
105 .global FlashRsvdBlkChk
106 .type FlashRsvdBlkChk, %function
108 adrp x2, :got:gNandIDBResBlkNum
109 adrp x3, :got:gBlockPageAlignSize
111 ldr x2, [x2, #:got_lo12:gNandIDBResBlkNum]
112 ldr x3, [x3, #:got_lo12:gBlockPageAlignSize]
123 .size FlashRsvdBlkChk, .-FlashRsvdBlkChk
125 .global FlashGetRandomizer
126 .type FlashGetRandomizer, %function
128 adrp x2, :got:random_seed
130 stp x29, x30, [sp, -32]!
133 ldr x2, [x2, #:got_lo12:random_seed]
135 ldrh w19, [x2,w3,uxtw 1]
136 adrp x2, :got:gNandRandomizer
137 ldr x2, [x2, #:got_lo12:gNandRandomizer]
142 orr w1, w19, -1073741824
143 csel w19, w1, w19, ne
147 ldp x29, x30, [sp], 32
149 .size FlashGetRandomizer, .-FlashGetRandomizer
152 .type JSHash, %function
157 movk w0, 0x47c6, lsl 16
163 add w3, w3, w0, lsr 2
170 .size JSHash, .-JSHash
172 .global FlashLoadIdbInfo
173 .type FlashLoadIdbInfo, %function
177 .size FlashLoadIdbInfo, .-FlashLoadIdbInfo
179 .global FlashPrintInfo
180 .type FlashPrintInfo, %function
183 .size FlashPrintInfo, .-FlashPrintInfo
186 .type FlashSuspend, %function
188 adrp x0, :got:gpNandc
190 add x1, x2, :lo12:.LANCHOR0
191 ldr x0, [x0, #:got_lo12:gpNandc]
194 str w3, [x2,#:lo12:.LANCHOR0]
211 .size FlashSuspend, .-FlashSuspend
213 .global LogAddr2PhyAddr
214 .type LogAddr2PhyAddr, %function
216 adrp x6, :got:gNandPhyInfo
218 ldr x6, [x6, #:got_lo12:gNandPhyInfo]
222 adrp x6, :got:gBlockPageAlignSize
224 ldr x6, [x6, #:got_lo12:gBlockPageAlignSize]
226 adrp x6, :got:g_slc2KBNand
228 ldr x6, [x6, #:got_lo12:g_slc2KBNand]
240 adrp x1, :got:slcPageToMlcPageTbl
241 ldr x1, [x1, #:got_lo12:slcPageToMlcPageTbl]
242 ldrh w7, [x1,w7,sxtw 1]
244 adrp x1, :got:DieAddrs
246 ldr x1, [x1, #:got_lo12:DieAddrs]
247 ldr w5, [x1,w9,uxtw 2]
262 .size LogAddr2PhyAddr, .-LogAddr2PhyAddr
264 .global FlashGetPageSize
265 .type FlashGetPageSize, %function
267 adrp x0, :got:gpNandParaInfo
268 ldr x0, [x0, #:got_lo12:gpNandParaInfo]
272 .size FlashGetPageSize, .-FlashGetPageSize
274 .global NandcReadDontCaseBusyEn
275 .type NandcReadDontCaseBusyEn, %function
276 NandcReadDontCaseBusyEn:
278 .size NandcReadDontCaseBusyEn, .-NandcReadDontCaseBusyEn
280 .global NandcGetChipIf
281 .type NandcGetChipIf, %function
283 adrp x1, :got:gNandChipMap
285 ldr x1, [x1, #:got_lo12:gNandChipMap]
290 add x0, x0, x2, lsl 8
292 .size NandcGetChipIf, .-NandcGetChipIf
294 .global FlashEraseCmd
295 .type FlashEraseCmd, %function
297 stp x29, x30, [sp, -32]!
313 adrp x2, :got:gBlockPageAlignSize
314 ldr x2, [x2, #:got_lo12:gBlockPageAlignSize]
328 ldp x29, x30, [sp], 32
330 .size FlashEraseCmd, .-FlashEraseCmd
332 .global FlashProgSecondCmd
333 .type FlashProgSecondCmd, %function
335 stp x29, x30, [sp, -16]!
340 ldp x29, x30, [sp], 16
342 .size FlashProgSecondCmd, .-FlashProgSecondCmd
344 .global FlashProgDpFirstCmd
345 .type FlashProgDpFirstCmd, %function
347 stp x29, x30, [sp, -16]!
350 adrp x1, :got:gNandOptPara
351 ldr x1, [x1, #:got_lo12:gNandOptPara]
354 ldp x29, x30, [sp], 16
356 .size FlashProgDpFirstCmd, .-FlashProgDpFirstCmd
358 .global NandcSetDdrPara
359 .type NandcSetDdrPara, %function
361 adrp x1, :got:gpNandc
364 orr w0, w2, w0, lsl 16
365 ldr x1, [x1, #:got_lo12:gpNandc]
370 .size NandcSetDdrPara, .-NandcSetDdrPara
372 .global NandcSetDdrMode
373 .type NandcSetDdrMode, %function
375 adrp x1, :got:gpNandc
377 ldr x1, [x1, #:got_lo12:gpNandc]
385 .size NandcSetDdrMode, .-NandcSetDdrMode
388 .type NandcSetMode, %function
390 stp x29, x30, [sp, -48]!
391 adrp x1, :got:gpNandc
396 ldr x21, [x1, #:got_lo12:gpNandc]
397 stp x19, x20, [sp,16]
409 csel w19, w1, w19, ne
410 bl rknand_get_clk_rate
415 movk w1, 0x10, lsl 16
425 ldr x1, [x20, #:got_lo12:gpNandc]
429 ldp x19, x20, [sp,16]
431 ldp x29, x30, [sp], 48
433 .size NandcSetMode, .-NandcSetMode
435 .global NandcFlashCsDebug
436 .type NandcFlashCsDebug, %function
438 adrp x1, :got:gNandChipMap
440 ldr x1, [x1, #:got_lo12:gNandChipMap]
446 .size NandcFlashCsDebug, .-NandcFlashCsDebug
449 .type NandcFlashCs, %function
451 adrp x1, :got:gNandChipMap
453 ldr x1, [x1, #:got_lo12:gNandChipMap]
463 .size NandcFlashCs, .-NandcFlashCs
465 .global NandcFlashDeCs
466 .type NandcFlashDeCs, %function
468 adrp x1, :got:gNandChipMap
470 ldr x1, [x1, #:got_lo12:gNandChipMap]
477 .size NandcFlashDeCs, .-NandcFlashDeCs
480 .type NandcDelayns, %function
492 .size NandcDelayns, .-NandcDelayns
494 .global FlashReadStatus
495 .type FlashReadStatus, %function
497 stp x29, x30, [sp, -32]!
508 ldp x29, x30, [sp], 32
510 .size FlashReadStatus, .-FlashReadStatus
512 .global ToshibaSetRRPara
513 .type ToshibaSetRRPara, %function
515 stp x29, x30, [sp, -96]!
516 adrp x2, :got:Toshiba15RefValue
518 stp x23, x24, [sp,48]
520 ldr x2, [x2, #:got_lo12:Toshiba15RefValue]
521 stp x19, x20, [sp,16]
522 stp x21, x22, [sp,32]
527 stp x25, x26, [sp,64]
529 adrp x0, :got:ToshibaA19RefValue
530 adrp x25, :got:g_maxRegNum
531 stp x27, x28, [sp,80]
534 ldr x24, [x0, #:got_lo12:ToshibaA19RefValue]
535 adrp x27, :got:g_retryMode
536 adrp x28, :got:ToshibaRefValue
540 ldr x0, [x25, #:got_lo12:g_maxRegNum]
545 ldr x0, [x22, #:got_lo12:ToshibaA19RefValue]
550 ldr x0, [x27, #:got_lo12:g_retryMode]
562 ldr x0, [x28, #:got_lo12:ToshibaRefValue]
569 ldp x19, x20, [sp,16]
570 ldp x21, x22, [sp,32]
571 ldp x23, x24, [sp,48]
572 ldp x25, x26, [sp,64]
573 ldp x27, x28, [sp,80]
574 ldp x29, x30, [sp], 96
576 .size ToshibaSetRRPara, .-ToshibaSetRRPara
578 .global SamsungSetRRPara
579 .type SamsungSetRRPara, %function
581 stp x29, x30, [sp, -64]!
584 stp x21, x22, [sp,32]
586 adrp x0, :got:SamsungRefValue
587 stp x19, x20, [sp,16]
590 ldr x20, [x0, #:got_lo12:SamsungRefValue]
592 stp x23, x24, [sp,48]
593 add x20, x20, x1, lsl 2
594 adrp x23, :got:g_maxRegNum
597 ldr x0, [x23, #:got_lo12:g_maxRegNum]
603 ldr x0, [x22, #:got_lo12:SamsungRefValue]
613 ldp x19, x20, [sp,16]
614 ldp x21, x22, [sp,32]
615 ldp x23, x24, [sp,48]
616 ldp x29, x30, [sp], 64
618 .size SamsungSetRRPara, .-SamsungSetRRPara
620 .global HynixSetRRPara
621 .type HynixSetRRPara, %function
623 stp x29, x30, [sp, -80]!
624 adrp x4, :got:gReadRetryInfo
626 stp x21, x22, [sp,32]
628 adrp x0, :got:gpNandParaInfo
629 stp x23, x24, [sp,48]
630 stp x19, x20, [sp,16]
631 ldr x0, [x0, #:got_lo12:gpNandParaInfo]
633 stp x25, x26, [sp,64]
641 ldr x4, [x4, #:got_lo12:gReadRetryInfo]
643 add x4, x4, x22, lsl 6
645 add x19, x4, x19, sxtw
648 ldr x4, [x4, #:got_lo12:gReadRetryInfo]
650 add x19, x19, x23, sxtw
651 add x4, x4, x19, lsl 3
679 adrp x0, :got:read_retry_cur_offset
680 ldr x0, [x0, #:got_lo12:read_retry_cur_offset]
682 ldp x19, x20, [sp,16]
683 ldp x21, x22, [sp,32]
684 ldp x23, x24, [sp,48]
685 ldp x25, x26, [sp,64]
686 ldp x29, x30, [sp], 80
688 .size HynixSetRRPara, .-HynixSetRRPara
690 .global FlashSetReadRetryDefault
691 .type FlashSetReadRetryDefault, %function
692 FlashSetReadRetryDefault:
693 adrp x0, :got:gpNandParaInfo
694 stp x29, x30, [sp, -48]!
696 ldr x0, [x0, #:got_lo12:gpNandParaInfo]
697 stp x19, x20, [sp,16]
706 adrp x20, :got:IDByte
707 adrp x21, :got:gReadRetryInfo
710 ldr x2, [x20, #:got_lo12:IDByte]
715 ldr x2, [x21, #:got_lo12:gReadRetryInfo]
725 ldp x19, x20, [sp,16]
727 ldp x29, x30, [sp], 48
729 .size FlashSetReadRetryDefault, .-FlashSetReadRetryDefault
731 .global FlashReadStatusEN
732 .type FlashReadStatusEN, %function
734 stp x29, x30, [sp, -48]!
736 stp x19, x20, [sp,16]
741 adrp x0, :got:gpNandParaInfo
743 ldr x0, [x0, #:got_lo12:gpNandParaInfo]
748 adrp x3, :got:gNandOptPara
749 ldr x0, [x3, #:got_lo12:gNandOptPara]
758 ldr x0, [x3, #:got_lo12:gNandOptPara]
762 ldr x0, [x3, #:got_lo12:gNandOptPara]
779 ldp x19, x20, [sp,16]
780 ldp x29, x30, [sp], 48
783 .size FlashReadStatusEN, .-FlashReadStatusEN
785 .global FlashWaitReadyEN
786 .type FlashWaitReadyEN, %function
788 stp x29, x30, [sp, -48]!
790 stp x19, x20, [sp,16]
804 ldp x19, x20, [sp,16]
806 ldp x29, x30, [sp], 48
808 .size FlashWaitReadyEN, .-FlashWaitReadyEN
810 .global FlashWaitCmdDone
811 .type FlashWaitCmdDone, %function
813 stp x29, x30, [sp, -48]!
818 stp x19, x20, [sp,16]
819 ldr x2, [x2, #:got_lo12:gDieOp]
829 adrp x1, :got:DieAddrs
830 ldr x1, [x1, #:got_lo12:DieAddrs]
831 ldr w0, [x1,w20,sxtw 2]
851 ldp x19, x20, [sp,16]
852 ldp x29, x30, [sp], 48
854 .size FlashWaitCmdDone, .-FlashWaitCmdDone
856 .global NandcWaitFlashReady
857 .type NandcWaitFlashReady, %function
859 adrp x1, :got:gNandChipMap
861 stp x29, x30, [sp, -48]!
863 ldr x1, [x1, #:got_lo12:gNandChipMap]
864 stp x19, x20, [sp,16]
867 movk w19, 0x1, lsl 16
882 ldp x19, x20, [sp,16]
883 ldp x29, x30, [sp], 48
885 .size NandcWaitFlashReady, .-NandcWaitFlashReady
888 .type FlashReset, %function
890 stp x29, x30, [sp, -32]!
892 stp x19, x20, [sp,16]
902 bl NandcWaitFlashReady
905 ldp x19, x20, [sp,16]
906 ldp x29, x30, [sp], 32
908 .size FlashReset, .-FlashReset
910 .global FlashEraseBlock
911 .type FlashEraseBlock, %function
913 stp x29, x30, [sp, -48]!
915 stp x19, x20, [sp,16]
920 bl NandcWaitFlashReady
928 bl NandcWaitFlashReady
936 ldp x19, x20, [sp,16]
937 ldp x29, x30, [sp], 48
939 .size FlashEraseBlock, .-FlashEraseBlock
941 .global FlashSetInterfaceMode
942 .type FlashSetInterfaceMode, %function
943 FlashSetInterfaceMode:
944 stp x29, x30, [sp, -80]!
946 stp x19, x20, [sp,16]
947 adrp x19, :got:IDByte
949 stp x21, x22, [sp,32]
950 stp x23, x24, [sp,48]
951 ldr x19, [x19, #:got_lo12:IDByte]
953 stp x25, x26, [sp,64]
954 adrp x22, :got:gFlashInterfaceMode
972 ldr x1, [x22, #:got_lo12:gFlashInterfaceMode]
1011 bl NandcWaitFlashReady
1013 ldp x19, x20, [sp,16]
1014 ldp x21, x22, [sp,32]
1015 ldp x23, x24, [sp,48]
1016 ldp x25, x26, [sp,64]
1017 ldp x29, x30, [sp], 80
1019 .size FlashSetInterfaceMode, .-FlashSetInterfaceMode
1021 .global FlashReadSpare
1022 .type FlashReadSpare, %function
1024 adrp x3, :got:gNandParaInfo
1025 stp x29, x30, [sp, -64]!
1027 ldr x3, [x3, #:got_lo12:gNandParaInfo]
1028 stp x19, x20, [sp,16]
1052 bl NandcWaitFlashReady
1056 ldp x19, x20, [sp,16]
1058 ldp x29, x30, [sp], 64
1060 .size FlashReadSpare, .-FlashReadSpare
1062 .global SandiskProgTestBadBlock
1063 .type SandiskProgTestBadBlock, %function
1064 SandiskProgTestBadBlock:
1065 stp x29, x30, [sp, -48]!
1067 stp x19, x20, [sp,16]
1089 bl NandcWaitFlashReady
1095 ldp x19, x20, [sp,16]
1097 ldp x29, x30, [sp], 48
1099 .size SandiskProgTestBadBlock, .-SandiskProgTestBadBlock
1101 .global SandiskSetRRPara
1102 .type SandiskSetRRPara, %function
1104 stp x29, x30, [sp, -32]!
1106 stp x19, x20, [sp,16]
1116 adrp x3, :got:ToshibaA19RefValue
1117 adrp x2, :got:Toshiba15RefValue
1119 adrp x4, :got:g_maxRegNum
1120 adrp x5, :got:g_retryMode
1122 ldr x2, [x2, #:got_lo12:Toshiba15RefValue]
1123 ldr x3, [x3, #:got_lo12:ToshibaA19RefValue]
1128 ldr x0, [x4, #:got_lo12:g_maxRegNum]
1132 ldr x0, [x5, #:got_lo12:g_retryMode]
1146 bl NandcWaitFlashReady
1147 ldp x19, x20, [sp,16]
1148 ldp x29, x30, [sp], 32
1150 .size SandiskSetRRPara, .-SandiskSetRRPara
1152 .global NandcRandmzSel
1153 .type NandcRandmzSel, %function
1155 adrp x2, :got:gNandChipMap
1157 ldr x2, [x2, #:got_lo12:gNandChipMap]
1161 .size NandcRandmzSel, .-NandcRandmzSel
1163 .global FlashSetRandomizer
1164 .type FlashSetRandomizer, %function
1166 stp x29, x30, [sp, -48]!
1170 adrp x0, :got:gNandcVer
1171 stp x19, x20, [sp,16]
1173 ldr x0, [x0, #:got_lo12:gNandcVer]
1177 adrp x0, :got:random_seed
1179 ldr x0, [x0, #:got_lo12:random_seed]
1180 ldrh w19, [x0,w19,uxtw 1]
1181 adrp x0, :got:gNandRandomizer
1182 ldr x0, [x0, #:got_lo12:gNandRandomizer]
1188 orr w1, w19, -1073741824
1189 csel w19, w1, w19, ne
1197 adrp x0, :got:random_seed
1199 ldr x0, [x0, #:got_lo12:random_seed]
1200 ldrh w20, [x0,w2,uxtw 1]
1205 adrp x0, :got:gNandRandomizer
1206 ldr x0, [x0, #:got_lo12:gNandRandomizer]
1209 ubfiz w19, w19, 1, 7
1218 ldp x19, x20, [sp,16]
1220 ldp x29, x30, [sp], 48
1222 .size FlashSetRandomizer, .-FlashSetRandomizer
1224 .global FlashReadCmd
1225 .type FlashReadCmd, %function
1227 stp x29, x30, [sp, -48]!
1247 bl FlashSetRandomizer
1249 ldp x29, x30, [sp], 48
1251 .size FlashReadCmd, .-FlashReadCmd
1253 .global HynixGetReadRetryDefault
1254 .type HynixGetReadRetryDefault, %function
1255 HynixGetReadRetryDefault:
1256 stp x29, x30, [sp, -144]!
1260 stp x19, x20, [sp,16]
1261 adrp x19, :got:gReadRetryInfo
1262 stp x27, x28, [sp,80]
1263 stp x21, x22, [sp,32]
1264 ldr x1, [x19, #:got_lo12:gReadRetryInfo]
1266 stp x23, x24, [sp,48]
1267 stp x25, x26, [sp,64]
1279 adrp x0, :got:refValueDefault
1281 ldr x0, [x0, #:got_lo12:refValueDefault]
1358 adrp x23, :got:gNandMaxDie
1359 adrp x24, :got:DieCsIndex
1361 adrp x26, :got:refValueDefault
1363 ldr x0, [x23, #:got_lo12:gNandMaxDie]
1367 ldr x0, [x24, #:got_lo12:DieCsIndex]
1369 ldr x22, [x19, #:got_lo12:gReadRetryInfo]
1370 ldrb w0, [x0,w27,sxtw]
1379 ldr x0, [x19, #:got_lo12:gReadRetryInfo]
1396 ldr x3, [x26, #:got_lo12:refValueDefault]
1404 strb w3, [x22,w2,sxtw]
1442 adrp x0, :got:gNandMaxDie
1443 ldr x0, [x0, #:got_lo12:gNandMaxDie]
1448 ldr x19, [x19, #:got_lo12:gReadRetryInfo]
1451 ldp x19, x20, [sp,16]
1452 ldp x21, x22, [sp,32]
1453 ldp x23, x24, [sp,48]
1454 ldp x25, x26, [sp,64]
1455 ldp x27, x28, [sp,80]
1456 ldp x29, x30, [sp], 144
1459 adrp x0, :got:DieCsIndex
1460 ldr x3, [x19, #:got_lo12:gReadRetryInfo]
1462 ldr x0, [x0, #:got_lo12:DieCsIndex]
1463 ldrb w23, [x0,w22,sxtw]
1465 sbfiz x26, x23, 6, 32
1474 bl NandcWaitFlashReady
1529 bl NandcWaitFlashReady
1541 adrp x4, :got:gFlashPageBuffer0
1542 ldr x0, [x4, #:got_lo12:gFlashPageBuffer0]
1554 ldr x0, [x4, #:got_lo12:gFlashPageBuffer0]
1576 ldr x0, [x4, #:got_lo12:gFlashPageBuffer0]
1586 ldr w11, [x12,w10,sxtw 2]
1590 csinc w9, w9, w9, ne
1599 str w3, [x12,x5,lsl 2]
1611 strb w6, [x26,w5,sxtw]
1623 bl NandcWaitFlashReady
1629 ldr x0, [x19, #:got_lo12:gReadRetryInfo]
1644 bl NandcWaitFlashReady
1647 .size HynixGetReadRetryDefault, .-HynixGetReadRetryDefault
1649 .global FlashReadDpDataOutCmd
1650 .type FlashReadDpDataOutCmd, %function
1651 FlashReadDpDataOutCmd:
1652 stp x29, x30, [sp, -48]!
1659 adrp x2, :got:gNandOptPara
1663 ldr x2, [x2, #:got_lo12:gNandOptPara]
1691 bl FlashSetRandomizer
1693 ldp x29, x30, [sp], 48
1695 .size FlashReadDpDataOutCmd, .-FlashReadDpDataOutCmd
1697 .global FlashReadDpCmd
1698 .type FlashReadDpCmd, %function
1700 stp x29, x30, [sp, -80]!
1702 stp x21, x22, [sp,32]
1707 stp x19, x20, [sp,16]
1710 adrp x3, :got:gNandOptPara
1714 ldr x3, [x3, #:got_lo12:gNandOptPara]
1735 bl NandcWaitFlashReady
1761 bl FlashSetRandomizer
1763 ldp x19, x20, [sp,16]
1764 ldp x21, x22, [sp,32]
1765 ldp x29, x30, [sp], 80
1767 .size FlashReadDpCmd, .-FlashReadDpCmd
1769 .global FlashProgFirstCmd
1770 .type FlashProgFirstCmd, %function
1772 stp x29, x30, [sp, -48]!
1791 bl FlashSetRandomizer
1793 ldp x29, x30, [sp], 48
1795 .size FlashProgFirstCmd, .-FlashProgFirstCmd
1797 .global FlashProgDpSecondCmd
1798 .type FlashProgDpSecondCmd, %function
1799 FlashProgDpSecondCmd:
1800 stp x29, x30, [sp, -48]!
1807 adrp x2, :got:gNandOptPara
1809 ldr x2, [x2, #:got_lo12:gNandOptPara]
1821 bl FlashSetRandomizer
1823 ldp x29, x30, [sp], 48
1825 .size FlashProgDpSecondCmd, .-FlashProgDpSecondCmd
1828 .type FlashDeInit, %function
1830 stp x29, x30, [sp, -32]!
1834 adrp x19, :got:gFlashToggleModeEn
1835 bl NandcWaitFlashReady
1836 bl FlashSetReadRetryDefault
1837 ldr x19, [x19, #:got_lo12:gFlashToggleModeEn]
1840 adrp x0, :got:gFlashInterfaceMode
1841 ldr x0, [x0, #:got_lo12:gFlashInterfaceMode]
1845 bl FlashSetInterfaceMode
1855 ldp x29, x30, [sp], 32
1857 .size FlashDeInit, .-FlashDeInit
1859 .global NandcTimeCfg
1860 .type NandcTimeCfg, %function
1862 stp x29, x30, [sp, -32]!
1867 bl rknand_get_clk_rate
1869 adrp x1, :got:gpNandc
1870 movk w2, 0xf, lsl 16
1872 ldr x1, [x1, #:got_lo12:gpNandc]
1907 ldp x29, x30, [sp], 32
1909 .size NandcTimeCfg, .-NandcTimeCfg
1911 .global FlashTimingCfg
1912 .type FlashTimingCfg, %function
1916 stp x29, x30, [sp, -16]!
1925 adrp x1, :got:gpNandc
1926 ldr x1, [x1, #:got_lo12:gpNandc]
1930 adrp x0, :got:gNandParaInfo
1931 ldr x0, [x0, #:got_lo12:gNandParaInfo]
1934 ldp x29, x30, [sp], 16
1936 .size FlashTimingCfg, .-FlashTimingCfg
1938 .global NandcGetTimeCfg
1939 .type NandcGetTimeCfg, %function
1941 adrp x4, :got:gpNandc
1942 ldr x4, [x4, #:got_lo12:gpNandc]
1956 orr w0, w0, w1, lsl 16
1959 .size NandcGetTimeCfg, .-NandcGetTimeCfg
1962 .type NandcBchSel, %function
1964 adrp x1, :got:gpNandc
1967 ldr x1, [x1, #:got_lo12:gpNandc]
1971 adrp x1, :got:gNandcEccBits
1972 ldr x1, [x1, #:got_lo12:gNandcEccBits]
1993 .size NandcBchSel, .-NandcBchSel
1996 .type FlashBchSel, %function
1998 adrp x1, :got:gNandFlashEccBits
2000 stp x29, x30, [sp, -16]!
2002 ldr x1, [x1, #:got_lo12:gNandFlashEccBits]
2005 ldp x29, x30, [sp], 16
2007 .size FlashBchSel, .-FlashBchSel
2010 .type FlashResume, %function
2012 adrp x1, :got:gpNandc
2013 stp x29, x30, [sp, -48]!
2015 ldr x1, [x1, #:got_lo12:gpNandc]
2016 stp x19, x20, [sp,16]
2019 add x0, x19, :lo12:.LANCHOR0
2022 adrp x21, :got:IDByte
2023 ldr w3, [x19,#:lo12:.LANCHOR0]
2043 ldr x1, [x21, #:got_lo12:IDByte]
2055 adrp x0, :got:gFlashToggleModeEn
2056 ldr x0, [x0, #:got_lo12:gFlashToggleModeEn]
2059 adrp x20, :got:gFlashInterfaceMode
2061 add x19, x19, :lo12:.LANCHOR0
2063 ldr x20, [x20, #:got_lo12:gFlashInterfaceMode]
2065 bl FlashSetInterfaceMode
2072 adrp x0, :got:gpNandParaInfo
2073 ldr x0, [x0, #:got_lo12:gpNandParaInfo]
2079 ldp x19, x20, [sp,16]
2080 ldp x29, x30, [sp], 48
2082 .size FlashResume, .-FlashResume
2084 .global NandCIrqEnable
2085 .type NandCIrqEnable, %function
2096 .size NandCIrqEnable, .-NandCIrqEnable
2098 .global NandCIrqDisable
2099 .type NandCIrqDisable, %function
2110 .size NandCIrqDisable, .-NandCIrqDisable
2112 .global rk_nandc_get_irq_status
2113 .type rk_nandc_get_irq_status, %function
2114 rk_nandc_get_irq_status:
2117 .size rk_nandc_get_irq_status, .-rk_nandc_get_irq_status
2119 .global rk_nandc_flash_ready
2120 .type rk_nandc_flash_ready, %function
2121 rk_nandc_flash_ready:
2122 stp x29, x30, [sp, -16]!
2126 ldp x29, x30, [sp], 16
2128 .size rk_nandc_flash_ready, .-rk_nandc_flash_ready
2130 .global NandcIqrWaitFlashReady
2131 .type NandcIqrWaitFlashReady, %function
2132 NandcIqrWaitFlashReady:
2133 stp x29, x30, [sp, -32]!
2137 bl rk_nandc_rb_irq_flag_init
2144 bl wait_for_nand_flash_ready
2152 ldp x29, x30, [sp], 32
2154 .size NandcIqrWaitFlashReady, .-NandcIqrWaitFlashReady
2156 .global FlashEraseBlocks
2157 .type FlashEraseBlocks, %function
2159 stp x29, x30, [sp, -128]!
2161 stp x19, x20, [sp,16]
2162 stp x21, x22, [sp,32]
2163 stp x25, x26, [sp,64]
2164 stp x27, x28, [sp,80]
2165 stp x23, x24, [sp,48]
2172 adrp x27, :got:gMultiPageProgEn
2173 adrp x28, :got:gDieOp
2176 adrp x23, :got:gNandMaxDie
2188 adrp x1, :got:gNandMaxDie
2191 ldr x1, [x1, #:got_lo12:gNandMaxDie]
2199 ldr x1, [x27, #:got_lo12:gMultiPageProgEn]
2201 ldr x4, [x28, #:got_lo12:gDieOp]
2205 csel w24, w24, wzr, ne
2207 adrp x4, :got:gDieOp
2214 ldr x2, [x4, #:got_lo12:gDieOp]
2228 adrp x1, :got:DieCsIndex
2229 ldr x4, [x4, #:got_lo12:gDieOp]
2231 ldr x1, [x1, #:got_lo12:DieCsIndex]
2238 adrp x0, :got:DieAddrs
2240 ldr x0, [x0, #:got_lo12:DieAddrs]
2241 ldr w0, [x0,x1,lsl 2]
2257 adrp x0, :got:gpNandc
2259 ldr x0, [x0, #:got_lo12:gpNandc]
2261 bl NandcIqrWaitFlashReady
2263 ldr x0, [x23, #:got_lo12:gNandMaxDie]
2273 ldp x19, x20, [sp,16]
2274 ldp x21, x22, [sp,32]
2275 ldp x23, x24, [sp,48]
2276 ldp x25, x26, [sp,64]
2277 ldp x27, x28, [sp,80]
2278 ldp x29, x30, [sp], 128
2280 .size FlashEraseBlocks, .-FlashEraseBlocks
2282 .global rk_nandc_flash_xfer_completed
2283 .type rk_nandc_flash_xfer_completed, %function
2284 rk_nandc_flash_xfer_completed:
2285 stp x29, x30, [sp, -16]!
2289 ldp x29, x30, [sp], 16
2291 .size rk_nandc_flash_xfer_completed, .-rk_nandc_flash_xfer_completed
2293 .global NandcSendDumpDataStart
2294 .type NandcSendDumpDataStart, %function
2295 NandcSendDumpDataStart:
2302 orr w1, w1, 536870912
2315 .size NandcSendDumpDataStart, .-NandcSendDumpDataStart
2317 .global NandcSendDumpDataDone
2318 .type NandcSendDumpDataDone, %function
2319 NandcSendDumpDataDone:
2328 .size NandcSendDumpDataDone, .-NandcSendDumpDataDone
2330 .global NandcXferStart
2331 .type NandcXferStart, %function
2333 stp x29, x30, [sp, -96]!
2339 adrp x1, :got:gNandChipMap
2340 stp x19, x20, [sp,16]
2341 stp x21, x22, [sp,32]
2342 ldr x1, [x1, #:got_lo12:gNandChipMap]
2343 ubfiz w19, w25, 1, 1
2344 stp x23, x24, [sp,48]
2358 adrp x0, :got:gNandcVer
2359 orr w19, w19, 536870912
2361 ldr x0, [x0, #:got_lo12:gNandcVer]
2376 adrp x20, :got:gMasterInfo
2382 bl rk_nandc_xfer_irq_flag_init
2389 ldr x0, [x20, #:got_lo12:gMasterInfo]
2393 adrp x0, :got:gNandcEccBits
2399 ldr x0, [x0, #:got_lo12:gNandcEccBits]
2408 ldr x4, [x20, #:got_lo12:gMasterInfo]
2414 orr w4, w10, w4, lsl 16
2425 ldr x20, [x20, #:got_lo12:gMasterInfo]
2426 ubfx x23, x19, 22, 5
2433 bl rknand_dma_map_single
2438 bl rknand_dma_map_single
2479 ldp x19, x20, [sp,16]
2480 ldp x21, x22, [sp,32]
2481 ldp x23, x24, [sp,48]
2483 ldp x29, x30, [sp], 96
2485 .size NandcXferStart, .-NandcXferStart
2488 .type Ftl_log2, %function
2502 .size Ftl_log2, .-Ftl_log2
2504 .global FtlPrintInfo
2505 .type FtlPrintInfo, %function
2508 .size FtlPrintInfo, .-FtlPrintInfo
2510 .global FtlSysBlkNumInit
2511 .type FtlSysBlkNumInit, %function
2516 adrp x2, :got:c_ftl_nand_max_sys_blks
2518 adrp x1, :got:c_ftl_nand_sys_blks_per_plane
2519 adrp x3, :got:c_ftl_nand_blk_pre_plane
2520 ldr x1, [x1, #:got_lo12:c_ftl_nand_sys_blks_per_plane]
2522 adrp x1, :got:c_ftl_nand_planes_num
2523 ldr x2, [x2, #:got_lo12:c_ftl_nand_max_sys_blks]
2524 ldr x1, [x1, #:got_lo12:c_ftl_nand_planes_num]
2528 adrp x2, :got:c_ftl_nand_data_blks_per_plane
2529 ldr x3, [x3, #:got_lo12:c_ftl_nand_blk_pre_plane]
2530 ldr x2, [x2, #:got_lo12:c_ftl_nand_data_blks_per_plane]
2534 adrp x2, :got:c_ftl_nand_totle_phy_blks
2535 adrp x0, :got:c_ftl_nand_max_data_blks
2536 ldr x2, [x2, #:got_lo12:c_ftl_nand_totle_phy_blks]
2537 ldr x0, [x0, #:got_lo12:c_ftl_nand_max_data_blks]
2543 .size FtlSysBlkNumInit, .-FtlSysBlkNumInit
2545 .global FtlConstantsInit
2546 .type FtlConstantsInit, %function
2548 stp x29, x30, [sp, -96]!
2549 adrp x3, :got:c_ftl_nand_planes_per_die
2550 adrp x6, :got:p_plane_order_table
2552 stp x19, x20, [sp,16]
2553 stp x21, x22, [sp,32]
2554 stp x23, x24, [sp,48]
2555 stp x25, x26, [sp,64]
2556 stp x27, x28, [sp,80]
2558 adrp x20, :got:c_ftl_nand_blk_pre_plane
2560 adrp x0, :got:c_ftl_nand_type
2562 ldr x0, [x0, #:got_lo12:c_ftl_nand_type]
2565 adrp x0, :got:c_ftl_nand_die_num
2566 ldr x1, [x0, #:got_lo12:c_ftl_nand_die_num]
2569 ldr x3, [x3, #:got_lo12:c_ftl_nand_planes_per_die]
2571 ldr x3, [x20, #:got_lo12:c_ftl_nand_blk_pre_plane]
2575 ldr x4, [x6, #:got_lo12:p_plane_order_table]
2576 adrp x13, :got:p_plane_order_table
2598 ldr x10, [x13, #:got_lo12:p_plane_order_table]
2602 strb w3, [x10,w6,uxtw]
2612 ldr x3, [x0, #:got_lo12:c_ftl_nand_die_num]
2616 ldr x2, [x20, #:got_lo12:c_ftl_nand_blk_pre_plane]
2619 adrp x2, :got:c_mlc_erase_count_value
2620 adrp x21, :got:c_ftl_nand_ext_blk_pre_plane
2623 ldr x2, [x2, #:got_lo12:c_mlc_erase_count_value]
2625 ldr x3, [x21, #:got_lo12:c_ftl_nand_ext_blk_pre_plane]
2630 adrp x23, :got:c_ftl_vendor_part_size
2632 ldr x3, [x23, #:got_lo12:c_ftl_vendor_part_size]
2634 adrp x2, :got:g_slc2KBNand
2635 ldr x2, [x2, #:got_lo12:g_slc2KBNand]
2641 ldr x0, [x0, #:got_lo12:c_ftl_nand_die_num]
2642 adrp x24, :got:c_ftl_nand_planes_num
2643 adrp x25, :got:c_ftl_nand_page_pre_blk
2644 adrp x28, :got:c_ftl_nand_page_pre_slc_blk
2645 adrp x27, :got:c_ftl_nand_sec_pre_page
2646 adrp x22, :got:c_ftl_nand_sec_pre_page_shift
2648 ldr x24, [x24, #:got_lo12:c_ftl_nand_planes_num]
2651 ldr x20, [x20, #:got_lo12:c_ftl_nand_blk_pre_plane]
2654 adrp x0, :got:c_ftl_nand_blks_per_die
2656 ldr x0, [x0, #:got_lo12:c_ftl_nand_blks_per_die]
2660 adrp x1, :got:c_ftl_nand_blks_per_die_shift
2662 ldr x1, [x1, #:got_lo12:c_ftl_nand_blks_per_die_shift]
2665 ldr x1, [x25, #:got_lo12:c_ftl_nand_page_pre_blk]
2667 ldr x1, [x28, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
2669 adrp x1, :got:c_ftl_nand_page_pre_super_blk
2671 ldr x1, [x1, #:got_lo12:c_ftl_nand_page_pre_super_blk]
2675 ldr x26, [x27, #:got_lo12:c_ftl_nand_sec_pre_page]
2678 ldr x1, [x22, #:got_lo12:c_ftl_nand_sec_pre_page_shift]
2684 adrp x0, :got:c_ftl_nand_byte_pre_page
2686 ldr x0, [x0, #:got_lo12:c_ftl_nand_byte_pre_page]
2688 adrp x0, :got:c_ftl_nand_byte_pre_oob
2691 ldr x0, [x0, #:got_lo12:c_ftl_nand_byte_pre_oob]
2693 adrp x0, :got:c_ftl_nand_reserved_blks
2696 ldr x0, [x0, #:got_lo12:c_ftl_nand_reserved_blks]
2698 adrp x1, :got:c_ftl_nand_totle_phy_blks
2701 ldr x1, [x1, #:got_lo12:c_ftl_nand_totle_phy_blks]
2706 ldr x1, [x21, #:got_lo12:c_ftl_nand_ext_blk_pre_plane]
2710 ldr x21, [x21, #:got_lo12:c_ftl_nand_ext_blk_pre_plane]
2711 adrp x3, :got:DeviceCapacity
2712 ldr x7, [x19, #:got_lo12:c_ftl_nand_page_pre_blk]
2716 ldr x3, [x3, #:got_lo12:DeviceCapacity]
2722 ldr x4, [x4, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
2723 ldr x23, [x23, #:got_lo12:c_ftl_vendor_part_size]
2729 adrp x3, :got:c_ftl_nand_max_vendor_blks
2733 ldr x4, [x3, #:got_lo12:c_ftl_nand_max_vendor_blks]
2737 ldr x2, [x3, #:got_lo12:c_ftl_nand_max_vendor_blks]
2741 adrp x2, :got:c_ftl_nand_vendor_region_num
2746 ldr x2, [x2, #:got_lo12:c_ftl_nand_vendor_region_num]
2750 adrp x1, :got:c_ftl_nand_map_blks_per_plane
2751 ldr x1, [x1, #:got_lo12:c_ftl_nand_map_blks_per_plane]
2753 adrp x1, :got:c_ftl_nand_max_map_blks
2755 ldr x1, [x1, #:got_lo12:c_ftl_nand_max_map_blks]
2759 ldr x3, [x3, #:got_lo12:c_ftl_nand_max_vendor_blks]
2763 adrp x1, :got:c_ftl_nand_sys_blks_per_plane
2764 ldr x2, [x1, #:got_lo12:c_ftl_nand_sys_blks_per_plane]
2769 ldr x21, [x1, #:got_lo12:c_ftl_nand_sys_blks_per_plane]
2772 adrp x0, :got:c_ftl_nand_init_sys_blks_per_plane
2774 adrp x2, :got:c_ftl_nand_map_region_num
2775 ldr x0, [x0, #:got_lo12:c_ftl_nand_init_sys_blks_per_plane]
2777 adrp x0, :got:c_ftl_nand_max_data_blks
2778 ldr x19, [x19, #:got_lo12:c_ftl_nand_page_pre_blk]
2779 ldr x0, [x0, #:got_lo12:c_ftl_nand_max_data_blks]
2780 ldr x22, [x22, #:got_lo12:c_ftl_nand_sec_pre_page_shift]
2783 ldr x2, [x2, #:got_lo12:c_ftl_nand_map_region_num]
2792 adrp x0, :got:c_ftl_nand_l2pmap_ram_region_num
2793 ldr x20, [x20, #:got_lo12:c_ftl_nand_sec_pre_page]
2794 ldr x0, [x0, #:got_lo12:c_ftl_nand_l2pmap_ram_region_num]
2798 adrp x0, :got:g_MaxLbaSector
2799 ldr x0, [x0, #:got_lo12:g_MaxLbaSector]
2802 ldp x19, x20, [sp,16]
2803 ldp x21, x22, [sp,32]
2804 ldp x23, x24, [sp,48]
2805 ldp x25, x26, [sp,64]
2806 ldp x27, x28, [sp,80]
2807 ldp x29, x30, [sp], 96
2809 .size FtlConstantsInit, .-FtlConstantsInit
2811 .global IsBlkInVendorPart
2812 .type IsBlkInVendorPart, %function
2814 adrp x1, :got:g_totle_vendor_block
2817 ldr x1, [x1, #:got_lo12:g_totle_vendor_block]
2820 adrp x1, :got:c_ftl_nand_max_vendor_blks
2821 ldr x1, [x1, #:got_lo12:c_ftl_nand_max_vendor_blks]
2823 adrp x1, :got:p_vendor_block_table
2824 ldr x1, [x1, #:got_lo12:p_vendor_block_table]
2831 add x0, x3, x1, lsl 1
2841 .size IsBlkInVendorPart, .-IsBlkInVendorPart
2843 .global FtlCacheMetchLpa
2844 .type FtlCacheMetchLpa, %function
2846 adrp x2, :got:g_wr_page_num
2849 ldr x2, [x2, #:got_lo12:g_wr_page_num]
2852 adrp x2, :got:req_wr_io
2854 ldr x2, [x2, #:got_lo12:req_wr_io]
2873 .size FtlCacheMetchLpa, .-FtlCacheMetchLpa
2876 .type FtlGetCap, %function
2878 adrp x0, :got:g_MaxLbaSector
2879 ldr x0, [x0, #:got_lo12:g_MaxLbaSector]
2882 .size FtlGetCap, .-FtlGetCap
2884 .global FtlGetCapacity
2885 .type FtlGetCapacity, %function
2887 adrp x0, :got:g_MaxLbaSector
2888 ldr x0, [x0, #:got_lo12:g_MaxLbaSector]
2891 .size FtlGetCapacity, .-FtlGetCapacity
2894 .type FtlGetLpn, %function
2896 adrp x0, :got:g_MaxLpn
2897 ldr x0, [x0, #:got_lo12:g_MaxLpn]
2900 .size FtlGetLpn, .-FtlGetLpn
2902 .global FtlGetCurEraseBlock
2903 .type FtlGetCurEraseBlock, %function
2904 FtlGetCurEraseBlock:
2905 adrp x0, :got:c_ftl_nand_planes_num
2906 adrp x1, :got:g_cur_erase_blk
2907 ldr x0, [x0, #:got_lo12:c_ftl_nand_planes_num]
2908 ldr x1, [x1, #:got_lo12:g_cur_erase_blk]
2913 .size FtlGetCurEraseBlock, .-FtlGetCurEraseBlock
2915 .global FtlGetAllBlockNum
2916 .type FtlGetAllBlockNum, %function
2918 adrp x0, :got:c_ftl_nand_blk_pre_plane
2919 adrp x1, :got:c_ftl_nand_planes_num
2920 ldr x0, [x0, #:got_lo12:c_ftl_nand_blk_pre_plane]
2921 ldr x1, [x1, #:got_lo12:c_ftl_nand_planes_num]
2926 .size FtlGetAllBlockNum, .-FtlGetAllBlockNum
2928 .global FtlBbmMapBadBlock
2929 .type FtlBbmMapBadBlock, %function
2932 adrp x0, :got:c_ftl_nand_blks_per_die
2933 stp x29, x30, [sp, -32]!
2936 ldr x0, [x0, #:got_lo12:c_ftl_nand_blks_per_die]
2938 adrp x19, :got:gBbtInfo
2940 ldr x19, [x19, #:got_lo12:gBbtInfo]
2942 add x0, x19, x2, uxth 3
2953 add x0, x0, :lo12:.LC1
2960 ldp x29, x30, [sp], 32
2962 .size FtlBbmMapBadBlock, .-FtlBbmMapBadBlock
2964 .global FtlBbmIsBadBlock
2965 .type FtlBbmIsBadBlock, %function
2967 adrp x2, :got:c_ftl_nand_blks_per_die
2969 ldr x2, [x2, #:got_lo12:c_ftl_nand_blks_per_die]
2973 adrp x1, :got:gBbtInfo
2975 ldr x1, [x1, #:got_lo12:gBbtInfo]
2977 add x2, x1, x2, uxth 3
2979 ldr w1, [x1,x3,lsl 2]
2983 .size FtlBbmIsBadBlock, .-FtlBbmIsBadBlock
2985 .global FtlBbtInfoPrint
2986 .type FtlBbtInfoPrint, %function
2989 .size FtlBbtInfoPrint, .-FtlBbtInfoPrint
2991 .global FtlBbtCalcTotleCnt
2992 .type FtlBbtCalcTotleCnt, %function
2994 stp x29, x30, [sp, -48]!
2996 stp x19, x20, [sp,16]
2998 stp x21, x22, [sp,32]
3000 adrp x22, :got:c_ftl_nand_blks_per_die
3001 adrp x21, :got:c_ftl_nand_die_num
3003 ldr x0, [x22, #:got_lo12:c_ftl_nand_blks_per_die]
3004 ldr x1, [x21, #:got_lo12:c_ftl_nand_die_num]
3021 ldp x19, x20, [sp,16]
3022 ldp x21, x22, [sp,32]
3023 ldp x29, x30, [sp], 48
3025 .size FtlBbtCalcTotleCnt, .-FtlBbtCalcTotleCnt
3028 .type V2P_block, %function
3030 adrp x2, :got:c_ftl_nand_planes_per_die
3033 ldr x2, [x2, #:got_lo12:c_ftl_nand_planes_per_die]
3038 adrp x1, :got:c_ftl_nand_blks_per_die
3039 ldr x1, [x1, #:got_lo12:c_ftl_nand_blks_per_die]
3043 .size V2P_block, .-V2P_block
3046 .type P2V_plane, %function
3048 adrp x1, :got:c_ftl_nand_planes_per_die
3049 adrp x2, :got:c_ftl_nand_blks_per_die
3051 ldr x1, [x1, #:got_lo12:c_ftl_nand_planes_per_die]
3052 ldr x2, [x2, #:got_lo12:c_ftl_nand_blks_per_die]
3060 .size P2V_plane, .-P2V_plane
3062 .global P2V_block_in_plane
3063 .type P2V_block_in_plane, %function
3065 adrp x1, :got:c_ftl_nand_blks_per_die
3067 ldr x1, [x1, #:got_lo12:c_ftl_nand_blks_per_die]
3071 adrp x1, :got:c_ftl_nand_planes_per_die
3073 ldr x1, [x1, #:got_lo12:c_ftl_nand_planes_per_die]
3077 .size P2V_block_in_plane, .-P2V_block_in_plane
3079 .global ftl_cmp_data_ver
3080 .type ftl_cmp_data_ver, %function
3095 .size ftl_cmp_data_ver, .-ftl_cmp_data_ver
3097 .global FtlFreeSysBlkQueueEmpty
3098 .type FtlFreeSysBlkQueueEmpty, %function
3099 FtlFreeSysBlkQueueEmpty:
3100 adrp x0, :got:gSysFreeQueue
3101 ldr x0, [x0, #:got_lo12:gSysFreeQueue]
3106 .size FtlFreeSysBlkQueueEmpty, .-FtlFreeSysBlkQueueEmpty
3108 .global FtlFreeSysBlkQueueFull
3109 .type FtlFreeSysBlkQueueFull, %function
3110 FtlFreeSysBlkQueueFull:
3111 adrp x0, :got:gSysFreeQueue
3112 ldr x0, [x0, #:got_lo12:gSysFreeQueue]
3117 .size FtlFreeSysBlkQueueFull, .-FtlFreeSysBlkQueueFull
3119 .global FtlFreeSysBlkQueueIn
3120 .type FtlFreeSysBlkQueueIn, %function
3121 FtlFreeSysBlkQueueIn:
3122 stp x29, x30, [sp, -32]!
3124 stp x19, x20, [sp,16]
3127 bl FtlFreeSysBlkQueueFull
3132 bl P2V_block_in_plane
3134 adrp x1, :got:req_erase
3136 ldr x1, [x1, #:got_lo12:req_erase]
3142 adrp x0, :got:p_erase_count_table
3143 ubfiz x1, x19, 1, 16
3144 ldr x0, [x0, #:got_lo12:p_erase_count_table]
3149 adrp x1, :got:g_totle_sys_slc_erase_count
3150 ldr x1, [x1, #:got_lo12:g_totle_sys_slc_erase_count]
3155 adrp x1, :got:gSysFreeQueue
3156 ldr x1, [x1, #:got_lo12:gSysFreeQueue]
3161 add x0, x1, x2, sxtw 1
3167 ldp x19, x20, [sp,16]
3168 ldp x29, x30, [sp], 32
3170 .size FtlFreeSysBlkQueueIn, .-FtlFreeSysBlkQueueIn
3172 .global FtlFreeSysBLkSort
3173 .type FtlFreeSysBLkSort, %function
3175 stp x29, x30, [sp, -48]!
3177 stp x19, x20, [sp,16]
3178 stp x21, x22, [sp,32]
3180 adrp x20, :got:gSysFreeQueue
3181 adrp x21, :got:p_sys_data_buf
3182 adrp x22, :got:p_erase_count_table
3184 ldr x1, [x20, #:got_lo12:gSysFreeQueue]
3185 adrp x6, :got:gSysFreeQueue
3191 add x0, x1, x0, sxtw 1
3193 bl P2V_block_in_plane
3195 ldr x3, [x22, #:got_lo12:p_erase_count_table]
3196 ubfiz x1, x19, 2, 16
3197 ldr x2, [x21, #:got_lo12:p_sys_data_buf]
3207 adrp x7, :got:p_sys_data_buf
3209 ldr x1, [x6, #:got_lo12:gSysFreeQueue]
3214 ldr x1, [x7, #:got_lo12:p_sys_data_buf]
3224 ldr w9, [x3,w1,uxtw 2]
3239 adrp x2, :got:p_sys_data_buf
3240 ldr x2, [x2, #:got_lo12:p_sys_data_buf]
3243 ldr x2, [x6, #:got_lo12:gSysFreeQueue]
3247 add x1, x2, x1, sxtw 1
3248 add x0, x2, x0, sxtw 1
3257 ldp x19, x20, [sp,16]
3258 ldp x21, x22, [sp,32]
3259 ldp x29, x30, [sp], 48
3261 .size FtlFreeSysBLkSort, .-FtlFreeSysBLkSort
3263 .global IsInFreeQueue
3264 .type IsInFreeQueue, %function
3266 stp x29, x30, [sp, -32]!
3270 bl FtlFreeSysBlkQueueFull
3274 adrp x2, :got:gSysFreeQueue
3276 ldr x3, [x2, #:got_lo12:gSysFreeQueue]
3282 ldr x5, [x2, #:got_lo12:gSysFreeQueue]
3298 ldp x29, x30, [sp], 32
3300 .size IsInFreeQueue, .-IsInFreeQueue
3302 .global FtlFreeSysBlkQueueOut
3303 .type FtlFreeSysBlkQueueOut, %function
3304 FtlFreeSysBlkQueueOut:
3305 stp x29, x30, [sp, -16]!
3307 bl FtlFreeSysBlkQueueEmpty
3311 adrp x1, :got:gSysFreeQueue
3312 ldr x1, [x1, #:got_lo12:gSysFreeQueue]
3314 add x0, x1, x2, sxtw 1
3323 ldp x29, x30, [sp], 16
3325 .size FtlFreeSysBlkQueueOut, .-FtlFreeSysBlkQueueOut
3327 .global insert_data_list
3328 .type insert_data_list, %function
3334 adrp x3, :got:p_data_block_list_table
3337 adrp x2, :got:p_data_block_list_head
3339 ldr x8, [x3, #:got_lo12:p_data_block_list_table]
3346 ldr x7, [x2, #:got_lo12:p_data_block_list_head]
3352 adrp x2, :got:p_valid_page_count_table
3355 mov x8, -6148914691236517206
3356 ldr x2, [x2, #:got_lo12:p_valid_page_count_table]
3364 csinv w3, w3, wzr, ne
3366 adrp x8, :got:p_erase_count_table
3368 ldr x8, [x8, #:got_lo12:p_erase_count_table]
3373 ubfiz x16, x2, 1, 16
3378 csinv w4, w4, wzr, ne
3394 adrp x0, :got:p_data_block_list_tail
3395 ldr x0, [x0, #:got_lo12:p_data_block_list_tail]
3407 ldr x2, [x5, #:got_lo12:p_data_block_list_head]
3418 ldr x3, [x10, #:got_lo12:p_data_block_list_table]
3425 .size insert_data_list, .-insert_data_list
3427 .global INSERT_DATA_LIST
3428 .type INSERT_DATA_LIST, %function
3430 stp x29, x30, [sp, -16]!
3433 adrp x0, :got:g_num_data_superblocks
3434 ldr x0, [x0, #:got_lo12:g_num_data_superblocks]
3438 ldp x29, x30, [sp], 16
3440 .size INSERT_DATA_LIST, .-INSERT_DATA_LIST
3442 .global insert_free_list
3443 .type insert_free_list, %function
3449 adrp x3, :got:p_data_block_list_table
3452 adrp x2, :got:p_free_data_block_list_head
3454 ldr x9, [x3, #:got_lo12:p_data_block_list_table]
3461 ldr x10, [x2, #:got_lo12:p_free_data_block_list_head]
3467 adrp x2, :got:p_erase_count_table
3469 mov x9, -6148914691236517206
3470 ldr x2, [x2, #:got_lo12:p_erase_count_table]
3498 ldr x2, [x3, #:got_lo12:p_free_data_block_list_head]
3509 ldr x3, [x12, #:got_lo12:p_data_block_list_table]
3516 .size insert_free_list, .-insert_free_list
3518 .global INSERT_FREE_LIST
3519 .type INSERT_FREE_LIST, %function
3521 stp x29, x30, [sp, -16]!
3524 adrp x0, :got:g_num_free_superblocks
3525 ldr x0, [x0, #:got_lo12:g_num_free_superblocks]
3529 ldp x29, x30, [sp], 16
3531 .size INSERT_FREE_LIST, .-INSERT_FREE_LIST
3533 .global List_remove_node
3534 .type List_remove_node, %function
3536 adrp x6, :got:p_data_block_list_table
3541 ldr x6, [x6, #:got_lo12:p_data_block_list_table]
3583 .size List_remove_node, .-List_remove_node
3585 .global List_pop_index_node
3586 .type List_pop_index_node, %function
3587 List_pop_index_node:
3588 stp x29, x30, [sp, -32]!
3595 adrp x3, :got:p_data_block_list_table
3598 ldr x3, [x3, #:got_lo12:p_data_block_list_table]
3604 mov x1, -6148914691236517206
3623 ldp x29, x30, [sp], 32
3625 .size List_pop_index_node, .-List_pop_index_node
3627 .global List_pop_head_node
3628 .type List_pop_head_node, %function
3630 stp x29, x30, [sp, -16]!
3633 bl List_pop_index_node
3634 ldp x29, x30, [sp], 16
3636 .size List_pop_head_node, .-List_pop_head_node
3638 .global List_get_gc_head_node
3639 .type List_get_gc_head_node, %function
3640 List_get_gc_head_node:
3642 adrp x0, :got:p_data_block_list_head
3643 ldr x0, [x0, #:got_lo12:p_data_block_list_head]
3647 adrp x0, :got:p_data_block_list_table
3650 ldr x0, [x0, #:got_lo12:p_data_block_list_table]
3656 mov x0, -6148914691236517206
3672 .size List_get_gc_head_node, .-List_get_gc_head_node
3674 .global List_update_data_list
3675 .type List_update_data_list, %function
3676 List_update_data_list:
3677 stp x29, x30, [sp, -32]!
3681 adrp x0, :got:g_active_superblock
3682 ldr x0, [x0, #:got_lo12:g_active_superblock]
3686 adrp x0, :got:g_buffer_superblock
3687 ldr x0, [x0, #:got_lo12:g_buffer_superblock]
3691 adrp x0, :got:g_gc_temp_superblock
3692 ldr x0, [x0, #:got_lo12:g_gc_temp_superblock]
3696 adrp x0, :got:p_data_block_list_table
3699 ldr x0, [x0, #:got_lo12:p_data_block_list_table]
3701 adrp x0, :got:p_data_block_list_head
3703 ldr x0, [x0, #:got_lo12:p_data_block_list_head]
3707 adrp x1, :got:p_valid_page_count_table
3709 ldr x1, [x1, #:got_lo12:p_valid_page_count_table]
3711 ubfiz x1, x19, 1, 16
3715 mov x4, -6148914691236517206
3717 csinv w2, w2, wzr, ne
3723 ldrh w1, [x6,x1,lsl 1]
3726 csinv w1, w1, wzr, ne
3731 adrp x0, :got:g_num_data_superblocks
3732 ldr x0, [x0, #:got_lo12:g_num_data_superblocks]
3741 ldp x29, x30, [sp], 32
3743 .size List_update_data_list, .-List_update_data_list
3745 .global ftl_map_blk_alloc_new_blk
3746 .type ftl_map_blk_alloc_new_blk, %function
3747 ftl_map_blk_alloc_new_blk:
3748 stp x29, x30, [sp, -48]!
3750 stp x19, x20, [sp,16]
3751 stp x21, x22, [sp,32]
3762 bl FtlFreeSysBlkQueueOut
3781 ldp x19, x20, [sp,16]
3782 ldp x21, x22, [sp,32]
3783 ldp x29, x30, [sp], 48
3785 .size ftl_map_blk_alloc_new_blk, .-ftl_map_blk_alloc_new_blk
3787 .global select_l2p_ram_region
3788 .type select_l2p_ram_region, %function
3789 select_l2p_ram_region:
3790 adrp x0, :got:c_ftl_nand_l2pmap_ram_region_num
3793 ldr x0, [x0, #:got_lo12:c_ftl_nand_l2pmap_ram_region_num]
3795 adrp x0, :got:p_l2p_ram_map
3796 ldr x0, [x0, #:got_lo12:p_l2p_ram_map]
3803 add x5, x1, x3, lsl 4
3816 add x4, x1, x3, lsl 4
3832 adrp x0, :got:g_l2p_last_update_region_id
3836 ldr x0, [x0, #:got_lo12:g_l2p_last_update_region_id]
3857 .size select_l2p_ram_region, .-select_l2p_ram_region
3859 .global FtlUpdateVaildLpn
3860 .type FtlUpdateVaildLpn, %function
3862 adrp x1, :got:FtlUpdateVaildLpnCount
3863 ldr x3, [x1, #:got_lo12:FtlUpdateVaildLpnCount]
3872 ldr x1, [x1, #:got_lo12:FtlUpdateVaildLpnCount]
3875 adrp x1, :got:g_VaildLpn
3876 ldr x0, [x1, #:got_lo12:g_VaildLpn]
3878 adrp x0, :got:c_ftl_nand_data_blks_per_plane
3879 ldr x0, [x0, #:got_lo12:c_ftl_nand_data_blks_per_plane]
3881 adrp x0, :got:p_valid_page_count_table
3882 ldr x0, [x0, #:got_lo12:p_valid_page_count_table]
3888 ldrh w4, [x6,x0,lsl 1]
3891 ldr x3, [x1, #:got_lo12:g_VaildLpn]
3900 .size FtlUpdateVaildLpn, .-FtlUpdateVaildLpn
3902 .global ftl_sb_update_avl_pages
3903 .type ftl_sb_update_avl_pages, %function
3904 ftl_sb_update_avl_pages:
3905 adrp x3, :got:c_ftl_nand_planes_num
3910 ldr x3, [x3, #:got_lo12:c_ftl_nand_planes_num]
3915 add x4, x0, x2, sxtw 1
3927 adrp x2, :got:c_ftl_nand_page_pre_blk
3930 add x3, x0, x3, uxth 1
3931 ldr x2, [x2, #:got_lo12:c_ftl_nand_page_pre_blk]
3949 .size ftl_sb_update_avl_pages, .-ftl_sb_update_avl_pages
3951 .global make_superblock
3952 .type make_superblock, %function
3954 stp x29, x30, [sp, -80]!
3956 stp x19, x20, [sp,16]
3957 stp x23, x24, [sp,48]
3958 stp x21, x22, [sp,32]
3964 adrp x22, :got:c_ftl_nand_planes_num
3965 adrp x24, :got:p_plane_order_table
3968 ldr x0, [x22, #:got_lo12:c_ftl_nand_planes_num]
3972 ldr x0, [x24, #:got_lo12:p_plane_order_table]
3973 add x21, x19, x20, uxth 1
3975 ldrb w0, [x0,w20,sxtw]
3990 adrp x1, :got:c_ftl_nand_page_pre_blk
3992 ldr x1, [x1, #:got_lo12:c_ftl_nand_page_pre_blk]
3997 adrp x0, :got:g_inkDie_check_enable
3998 ldr x0, [x0, #:got_lo12:g_inkDie_check_enable]
4001 adrp x0, :got:p_erase_count_table
4003 ldr x0, [x0, #:got_lo12:p_erase_count_table]
4005 ldrh w0, [x0,x1,lsl 1]
4013 ldp x19, x20, [sp,16]
4014 ldp x21, x22, [sp,32]
4015 ldp x23, x24, [sp,48]
4016 ldp x29, x30, [sp], 80
4018 .size make_superblock, .-make_superblock
4020 .global update_multiplier_value
4021 .type update_multiplier_value, %function
4022 update_multiplier_value:
4023 stp x29, x30, [sp, -64]!
4025 stp x19, x20, [sp,16]
4028 stp x21, x22, [sp,32]
4029 stp x23, x24, [sp,48]
4031 adrp x22, :got:c_ftl_nand_planes_num
4032 adrp x23, :got:p_plane_order_table
4033 adrp x24, :got:c_ftl_nand_page_pre_blk
4035 ldr x0, [x22, #:got_lo12:c_ftl_nand_planes_num]
4039 ldr x0, [x23, #:got_lo12:p_plane_order_table]
4041 ldrb w0, [x0,w21,sxtw]
4045 ldr x0, [x24, #:got_lo12:c_ftl_nand_page_pre_blk]
4060 adrp x0, :got:p_data_block_list_table
4061 ldr x0, [x0, #:got_lo12:p_data_block_list_table]
4066 ldp x19, x20, [sp,16]
4067 ldp x21, x22, [sp,32]
4068 ldp x23, x24, [sp,48]
4069 ldp x29, x30, [sp], 64
4071 .size update_multiplier_value, .-update_multiplier_value
4073 .global GetFreeBlockMinEraseCount
4074 .type GetFreeBlockMinEraseCount, %function
4075 GetFreeBlockMinEraseCount:
4076 adrp x0, :got:p_free_data_block_list_head
4077 ldr x0, [x0, #:got_lo12:p_free_data_block_list_head]
4081 adrp x0, :got:p_data_block_list_table
4082 ldr x0, [x0, #:got_lo12:p_data_block_list_table]
4085 mov x0, -6148914691236517206
4088 adrp x0, :got:p_erase_count_table
4090 ldr x0, [x0, #:got_lo12:p_erase_count_table]
4092 ldrh w0, [x0,x1,lsl 1]
4095 .size GetFreeBlockMinEraseCount, .-GetFreeBlockMinEraseCount
4097 .global GetFreeBlockMaxEraseCount
4098 .type GetFreeBlockMaxEraseCount, %function
4099 GetFreeBlockMaxEraseCount:
4101 adrp x0, :got:p_free_data_block_list_head
4102 ldr x0, [x0, #:got_lo12:p_free_data_block_list_head]
4106 adrp x0, :got:g_num_free_superblocks
4109 ldr x0, [x0, #:got_lo12:g_num_free_superblocks]
4113 adrp x0, :got:p_data_block_list_table
4116 ldr x0, [x0, #:got_lo12:p_data_block_list_table]
4118 mov x2, -6148914691236517206
4133 adrp x0, :got:p_erase_count_table
4135 ldr x0, [x0, #:got_lo12:p_erase_count_table]
4146 .size GetFreeBlockMaxEraseCount, .-GetFreeBlockMaxEraseCount
4148 .global FtlPrintInfo2buf
4149 .type FtlPrintInfo2buf, %function
4151 stp x29, x30, [sp, -128]!
4154 add x1, x1, :lo12:.LC2
4155 stp x19, x20, [sp,16]
4156 stp x21, x22, [sp,32]
4157 stp x23, x24, [sp,48]
4159 stp x25, x26, [sp,64]
4160 stp x27, x28, [sp,80]
4163 adrp x2, :got:gNandPhyInfo
4166 add x1, x1, :lo12:.LC3
4167 ldr x2, [x2, #:got_lo12:gNandPhyInfo]
4170 add x20, x20, x0, sxtw
4171 adrp x2, :got:DeviceCapacity
4174 add x1, x1, :lo12:.LC4
4175 ldr x2, [x2, #:got_lo12:DeviceCapacity]
4178 add x20, x20, x0, sxtw
4179 adrp x0, :got:gFtlInitStatus
4180 ldr x0, [x0, #:got_lo12:gFtlInitStatus]
4191 adrp x19, :got:gBbtInfo
4192 adrp x25, :got:g_num_free_superblocks
4194 adrp x23, :got:p_valid_page_count_table
4200 add x1, x1, :lo12:.LC5
4202 adrp x26, :got:g_sys_ext_data
4204 add x21, x20, x0, sxtw
4207 add x1, x1, :lo12:.LC6
4209 adrp x20, :got:g_sys_save_data
4211 adrp x2, :got:g_MaxLpn
4214 add x1, x1, :lo12:.LC7
4215 ldr x2, [x2, #:got_lo12:g_MaxLpn]
4218 add x21, x21, x0, sxtw
4219 adrp x2, :got:g_VaildLpn
4222 add x1, x1, :lo12:.LC8
4223 ldr x2, [x2, #:got_lo12:g_VaildLpn]
4226 add x21, x21, x0, sxtw
4227 adrp x2, :got:g_totle_read_page_count
4230 add x1, x1, :lo12:.LC9
4231 ldr x2, [x2, #:got_lo12:g_totle_read_page_count]
4234 add x21, x21, x0, sxtw
4235 adrp x2, :got:g_totle_discard_page_count
4238 add x1, x1, :lo12:.LC10
4239 ldr x2, [x2, #:got_lo12:g_totle_discard_page_count]
4242 add x21, x21, x0, sxtw
4243 adrp x2, :got:g_totle_write_page_count
4246 add x1, x1, :lo12:.LC11
4247 ldr x2, [x2, #:got_lo12:g_totle_write_page_count]
4250 add x21, x21, x0, sxtw
4251 adrp x2, :got:g_totle_cache_write_count
4254 add x1, x1, :lo12:.LC12
4255 ldr x2, [x2, #:got_lo12:g_totle_cache_write_count]
4258 add x21, x21, x0, sxtw
4259 adrp x2, :got:g_totle_l2p_write_count
4262 add x1, x1, :lo12:.LC13
4263 ldr x2, [x2, #:got_lo12:g_totle_l2p_write_count]
4266 add x21, x21, x0, sxtw
4267 adrp x2, :got:g_totle_gc_page_count
4270 add x1, x1, :lo12:.LC14
4271 ldr x2, [x2, #:got_lo12:g_totle_gc_page_count]
4274 add x21, x21, x0, sxtw
4275 adrp x0, :got:g_totle_write_sector
4277 add x1, x1, :lo12:.LC15
4278 ldr x0, [x0, #:got_lo12:g_totle_write_sector]
4283 add x21, x21, x0, sxtw
4284 adrp x0, :got:g_totle_read_sector
4286 add x1, x1, :lo12:.LC16
4287 ldr x0, [x0, #:got_lo12:g_totle_read_sector]
4292 add x21, x21, x0, sxtw
4293 adrp x2, :got:g_GlobalSysVersion
4296 add x1, x1, :lo12:.LC17
4297 ldr x2, [x2, #:got_lo12:g_GlobalSysVersion]
4300 add x21, x21, x0, sxtw
4301 adrp x2, :got:g_GlobalDataVersion
4303 add x1, x1, :lo12:.LC18
4305 ldr x2, [x2, #:got_lo12:g_GlobalDataVersion]
4308 ldr x19, [x19, #:got_lo12:gBbtInfo]
4309 add x21, x21, x0, sxtw
4312 bl FtlBbtCalcTotleCnt
4317 add x1, x1, :lo12:.LC19
4319 ldr x25, [x25, #:got_lo12:g_num_free_superblocks]
4321 add x21, x21, x0, sxtw
4322 add x1, x1, :lo12:.LC20
4326 add x21, x21, x0, sxtw
4327 adrp x2, :got:g_totle_mlc_erase_count
4330 add x1, x1, :lo12:.LC21
4331 ldr x2, [x2, #:got_lo12:g_totle_mlc_erase_count]
4334 add x21, x21, x0, sxtw
4335 adrp x2, :got:g_totle_slc_erase_count
4338 add x1, x1, :lo12:.LC22
4339 ldr x2, [x2, #:got_lo12:g_totle_slc_erase_count]
4342 add x21, x21, x0, sxtw
4343 adrp x2, :got:g_totle_avg_erase_count
4346 add x1, x1, :lo12:.LC23
4347 ldr x2, [x2, #:got_lo12:g_totle_avg_erase_count]
4350 add x21, x21, x0, sxtw
4351 adrp x2, :got:g_totle_sys_slc_erase_count
4354 add x1, x1, :lo12:.LC24
4355 ldr x2, [x2, #:got_lo12:g_totle_sys_slc_erase_count]
4358 add x21, x21, x0, sxtw
4359 adrp x2, :got:g_max_erase_count
4362 add x1, x1, :lo12:.LC25
4363 ldr x2, [x2, #:got_lo12:g_max_erase_count]
4366 add x21, x21, x0, sxtw
4367 adrp x2, :got:g_min_erase_count
4370 add x1, x1, :lo12:.LC26
4371 ldr x2, [x2, #:got_lo12:g_min_erase_count]
4374 ldr x20, [x20, #:got_lo12:g_sys_save_data]
4376 add x21, x21, x0, sxtw
4377 add x1, x1, :lo12:.LC27
4381 add x21, x21, x0, sxtw
4385 add x1, x1, :lo12:.LC28
4386 adrp x20, :got:g_gc_superblock
4388 add x21, x21, x0, sxtw
4389 adrp x2, :got:g_MaxLbaSector
4392 add x1, x1, :lo12:.LC29
4393 ldr x2, [x2, #:got_lo12:g_MaxLbaSector]
4396 add x21, x21, x0, sxtw
4397 adrp x2, :got:c_ftl_nand_init_sys_blks_per_plane
4400 add x1, x1, :lo12:.LC30
4401 ldr x2, [x2, #:got_lo12:c_ftl_nand_init_sys_blks_per_plane]
4404 add x21, x21, x0, sxtw
4405 adrp x2, :got:c_ftl_nand_sys_blks_per_plane
4408 add x1, x1, :lo12:.LC31
4409 ldr x2, [x2, #:got_lo12:c_ftl_nand_sys_blks_per_plane]
4412 add x21, x21, x0, sxtw
4413 adrp x2, :got:gSysFreeQueue
4416 add x1, x1, :lo12:.LC32
4417 ldr x2, [x2, #:got_lo12:gSysFreeQueue]
4420 add x21, x21, x0, sxtw
4421 adrp x2, :got:c_ftl_nand_data_blks_per_plane
4424 add x1, x1, :lo12:.LC33
4425 ldr x2, [x2, #:got_lo12:c_ftl_nand_data_blks_per_plane]
4428 add x21, x21, x0, sxtw
4429 adrp x2, :got:c_ftl_nand_data_op_blks_per_plane
4432 add x1, x1, :lo12:.LC34
4433 ldr x2, [x2, #:got_lo12:c_ftl_nand_data_op_blks_per_plane]
4436 add x21, x21, x0, sxtw
4437 adrp x2, :got:c_ftl_nand_max_data_blks
4440 add x1, x1, :lo12:.LC35
4441 ldr x2, [x2, #:got_lo12:c_ftl_nand_max_data_blks]
4444 add x21, x21, x0, sxtw
4445 adrp x2, :got:gSysInfo
4448 add x1, x1, :lo12:.LC36
4449 ldr x2, [x2, #:got_lo12:gSysInfo]
4452 add x21, x21, x0, sxtw
4455 adrp x19, :got:g_active_superblock
4457 add x1, x1, :lo12:.LC37
4459 ldr x19, [x19, #:got_lo12:g_active_superblock]
4461 add x21, x21, x0, sxtw
4462 add x1, x1, :lo12:.LC38
4466 add x21, x21, x0, sxtw
4470 add x1, x1, :lo12:.LC39
4472 add x21, x21, x0, sxtw
4476 add x1, x1, :lo12:.LC40
4478 add x21, x21, x0, sxtw
4482 add x1, x1, :lo12:.LC41
4484 add x21, x21, x0, sxtw
4488 add x1, x1, :lo12:.LC42
4490 ldr x24, [x23, #:got_lo12:p_valid_page_count_table]
4493 adrp x19, :got:g_buffer_superblock
4494 add x21, x21, x0, sxtw
4497 add x1, x1, :lo12:.LC43
4498 ldrh w2, [x2,x3,lsl 1]
4500 ldr x19, [x19, #:got_lo12:g_buffer_superblock]
4502 add x21, x21, x0, sxtw
4503 add x1, x1, :lo12:.LC44
4507 add x21, x21, x0, sxtw
4511 add x1, x1, :lo12:.LC45
4513 add x21, x21, x0, sxtw
4517 add x1, x1, :lo12:.LC46
4519 add x21, x21, x0, sxtw
4523 add x1, x1, :lo12:.LC47
4525 add x21, x21, x0, sxtw
4529 add x1, x1, :lo12:.LC48
4531 add x21, x21, x0, sxtw
4535 adrp x19, :got:g_gc_temp_superblock
4537 add x1, x1, :lo12:.LC49
4538 ldrh w2, [x2,x3,lsl 1]
4540 ldr x19, [x19, #:got_lo12:g_gc_temp_superblock]
4542 add x21, x21, x0, sxtw
4543 add x1, x1, :lo12:.LC50
4547 add x21, x21, x0, sxtw
4551 add x1, x1, :lo12:.LC51
4553 add x21, x21, x0, sxtw
4557 add x1, x1, :lo12:.LC52
4559 add x21, x21, x0, sxtw
4563 add x1, x1, :lo12:.LC53
4565 add x21, x21, x0, sxtw
4569 add x1, x1, :lo12:.LC54
4571 ldr x20, [x20, #:got_lo12:g_gc_superblock]
4573 add x21, x21, x0, sxtw
4574 add x1, x1, :lo12:.LC55
4578 add x21, x21, x0, sxtw
4582 add x1, x1, :lo12:.LC56
4584 add x21, x21, x0, sxtw
4588 add x1, x1, :lo12:.LC57
4590 add x21, x21, x0, sxtw
4594 add x1, x1, :lo12:.LC58
4596 add x21, x21, x0, sxtw
4600 add x1, x1, :lo12:.LC59
4602 add x21, x21, x0, sxtw
4603 adrp x0, :got:g_all_blk_used_slc_mode
4604 ldr x26, [x26, #:got_lo12:g_sys_ext_data]
4606 add x1, x1, :lo12:.LC60
4607 ldr x0, [x0, #:got_lo12:g_all_blk_used_slc_mode]
4611 adrp x0, :got:g_inkDie_check_enable
4612 ldr x0, [x0, #:got_lo12:g_inkDie_check_enable]
4615 orr w2, w2, w3, lsl 8
4618 add x19, x21, x0, sxtw
4622 add x1, x1, :lo12:.LC61
4624 add x19, x19, x0, sxtw
4628 add x1, x1, :lo12:.LC62
4630 add x19, x19, x0, sxtw
4631 adrp x2, :got:g_gc_free_blk_threshold
4634 add x1, x1, :lo12:.LC63
4635 ldr x2, [x2, #:got_lo12:g_gc_free_blk_threshold]
4638 add x19, x19, x0, sxtw
4639 adrp x2, :got:g_gc_merge_free_blk_threshold
4642 add x1, x1, :lo12:.LC64
4643 ldr x2, [x2, #:got_lo12:g_gc_merge_free_blk_threshold]
4646 add x19, x19, x0, sxtw
4647 adrp x2, :got:g_gc_skip_write_count
4650 add x1, x1, :lo12:.LC65
4651 ldr x2, [x2, #:got_lo12:g_gc_skip_write_count]
4654 add x19, x19, x0, sxtw
4655 adrp x2, :got:g_gc_blk_index
4657 add x1, x1, :lo12:.LC66
4659 ldr x2, [x2, #:got_lo12:g_gc_blk_index]
4662 add x19, x19, x0, sxtw
4663 bl GetFreeBlockMinEraseCount
4667 add x1, x1, :lo12:.LC67
4669 add x19, x19, x0, sxtw
4671 bl GetFreeBlockMaxEraseCount
4675 add x1, x1, :lo12:.LC68
4677 add x19, x19, x0, sxtw
4686 add x1, x1, :lo12:.LC69
4689 add x19, x19, x0, sxtw
4694 adrp x28, :got:p_data_block_list_table
4695 bl List_get_gc_head_node
4696 add x24, x24, :lo12:.LC70
4700 adrp x27, :got:p_erase_count_table
4704 adrp x21, :got:p_data_block_list_table
4706 ldr x0, [x23, #:got_lo12:p_valid_page_count_table]
4708 ldr x26, [x28, #:got_lo12:p_data_block_list_table]
4713 ldr x0, [x27, #:got_lo12:p_erase_count_table]
4724 add x19, x19, x0, sxtw
4732 adrp x0, :got:p_free_data_block_list_head
4733 ldr x1, [x21, #:got_lo12:p_data_block_list_table]
4738 ldr x0, [x0, #:got_lo12:p_free_data_block_list_head]
4739 add x23, x23, :lo12:.LC71
4741 adrp x26, :got:p_erase_count_table
4744 mov x0, -6148914691236517206
4751 ldr x25, [x21, #:got_lo12:p_data_block_list_table]
4753 ldr x0, [x26, #:got_lo12:p_erase_count_table]
4765 add x19, x19, x0, sxtw
4773 ldp x19, x20, [sp,16]
4774 ldp x21, x22, [sp,32]
4775 ldp x23, x24, [sp,48]
4776 ldp x25, x26, [sp,64]
4777 ldp x27, x28, [sp,80]
4778 ldp x29, x30, [sp], 128
4780 .size FtlPrintInfo2buf, .-FtlPrintInfo2buf
4782 .global rknand_proc_ftlread
4783 .type rknand_proc_ftlread, %function
4784 rknand_proc_ftlread:
4785 stp x29, x30, [sp, -32]!
4789 add x1, x1, :lo12:.LC72
4790 add x2, x2, :lo12:.LC73
4791 stp x19, x20, [sp,16]
4794 add x19, x20, x0, sxtw
4797 add x0, x19, x0, sxtw
4799 ldp x19, x20, [sp,16]
4800 ldp x29, x30, [sp], 32
4802 .size rknand_proc_ftlread, .-rknand_proc_ftlread
4804 .global GetSwlReplaceBlock
4805 .type GetSwlReplaceBlock, %function
4807 adrp x1, :got:g_totle_avg_erase_count
4808 adrp x2, :got:g_min_erase_count
4809 stp x29, x30, [sp, -96]!
4811 ldr x0, [x1, #:got_lo12:g_totle_avg_erase_count]
4812 stp x23, x24, [sp,48]
4815 stp x19, x20, [sp,16]
4816 stp x21, x22, [sp,32]
4819 ldr x0, [x2, #:got_lo12:g_min_erase_count]
4823 adrp x0, :got:g_totle_mlc_erase_count
4824 adrp x2, :got:p_erase_count_table
4825 ldr x1, [x0, #:got_lo12:g_totle_mlc_erase_count]
4827 adrp x1, :got:c_ftl_nand_data_blks_per_plane
4828 ldr x2, [x2, #:got_lo12:p_erase_count_table]
4829 ldr x1, [x1, #:got_lo12:c_ftl_nand_data_blks_per_plane]
4836 ldr x4, [x0, #:got_lo12:g_totle_mlc_erase_count]
4837 ldrh w6, [x5,x2,lsl 1]
4844 ldr x0, [x0, #:got_lo12:g_totle_mlc_erase_count]
4845 ldr x2, [x24, #:got_lo12:g_totle_avg_erase_count]
4849 adrp x1, :got:g_totle_slc_erase_count
4850 ldr x1, [x1, #:got_lo12:g_totle_slc_erase_count]
4853 adrp x1, :got:c_mlc_erase_count_value
4854 ldr x1, [x1, #:got_lo12:c_mlc_erase_count_value]
4860 adrp x0, :got:g_max_erase_count
4861 ldr x0, [x0, #:got_lo12:g_max_erase_count]
4866 adrp x4, :got:c_ftl_nand_data_blks_per_plane
4868 adrp x5, :got:p_erase_count_table
4871 ldr x1, [x4, #:got_lo12:c_ftl_nand_data_blks_per_plane]
4875 ldr x1, [x5, #:got_lo12:p_erase_count_table]
4884 ldr x0, [x25, #:got_lo12:g_min_erase_count]
4885 ldr x1, [x24, #:got_lo12:g_totle_avg_erase_count]
4891 adrp x2, :got:g_max_erase_count
4893 ldr x2, [x2, #:got_lo12:g_max_erase_count]
4897 adrp x1, :got:g_inkDie_check_enable
4898 ldr x1, [x1, #:got_lo12:g_inkDie_check_enable]
4907 adrp x0, :got:g_num_free_superblocks
4908 ldr x0, [x0, #:got_lo12:g_num_free_superblocks]
4910 add w0, w0, w0, lsl 1
4912 bl GetFreeBlockMaxEraseCount
4914 ldr x0, [x25, #:got_lo12:g_min_erase_count]
4922 adrp x0, :got:p_data_block_list_head
4923 ldr x0, [x0, #:got_lo12:p_data_block_list_head]
4926 adrp x0, :got:p_data_block_list_table
4927 adrp x21, :got:p_erase_count_table
4932 ldr x0, [x0, #:got_lo12:p_data_block_list_table]
4934 ldr x0, [x21, #:got_lo12:p_erase_count_table]
4936 mov x0, -6148914691236517206
4949 ldrh w2, [x5,x3,lsl 1]
4966 ubfiz x23, x19, 1, 16
4971 bl GetFreeBlockMinEraseCount
4972 ldr x2, [x25, #:got_lo12:g_min_erase_count]
4981 adrp x0, :got:g_inkDie_check_enable
4982 ldr x0, [x0, #:got_lo12:g_inkDie_check_enable]
4985 ldr x1, [x24, #:got_lo12:g_totle_avg_erase_count]
4990 adrp x0, :got:c_mlc_erase_count_value
4991 ldr x0, [x0, #:got_lo12:c_mlc_erase_count_value]
4996 adrp x0, :got:g_num_data_superblocks
4997 ldr x0, [x0, #:got_lo12:g_num_data_superblocks]
5001 ldr x21, [x21, #:got_lo12:p_erase_count_table]
5004 add x0, x0, :lo12:.LC74
5010 ldr x1, [x24, #:got_lo12:g_totle_avg_erase_count]
5018 adrp x1, :got:g_max_erase_count
5021 ldr x0, [x1, #:got_lo12:g_max_erase_count]
5027 adrp x0, :got:p_valid_page_count_table
5028 ldr x21, [x21, #:got_lo12:p_erase_count_table]
5029 ldr x3, [x1, #:got_lo12:g_max_erase_count]
5031 ldr x0, [x0, #:got_lo12:p_valid_page_count_table]
5037 add x0, x0, :lo12:.LC75
5041 adrp x0, :got:g_in_swl_replace
5043 ldr x0, [x0, #:got_lo12:g_in_swl_replace]
5047 ldp x19, x20, [sp,16]
5048 ldp x21, x22, [sp,32]
5049 ldp x23, x24, [sp,48]
5051 ldp x29, x30, [sp], 96
5053 .size GetSwlReplaceBlock, .-GetSwlReplaceBlock
5055 .global free_data_superblock
5056 .type free_data_superblock, %function
5057 free_data_superblock:
5058 stp x29, x30, [sp, -16]!
5064 adrp x1, :got:p_valid_page_count_table
5066 ldr x1, [x1, #:got_lo12:p_valid_page_count_table]
5072 ldp x29, x30, [sp], 16
5074 .size free_data_superblock, .-free_data_superblock
5076 .global FtlGcBufInit
5077 .type FtlGcBufInit, %function
5079 adrp x0, :got:g_gc_num_req
5081 adrp x6, :got:c_ftl_nand_planes_num
5083 adrp x8, :got:gp_gc_page_buf_info
5085 ldr x0, [x0, #:got_lo12:g_gc_num_req]
5086 adrp x10, :got:c_ftl_nand_byte_pre_page
5088 adrp x11, :got:p_gc_data_buf
5089 adrp x12, :got:c_ftl_nand_byte_pre_oob
5090 adrp x13, :got:p_gc_spare_buf
5092 adrp x14, :got:req_gc
5095 ldr x0, [x6, #:got_lo12:c_ftl_nand_planes_num]
5099 ldr x4, [x8, #:got_lo12:gp_gc_page_buf_info]
5104 ldr x0, [x10, #:got_lo12:c_ftl_nand_byte_pre_page]
5105 ldr x16, [x11, #:got_lo12:p_gc_data_buf]
5110 add x0, x16, x0, sxtw 2
5112 ldr x0, [x12, #:got_lo12:c_ftl_nand_byte_pre_oob]
5114 ldr x16, [x13, #:got_lo12:p_gc_spare_buf]
5120 add x0, x16, x0, sxtw 2
5123 ldr x16, [x14, #:got_lo12:req_gc]
5134 adrp x6, :got:c_gc_page_buf_num
5136 adrp x8, :got:gp_gc_page_buf_info
5137 adrp x9, :got:c_ftl_nand_byte_pre_page
5139 adrp x10, :got:p_gc_data_buf
5140 adrp x11, :got:c_ftl_nand_byte_pre_oob
5141 adrp x12, :got:p_gc_spare_buf
5143 ldr x1, [x6, #:got_lo12:c_gc_page_buf_num]
5147 ldr x4, [x8, #:got_lo12:gp_gc_page_buf_info]
5152 ldr x1, [x9, #:got_lo12:c_ftl_nand_byte_pre_page]
5153 ldr x13, [x10, #:got_lo12:p_gc_data_buf]
5158 add x1, x13, x1, sxtw 2
5160 ldr x1, [x11, #:got_lo12:c_ftl_nand_byte_pre_oob]
5164 ldr x4, [x12, #:got_lo12:p_gc_spare_buf]
5170 add x1, x4, x1, sxtw 2
5175 .size FtlGcBufInit, .-FtlGcBufInit
5177 .global FtlGcBufFree
5178 .type FtlGcBufFree, %function
5180 adrp x2, :got:c_gc_page_buf_num
5184 ldr x2, [x2, #:got_lo12:c_gc_page_buf_num]
5186 adrp x2, :got:gp_gc_page_buf_info
5187 ldr x2, [x2, #:got_lo12:gp_gc_page_buf_info]
5216 .size FtlGcBufFree, .-FtlGcBufFree
5218 .global FtlGcBufAlloc
5219 .type FtlGcBufAlloc, %function
5221 adrp x2, :got:c_gc_page_buf_num
5225 ldr x2, [x2, #:got_lo12:c_gc_page_buf_num]
5227 adrp x2, :got:gp_gc_page_buf_info
5228 ldr x2, [x2, #:got_lo12:gp_gc_page_buf_info]
5260 .size FtlGcBufAlloc, .-FtlGcBufAlloc
5262 .global IsBlkInGcList
5263 .type IsBlkInGcList, %function
5265 adrp x1, :got:g_gc_blk_num
5267 ldr x1, [x1, #:got_lo12:g_gc_blk_num]
5269 adrp x1, :got:p_gc_blk_tbl
5270 ldr x1, [x1, #:got_lo12:p_gc_blk_tbl]
5277 add x4, x3, x1, lsl 1
5287 .size IsBlkInGcList, .-IsBlkInGcList
5289 .global FtlGcUpdatePage
5290 .type FtlGcUpdatePage, %function
5292 stp x29, x30, [sp, -48]!
5299 bl P2V_block_in_plane
5300 adrp x3, :got:g_gc_blk_num
5305 ldr x4, [x3, #:got_lo12:g_gc_blk_num]
5307 adrp x4, :got:p_gc_blk_tbl
5308 ldr x4, [x4, #:got_lo12:p_gc_blk_tbl]
5315 add x9, x6, x5, lsl 1
5324 ldr x3, [x3, #:got_lo12:g_gc_blk_num]
5329 adrp x3, :got:g_gc_page_offset
5330 adrp x5, :got:p_gc_page_info
5332 ldr x3, [x3, #:got_lo12:g_gc_page_offset]
5333 ldr x5, [x5, #:got_lo12:p_gc_page_info]
5347 ldp x29, x30, [sp], 48
5349 .size FtlGcUpdatePage, .-FtlGcUpdatePage
5351 .global FtlGcRefreshBlock
5352 .type FtlGcRefreshBlock, %function
5354 stp x29, x30, [sp, -32]!
5360 add x0, x0, :lo12:.LC76
5362 adrp x2, :got:g_gc_next_blk
5364 ldr x2, [x2, #:got_lo12:g_gc_next_blk]
5368 adrp x2, :got:g_gc_next_blk_1
5369 ldr x2, [x2, #:got_lo12:g_gc_next_blk_1]
5378 ldp x29, x30, [sp], 32
5380 .size FtlGcRefreshBlock, .-FtlGcRefreshBlock
5382 .global FtlGcMarkBadPhyBlk
5383 .type FtlGcMarkBadPhyBlk, %function
5385 stp x29, x30, [sp, -48]!
5387 stp x19, x20, [sp,16]
5389 adrp x19, :got:g_gc_bad_block_temp_num
5391 stp x21, x22, [sp,32]
5392 bl P2V_block_in_plane
5394 ldr x1, [x19, #:got_lo12:g_gc_bad_block_temp_num]
5397 add x0, x0, :lo12:.LC77
5401 bl FtlGcRefreshBlock
5402 adrp x0, :got:g_inkDie_check_enable
5403 ldr x0, [x0, #:got_lo12:g_inkDie_check_enable]
5406 adrp x1, :got:p_erase_count_table
5407 ubfiz x0, x21, 1, 16
5408 ldr x1, [x1, #:got_lo12:p_erase_count_table]
5416 ldr x0, [x19, #:got_lo12:g_gc_bad_block_temp_num]
5417 adrp x3, :got:g_gc_bad_block_temp_tbl
5424 ldr x2, [x3, #:got_lo12:g_gc_bad_block_temp_tbl]
5425 add x2, x2, x0, lsl 1
5433 ldr x19, [x19, #:got_lo12:g_gc_bad_block_temp_num]
5436 adrp x0, :got:g_gc_bad_block_temp_tbl
5437 ldr x0, [x0, #:got_lo12:g_gc_bad_block_temp_tbl]
5438 strh w20, [x0,w1,sxtw 1]
5441 ldp x19, x20, [sp,16]
5442 ldp x21, x22, [sp,32]
5443 ldp x29, x30, [sp], 48
5445 .size FtlGcMarkBadPhyBlk, .-FtlGcMarkBadPhyBlk
5447 .global FtlGcReFreshBadBlk
5448 .type FtlGcReFreshBadBlk, %function
5450 adrp x0, :got:g_gc_bad_block_temp_num
5451 stp x29, x30, [sp, -32]!
5453 ldr x0, [x0, #:got_lo12:g_gc_bad_block_temp_num]
5457 adrp x0, :got:g_gc_next_blk
5458 ldr x0, [x0, #:got_lo12:g_gc_next_blk]
5463 adrp x19, :got:g_gc_bad_block_gc_index
5464 ldr x0, [x19, #:got_lo12:g_gc_bad_block_gc_index]
5470 ldr x19, [x19, #:got_lo12:g_gc_bad_block_gc_index]
5471 adrp x0, :got:g_gc_bad_block_temp_tbl
5473 ldr x0, [x0, #:got_lo12:g_gc_bad_block_temp_tbl]
5474 ldrh w0, [x0,w1,sxtw 1]
5475 bl P2V_block_in_plane
5476 bl FtlGcRefreshBlock
5483 ldp x29, x30, [sp], 32
5485 .size FtlGcReFreshBadBlk, .-FtlGcReFreshBadBlk
5488 .type ftl_malloc, %function
5490 stp x29, x30, [sp, -16]!
5494 movk w1, 0x240, lsl 16
5496 ldp x29, x30, [sp], 16
5498 .size ftl_malloc, .-ftl_malloc
5501 .type NandcInit, %function
5503 adrp x1, :got:gNandChipMap
5505 stp x29, x30, [sp, -32]!
5507 ldr x1, [x1, #:got_lo12:gNandChipMap]
5509 adrp x19, :got:gpNandc
5518 adrp x2, :got:gBootDdrMode
5521 ldr x19, [x19, #:got_lo12:gpNandc]
5523 ldr x2, [x2, #:got_lo12:gBootDdrMode]
5527 adrp x2, :got:gNandcVer
5532 ldr x2, [x2, #:got_lo12:gNandcVer]
5543 movk w1, 0x18, lsl 16
5547 adrp x1, :got:gMasterTempBuf
5548 ldr x1, [x1, #:got_lo12:gMasterTempBuf]
5550 adrp x1, :got:gMasterInfo
5551 ldr x1, [x1, #:got_lo12:gMasterInfo]
5555 adrp x0, :got:gNandcDumpWriteEn
5557 ldr x0, [x0, #:got_lo12:gNandcDumpWriteEn]
5560 ldp x29, x30, [sp], 32
5562 .size NandcInit, .-NandcInit
5565 .type ftl_free, %function
5567 stp x29, x30, [sp, -16]!
5570 ldp x29, x30, [sp], 16
5572 .size ftl_free, .-ftl_free
5575 .type ftl_memset, %function
5577 stp x29, x30, [sp, -16]!
5581 ldp x29, x30, [sp], 16
5583 .size ftl_memset, .-ftl_memset
5585 .global BuildFlashLsbPageTable
5586 .type BuildFlashLsbPageTable, %function
5587 BuildFlashLsbPageTable:
5588 stp x29, x30, [sp, -32]!
5590 stp x19, x20, [sp,16]
5594 adrp x2, :got:slcPageToMlcPageTbl
5596 ldr x1, [x2, #:got_lo12:slcPageToMlcPageTbl]
5597 strh w0, [x1,x0,lsl 1]
5602 adrp x20, :got:mlcPageToSlcPageTbl
5606 ldr x0, [x20, #:got_lo12:mlcPageToSlcPageTbl]
5609 adrp x2, :got:slcPageToMlcPageTbl
5617 adrp x3, :got:slcPageToMlcPageTbl
5630 ldr x1, [x3, #:got_lo12:slcPageToMlcPageTbl]
5631 strh w2, [x1,x0,lsl 1]
5641 adrp x4, :got:slcPageToMlcPageTbl
5643 ldr x3, [x4, #:got_lo12:slcPageToMlcPageTbl]
5648 strh w1, [x3,x0,lsl 1]
5660 adrp x4, :got:slcPageToMlcPageTbl
5673 ldr x1, [x4, #:got_lo12:slcPageToMlcPageTbl]
5674 strh w2, [x1,x0,lsl 1]
5682 adrp x2, :got:slcPageToMlcPageTbl
5686 ldr x2, [x2, #:got_lo12:slcPageToMlcPageTbl]
5720 adrp x4, :got:slcPageToMlcPageTbl
5726 add w0, w3, w3, lsl 1
5734 ldr x1, [x4, #:got_lo12:slcPageToMlcPageTbl]
5735 strh w0, [x1,x2,lsl 1]
5743 ldr x1, [x2, #:got_lo12:slcPageToMlcPageTbl]
5744 ldr x3, [x20, #:got_lo12:mlcPageToSlcPageTbl]
5745 ldrh w1, [x1,x0,lsl 1]
5747 strh w1, [x3,w1,sxtw 1]
5750 ldp x19, x20, [sp,16]
5751 ldp x29, x30, [sp], 32
5753 .size BuildFlashLsbPageTable, .-BuildFlashLsbPageTable
5755 .global FlashDieInfoInit
5756 .type FlashDieInfoInit, %function
5758 stp x29, x30, [sp, -96]!
5760 stp x19, x20, [sp,16]
5761 adrp x19, :got:gNandMaxDie
5762 stp x21, x22, [sp,32]
5763 stp x23, x24, [sp,48]
5764 ldr x0, [x19, #:got_lo12:gNandMaxDie]
5765 adrp x23, :got:gNandMaxChip
5766 stp x25, x26, [sp,64]
5767 stp x27, x28, [sp,80]
5769 adrp x22, :got:gBlockPageAlignSize
5770 ldr x0, [x23, #:got_lo12:gNandMaxChip]
5772 adrp x0, :got:gNandParaInfo
5773 ldr x0, [x0, #:got_lo12:gNandParaInfo]
5777 ldr x0, [x22, #:got_lo12:gBlockPageAlignSize]
5783 ldr x1, [x22, #:got_lo12:gBlockPageAlignSize]
5787 ldr x0, [x22, #:got_lo12:gBlockPageAlignSize]
5792 adrp x20, :got:DieCsIndex
5795 adrp x21, :got:DieAddrs
5797 adrp x27, :got:gpNandParaInfo
5798 ldr x0, [x20, #:got_lo12:DieCsIndex]
5799 adrp x28, :got:IDByte
5801 ldr x0, [x21, #:got_lo12:DieAddrs]
5805 adrp x0, :got:gDieOp
5808 ldr x0, [x0, #:got_lo12:gDieOp]
5811 ldr x0, [x27, #:got_lo12:gpNandParaInfo]
5812 adrp x24, :got:gpNandParaInfo
5813 ldr x1, [x28, #:got_lo12:IDByte]
5814 adrp x26, :got:IDByte
5816 add x1, x1, x25, lsl 3
5821 ldr x2, [x19, #:got_lo12:gNandMaxDie]
5822 ldr x3, [x21, #:got_lo12:DieAddrs]
5824 str w0, [x3,w1,sxtw 2]
5827 ldr x0, [x20, #:got_lo12:DieCsIndex]
5828 strb w25, [x0,w1,sxtw]
5833 ldr x0, [x19, #:got_lo12:gNandMaxDie]
5834 ldr x23, [x23, #:got_lo12:gNandMaxChip]
5837 ldr x0, [x24, #:got_lo12:gpNandParaInfo]
5843 ldr x24, [x24, #:got_lo12:gpNandParaInfo]
5844 adrp x1, :got:gTotleBlock
5845 ldr x19, [x19, #:got_lo12:gNandMaxDie]
5848 ldr x1, [x1, #:got_lo12:gTotleBlock]
5854 ldp x19, x20, [sp,16]
5855 ldp x21, x22, [sp,32]
5856 ldp x23, x24, [sp,48]
5857 ldp x25, x26, [sp,64]
5858 ldp x27, x28, [sp,80]
5859 ldp x29, x30, [sp], 96
5864 ldr x25, [x24, #:got_lo12:gpNandParaInfo]
5865 ldr x1, [x26, #:got_lo12:IDByte]
5867 add x1, x1, x23, lsl 3
5872 ldr x0, [x19, #:got_lo12:gNandMaxDie]
5874 ldr x1, [x22, #:got_lo12:gBlockPageAlignSize]
5883 ldr x1, [x21, #:got_lo12:DieAddrs]
5884 str w0, [x1,w4,sxtw 2]
5888 str w0, [x1,w4,sxtw 2]
5890 ldr x0, [x19, #:got_lo12:gNandMaxDie]
5893 ldr x0, [x20, #:got_lo12:DieCsIndex]
5900 .size FlashDieInfoInit, .-FlashDieInfoInit
5902 .global ReadFlashInfo
5903 .type ReadFlashInfo, %function
5905 stp x29, x30, [sp, -32]!
5912 adrp x2, :got:gpNandParaInfo
5913 adrp x1, :got:gBlockPageAlignSize
5914 adrp x4, :got:DieCsIndex
5916 ldr x2, [x2, #:got_lo12:gpNandParaInfo]
5917 ldr x1, [x1, #:got_lo12:gBlockPageAlignSize]
5921 adrp x1, :got:gNandFlashEccBits
5925 ldr x1, [x1, #:got_lo12:gNandFlashEccBits]
5944 adrp x0, :got:gNandMaxDie
5946 ldr x0, [x0, #:got_lo12:gNandMaxDie]
5952 ldr x1, [x4, #:got_lo12:DieCsIndex]
5962 ldp x29, x30, [sp], 32
5964 .size ReadFlashInfo, .-ReadFlashInfo
5967 .type FtlMemInit, %function
5969 adrp x0, :got:g_SlcPartLbaEndSector
5971 stp x29, x30, [sp, -224]!
5973 ldr x0, [x0, #:got_lo12:g_SlcPartLbaEndSector]
5974 stp x19, x20, [sp,16]
5975 stp x23, x24, [sp,48]
5976 stp x21, x22, [sp,32]
5977 stp x25, x26, [sp,64]
5978 stp x27, x28, [sp,80]
5980 adrp x0, :got:g_all_blk_used_slc_mode
5981 adrp x20, :got:c_ftl_nand_planes_num
5982 ldr x0, [x0, #:got_lo12:g_all_blk_used_slc_mode]
5984 adrp x0, :got:g_GlobalSysVersion
5985 ldr x0, [x0, #:got_lo12:g_GlobalSysVersion]
5987 adrp x0, :got:g_GlobalDataVersion
5988 ldr x0, [x0, #:got_lo12:g_GlobalDataVersion]
5990 adrp x0, :got:g_totle_gc_page_count
5991 ldr x0, [x0, #:got_lo12:g_totle_gc_page_count]
5993 adrp x0, :got:g_totle_write_page_count
5994 ldr x0, [x0, #:got_lo12:g_totle_write_page_count]
5996 adrp x0, :got:g_totle_discard_page_count
5997 ldr x0, [x0, #:got_lo12:g_totle_discard_page_count]
5999 adrp x0, :got:g_totle_cache_write_count
6000 ldr x0, [x0, #:got_lo12:g_totle_cache_write_count]
6002 adrp x0, :got:g_totle_l2p_write_count
6003 ldr x0, [x0, #:got_lo12:g_totle_l2p_write_count]
6005 adrp x0, :got:g_totle_read_page_count
6006 ldr x0, [x0, #:got_lo12:g_totle_read_page_count]
6008 adrp x0, :got:g_totle_mlc_erase_count
6009 ldr x0, [x0, #:got_lo12:g_totle_mlc_erase_count]
6011 adrp x0, :got:g_totle_slc_erase_count
6012 ldr x0, [x0, #:got_lo12:g_totle_slc_erase_count]
6014 adrp x0, :got:g_totle_sys_slc_erase_count
6015 ldr x0, [x0, #:got_lo12:g_totle_sys_slc_erase_count]
6017 adrp x0, :got:g_max_erase_count
6018 ldr x0, [x0, #:got_lo12:g_max_erase_count]
6020 adrp x0, :got:g_min_erase_count
6021 ldr x0, [x0, #:got_lo12:g_min_erase_count]
6023 adrp x0, :got:g_in_gc_progress
6024 ldr x0, [x0, #:got_lo12:g_in_gc_progress]
6026 adrp x0, :got:g_in_swl_replace
6027 ldr x0, [x0, #:got_lo12:g_in_swl_replace]
6029 adrp x0, :got:g_gc_head_data_block
6030 ldr x0, [x0, #:got_lo12:g_gc_head_data_block]
6032 adrp x0, :got:g_gc_head_data_block_count
6034 ldr x0, [x0, #:got_lo12:g_gc_head_data_block_count]
6036 adrp x0, :got:g_gc_skip_write_count
6037 ldr x0, [x0, #:got_lo12:g_gc_skip_write_count]
6039 adrp x0, :got:g_cur_erase_blk
6040 ldr x0, [x0, #:got_lo12:g_cur_erase_blk]
6042 adrp x0, :got:g_gc_next_blk
6043 ldr x0, [x0, #:got_lo12:g_gc_next_blk]
6045 adrp x0, :got:g_gc_next_blk_1
6046 ldr x0, [x0, #:got_lo12:g_gc_next_blk_1]
6048 adrp x0, :got:g_gc_free_blk_threshold
6050 ldr x0, [x0, #:got_lo12:g_gc_free_blk_threshold]
6052 adrp x0, :got:g_gc_merge_free_blk_threshold
6054 ldr x0, [x0, #:got_lo12:g_gc_merge_free_blk_threshold]
6056 adrp x0, :got:g_gc_blk_index
6057 adrp x1, :got:c_wr_page_buf_num
6059 ldr x0, [x0, #:got_lo12:g_gc_blk_index]
6061 adrp x0, :got:g_gc_bad_block_temp_num
6062 ldr x0, [x0, #:got_lo12:g_gc_bad_block_temp_num]
6064 adrp x0, :got:g_gc_bad_block_gc_index
6065 ldr x0, [x0, #:got_lo12:g_gc_bad_block_gc_index]
6067 adrp x0, :got:c_ftl_nand_sec_pre_page
6068 ldr x3, [x1, #:got_lo12:c_wr_page_buf_num]
6069 ldr x0, [x0, #:got_lo12:c_ftl_nand_sec_pre_page]
6074 ldr x0, [x20, #:got_lo12:c_ftl_nand_planes_num]
6081 adrp x0, :got:g_wr_page_num
6082 adrp x19, :got:c_ftl_nand_page_pre_super_blk
6084 adrp x28, :got:req_gc_dst
6085 adrp x27, :got:p_sys_data_buf
6086 adrp x26, :got:p_sys_data_buf_1
6087 ldr x0, [x0, #:got_lo12:g_wr_page_num]
6088 adrp x25, :got:p_vendor_data_buf
6089 adrp x24, :got:p_gc_data_buf
6091 ldr x19, [x19, #:got_lo12:c_ftl_nand_page_pre_super_blk]
6095 adrp x8, :got:p_gc_blk_tbl
6097 ldr x1, [x8, #:got_lo12:p_gc_blk_tbl]
6103 adrp x7, :got:p_gc_page_info
6105 ldr x1, [x7, #:got_lo12:p_gc_page_info]
6107 ldr x20, [x20, #:got_lo12:c_ftl_nand_planes_num]
6113 adrp x6, :got:req_read
6115 ldr x1, [x6, #:got_lo12:req_read]
6119 ldr x1, [x28, #:got_lo12:req_gc_dst]
6123 adrp x5, :got:req_prgm
6125 ldr x1, [x5, #:got_lo12:req_prgm]
6129 adrp x4, :got:req_erase
6131 ldr x1, [x4, #:got_lo12:req_erase]
6135 adrp x3, :got:req_gc
6137 ldr x1, [x3, #:got_lo12:req_gc]
6139 ldr x22, [x23, #:got_lo12:c_wr_page_buf_num]
6143 adrp x2, :got:req_wr_io
6144 adrp x12, :got:c_ftl_nand_byte_pre_page
6145 adrp x9, :got:c_gc_page_buf_num
6146 ldr x2, [x2, #:got_lo12:req_wr_io]
6149 ldr x12, [x12, #:got_lo12:c_ftl_nand_byte_pre_page]
6150 ldr x23, [x9, #:got_lo12:c_gc_page_buf_num]
6158 ldr x2, [x27, #:got_lo12:p_sys_data_buf]
6162 ldr x2, [x26, #:got_lo12:p_sys_data_buf_1]
6166 ldr x2, [x25, #:got_lo12:p_vendor_data_buf]
6171 ldr x2, [x24, #:got_lo12:p_gc_data_buf]
6176 adrp x2, :got:p_wr_io_data_buf
6177 ldr x2, [x2, #:got_lo12:p_wr_io_data_buf]
6181 adrp x1, :got:p_io_data_buf_0
6182 ldr x2, [x1, #:got_lo12:p_io_data_buf_0]
6186 adrp x1, :got:p_io_data_buf_1
6187 ldr x2, [x1, #:got_lo12:p_io_data_buf_1]
6194 adrp x1, :got:gp_gc_page_buf_info
6195 ldr x2, [x1, #:got_lo12:gp_gc_page_buf_info]
6197 adrp x2, :got:c_ftl_nand_byte_pre_oob
6198 ldr x21, [x2, #:got_lo12:c_ftl_nand_byte_pre_oob]
6203 adrp x1, :got:p_sys_spare_buf
6204 ldr x10, [x1, #:got_lo12:p_sys_spare_buf]
6208 adrp x1, :got:p_io_spare_buf
6209 ldr x10, [x1, #:got_lo12:p_io_spare_buf]
6213 adrp x23, :got:p_io_data_buf_0
6216 adrp x15, :got:p_gc_spare_buf
6219 adrp x21, :got:gp_gc_page_buf_info
6220 ldr x9, [x15, #:got_lo12:p_gc_spare_buf]
6223 adrp x22, :got:p_io_data_buf_1
6226 adrp x1, :got:p_wr_io_spare_buf
6227 adrp x13, :got:c_ftl_nand_blk_pre_plane
6228 ldr x1, [x1, #:got_lo12:p_wr_io_spare_buf]
6230 adrp x1, :got:g_ect_tbl_info_size
6231 ldr x19, [x13, #:got_lo12:c_ftl_nand_blk_pre_plane]
6232 ldr x20, [x1, #:got_lo12:g_ect_tbl_info_size]
6238 adrp x2, :got:p_swl_mul_table
6239 ldr x2, [x2, #:got_lo12:p_swl_mul_table]
6247 adrp x1, :got:gp_ect_tbl_info
6248 adrp x14, :got:p_erase_count_table
6250 ldr x1, [x1, #:got_lo12:gp_ect_tbl_info]
6253 ldr x1, [x14, #:got_lo12:p_erase_count_table]
6259 adrp x2, :got:p_valid_page_count_check_table
6260 ldr x2, [x2, #:got_lo12:p_valid_page_count_check_table]
6264 adrp x9, :got:p_valid_page_count_table
6265 adrp x16, :got:c_ftl_nand_max_map_blks
6267 ldr x1, [x9, #:got_lo12:p_valid_page_count_table]
6269 ldr x16, [x16, #:got_lo12:c_ftl_nand_max_map_blks]
6275 adrp x11, :got:p_map_block_table
6277 ldr x2, [x11, #:got_lo12:p_map_block_table]
6281 adrp x10, :got:p_map_block_valid_page_count
6283 ldr x1, [x10, #:got_lo12:p_map_block_valid_page_count]
6285 adrp x1, :got:c_ftl_nand_max_vendor_blks
6286 ldr x20, [x1, #:got_lo12:c_ftl_nand_max_vendor_blks]
6290 adrp x2, :got:p_vendor_block_table
6291 ldr x2, [x2, #:got_lo12:p_vendor_block_table]
6296 adrp x2, :got:p_vendor_block_valid_page_count
6297 ldr x2, [x2, #:got_lo12:p_vendor_block_valid_page_count]
6300 adrp x20, :got:p_sys_spare_buf
6303 adrp x1, :got:p_vendor_block_ver_table
6304 ldr x1, [x1, #:got_lo12:p_vendor_block_ver_table]
6306 adrp x1, :got:c_ftl_nand_vendor_region_num
6307 ldr x1, [x1, #:got_lo12:c_ftl_nand_vendor_region_num]
6312 adrp x2, :got:p_vendor_region_ppn_table
6314 ldr x2, [x2, #:got_lo12:p_vendor_region_ppn_table]
6320 adrp x0, :got:c_ftl_nand_map_region_num
6321 ldr x0, [x0, #:got_lo12:c_ftl_nand_map_region_num]
6325 adrp x2, :got:p_map_region_ppn_table
6328 ldr x1, [x2, #:got_lo12:p_map_region_ppn_table]
6333 adrp x1, :got:p_map_block_ver_table
6335 ldr x16, [x1, #:got_lo12:p_map_block_ver_table]
6337 adrp x16, :got:c_ftl_nand_l2pmap_ram_region_num
6338 ldr x16, [x16, #:got_lo12:c_ftl_nand_l2pmap_ram_region_num]
6343 adrp x17, :got:p_l2p_ram_map
6346 ldr x17, [x17, #:got_lo12:p_l2p_ram_map]
6352 adrp x12, :got:p_l2p_map_buf
6353 ldr x12, [x12, #:got_lo12:p_l2p_map_buf]
6357 adrp x19, :got:p_io_spare_buf
6360 adrp x12, :got:p_data_block_list_table
6361 adrp x16, :got:c_ftl_nand_bbm_buf_size
6362 adrp x17, :got:c_ftl_nand_die_num
6363 ldr x12, [x12, #:got_lo12:p_data_block_list_table]
6365 adrp x0, :got:c_ftl_nand_blks_per_die
6366 ldr x16, [x16, #:got_lo12:c_ftl_nand_bbm_buf_size]
6367 ldr x0, [x0, #:got_lo12:c_ftl_nand_blks_per_die]
6373 ldr x17, [x17, #:got_lo12:c_ftl_nand_die_num]
6379 adrp x13, :got:gBbtInfo
6383 ldr x12, [x13, #:got_lo12:gBbtInfo]
6408 ldr x14, [x15, #:got_lo12:gBbtInfo]
6411 add x14, x14, x16, uxtw 2
6418 ldr x12, [x13, #:got_lo12:gBbtInfo]
6419 add x12, x12, x0, uxtw 3
6424 ldr x11, [x11, #:got_lo12:p_map_block_table]
6430 add x0, x0, :lo12:.LC78
6431 add x1, x1, :lo12:.LANCHOR1
6436 ldr x10, [x10, #:got_lo12:p_map_block_valid_page_count]
6439 ldr x2, [x2, #:got_lo12:p_map_region_ppn_table]
6442 ldr x1, [x1, #:got_lo12:p_map_block_ver_table]
6445 adrp x0, :got:p_l2p_ram_map
6446 ldr x0, [x0, #:got_lo12:p_l2p_ram_map]
6449 adrp x0, :got:p_l2p_map_buf
6450 ldr x0, [x0, #:got_lo12:p_l2p_map_buf]
6453 adrp x0, :got:p_data_block_list_table
6454 ldr x0, [x0, #:got_lo12:p_data_block_list_table]
6457 adrp x0, :got:gBbtInfo
6458 ldr x0, [x0, #:got_lo12:gBbtInfo]
6461 ldr x9, [x9, #:got_lo12:p_valid_page_count_table]
6464 ldr x8, [x8, #:got_lo12:p_gc_blk_tbl]
6467 ldr x7, [x7, #:got_lo12:p_gc_page_info]
6470 ldr x6, [x6, #:got_lo12:req_read]
6473 ldr x5, [x5, #:got_lo12:req_prgm]
6476 ldr x4, [x4, #:got_lo12:req_erase]
6479 ldr x3, [x3, #:got_lo12:req_gc]
6482 ldr x28, [x28, #:got_lo12:req_gc_dst]
6485 ldr x27, [x27, #:got_lo12:p_sys_data_buf]
6488 ldr x26, [x26, #:got_lo12:p_sys_data_buf_1]
6491 ldr x25, [x25, #:got_lo12:p_vendor_data_buf]
6494 ldr x24, [x24, #:got_lo12:p_gc_data_buf]
6497 ldr x23, [x23, #:got_lo12:p_io_data_buf_0]
6500 ldr x22, [x22, #:got_lo12:p_io_data_buf_1]
6503 ldr x21, [x21, #:got_lo12:gp_gc_page_buf_info]
6506 ldr x20, [x20, #:got_lo12:p_sys_spare_buf]
6509 ldr x19, [x19, #:got_lo12:p_io_spare_buf]
6513 ldr x15, [x0, #:got_lo12:p_gc_spare_buf]
6517 ldr x14, [x0, #:got_lo12:p_erase_count_table]
6520 adrp x0, :got:p_swl_mul_table
6521 ldr x0, [x0, #:got_lo12:p_swl_mul_table]
6524 adrp x0, :got:p_vendor_block_table
6525 ldr x0, [x0, #:got_lo12:p_vendor_block_table]
6528 adrp x0, :got:p_vendor_block_valid_page_count
6529 ldr x0, [x0, #:got_lo12:p_vendor_block_valid_page_count]
6532 adrp x0, :got:p_vendor_block_ver_table
6533 ldr x0, [x0, #:got_lo12:p_vendor_block_ver_table]
6536 adrp x0, :got:p_vendor_region_ppn_table
6537 ldr x0, [x0, #:got_lo12:p_vendor_region_ppn_table]
6542 ldp x19, x20, [sp,16]
6543 ldp x21, x22, [sp,32]
6544 ldp x23, x24, [sp,48]
6545 ldp x25, x26, [sp,64]
6546 ldp x27, x28, [sp,80]
6547 ldp x29, x30, [sp], 224
6549 .size FtlMemInit, .-FtlMemInit
6551 .global FtlBbt2Bitmap
6552 .type FtlBbt2Bitmap, %function
6554 stp x29, x30, [sp, -32]!
6556 stp x19, x20, [sp,16]
6558 adrp x1, :got:c_ftl_nand_bbm_buf_size
6561 ldr x1, [x1, #:got_lo12:c_ftl_nand_bbm_buf_size]
6583 ldp x19, x20, [sp,16]
6584 ldp x29, x30, [sp], 32
6586 .size FtlBbt2Bitmap, .-FtlBbt2Bitmap
6588 .global FtlBbtMemInit
6589 .type FtlBbtMemInit, %function
6591 adrp x0, :got:gBbtInfo
6593 stp x29, x30, [sp, -16]!
6596 ldr x0, [x0, #:got_lo12:gBbtInfo]
6602 ldp x29, x30, [sp], 16
6604 .size FtlBbtMemInit, .-FtlBbtMemInit
6606 .global FtlFreeSysBlkQueueInit
6607 .type FtlFreeSysBlkQueueInit, %function
6608 FtlFreeSysBlkQueueInit:
6609 adrp x1, :got:gSysFreeQueue
6611 stp x29, x30, [sp, -16]!
6613 ldr x1, [x1, #:got_lo12:gSysFreeQueue]
6622 ldp x29, x30, [sp], 16
6624 .size FtlFreeSysBlkQueueInit, .-FtlFreeSysBlkQueueInit
6626 .global ftl_free_no_use_map_blk
6627 .type ftl_free_no_use_map_blk, %function
6628 ftl_free_no_use_map_blk:
6629 stp x29, x30, [sp, -96]!
6632 stp x19, x20, [sp,16]
6633 stp x21, x22, [sp,32]
6634 stp x23, x24, [sp,48]
6635 stp x25, x26, [sp,64]
6677 adrp x27, :got:c_ftl_nand_page_pre_slc_blk
6686 ldr x0, [x27, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
6691 strh w0, [x21,x22,lsl 1]
6704 bl FtlFreeSysBlkQueueIn
6716 ldp x19, x20, [sp,16]
6717 ldp x21, x22, [sp,32]
6718 ldp x23, x24, [sp,48]
6719 ldp x25, x26, [sp,64]
6720 ldp x29, x30, [sp], 96
6722 .size ftl_free_no_use_map_blk, .-ftl_free_no_use_map_blk
6724 .global FtlL2PDataInit
6725 .type FtlL2PDataInit, %function
6727 stp x29, x30, [sp, -64]!
6729 stp x21, x22, [sp,32]
6730 adrp x22, :got:c_ftl_nand_max_map_blks
6732 adrp x23, :got:p_map_block_valid_page_count
6733 adrp x21, :got:c_ftl_nand_byte_pre_page
6734 stp x19, x20, [sp,16]
6735 ldr x1, [x22, #:got_lo12:c_ftl_nand_max_map_blks]
6736 adrp x19, :got:c_ftl_nand_l2pmap_ram_region_num
6737 ldr x0, [x23, #:got_lo12:p_map_block_valid_page_count]
6738 adrp x20, :got:p_l2p_map_buf
6744 ldr x1, [x21, #:got_lo12:c_ftl_nand_byte_pre_page]
6745 ldr x0, [x20, #:got_lo12:p_l2p_map_buf]
6747 ldr x1, [x19, #:got_lo12:c_ftl_nand_l2pmap_ram_region_num]
6755 adrp x5, :got:p_l2p_ram_map
6758 ldr x0, [x19, #:got_lo12:c_ftl_nand_l2pmap_ram_region_num]
6762 ldr x2, [x5, #:got_lo12:p_l2p_ram_map]
6770 ldr x4, [x20, #:got_lo12:p_l2p_map_buf]
6772 ldr x0, [x21, #:got_lo12:c_ftl_nand_byte_pre_page]
6784 adrp x0, :got:gL2pMapInfo
6786 ldr x0, [x0, #:got_lo12:gL2pMapInfo]
6789 ldr x1, [x22, #:got_lo12:c_ftl_nand_max_map_blks]
6794 adrp x1, :got:g_totle_map_block
6795 ldr x1, [x1, #:got_lo12:g_totle_map_block]
6798 adrp x1, :got:c_ftl_nand_map_region_num
6799 ldr x1, [x1, #:got_lo12:c_ftl_nand_map_region_num]
6802 adrp x1, :got:p_map_block_table
6803 ldr x1, [x1, #:got_lo12:p_map_block_table]
6806 adrp x1, :got:p_map_block_ver_table
6807 ldr x1, [x1, #:got_lo12:p_map_block_ver_table]
6810 ldr x1, [x3, #:got_lo12:p_map_block_valid_page_count]
6813 adrp x1, :got:p_map_region_ppn_table
6814 ldr x1, [x1, #:got_lo12:p_map_region_ppn_table]
6817 ldp x19, x20, [sp,16]
6818 ldp x21, x22, [sp,32]
6820 ldp x29, x30, [sp], 64
6822 .size FtlL2PDataInit, .-FtlL2PDataInit
6824 .global FtlVariablesInit
6825 .type FtlVariablesInit, %function
6827 adrp x0, :got:g_req_cache
6829 stp x29, x30, [sp, -32]!
6831 ldr x0, [x0, #:got_lo12:g_req_cache]
6833 adrp x19, :got:c_ftl_nand_blk_pre_plane
6835 adrp x0, :got:g_tmp_data_superblock_id
6836 ldr x0, [x0, #:got_lo12:g_tmp_data_superblock_id]
6838 adrp x0, :got:g_totle_swl_count
6840 ldr x0, [x0, #:got_lo12:g_totle_swl_count]
6842 adrp x0, :got:ftl_gc_temp_power_lost_recovery_flag
6843 ldr x0, [x0, #:got_lo12:ftl_gc_temp_power_lost_recovery_flag]
6845 adrp x0, :got:g_recovery_page_min_ver
6846 ldr x0, [x0, #:got_lo12:g_recovery_page_min_ver]
6848 adrp x0, :got:g_inkDie_check_enable
6849 adrp x1, :got:c_ftl_nand_max_vendor_blks
6850 ldr x0, [x0, #:got_lo12:g_inkDie_check_enable]
6852 adrp x0, :got:g_totle_vendor_block
6853 ldr x0, [x0, #:got_lo12:g_totle_vendor_block]
6855 adrp x0, :got:p_vendor_block_table
6856 ldr x1, [x1, #:got_lo12:c_ftl_nand_max_vendor_blks]
6857 ldr x0, [x0, #:got_lo12:p_vendor_block_table]
6863 ldr x19, [x19, #:got_lo12:c_ftl_nand_blk_pre_plane]
6864 adrp x0, :got:p_erase_count_table
6867 ldr x0, [x0, #:got_lo12:p_erase_count_table]
6871 adrp x0, :got:p_swl_mul_table
6875 ldr x0, [x0, #:got_lo12:p_swl_mul_table]
6878 adrp x0, :got:g_sys_save_data
6881 ldr x0, [x0, #:got_lo12:g_sys_save_data]
6883 adrp x0, :got:g_sys_ext_data
6886 ldr x0, [x0, #:got_lo12:g_sys_ext_data]
6892 ldp x29, x30, [sp], 32
6894 .size FtlVariablesInit, .-FtlVariablesInit
6896 .global SupperBlkListInit
6897 .type SupperBlkListInit, %function
6899 stp x29, x30, [sp, -112]!
6900 adrp x0, :got:c_ftl_nand_blk_pre_plane
6903 stp x23, x24, [sp,48]
6904 ldr x0, [x0, #:got_lo12:c_ftl_nand_blk_pre_plane]
6905 adrp x23, :got:p_data_block_list_table
6906 stp x19, x20, [sp,16]
6907 stp x21, x22, [sp,32]
6908 stp x25, x26, [sp,64]
6909 stp x27, x28, [sp,80]
6910 ldr x1, [x23, #:got_lo12:p_data_block_list_table]
6911 adrp x21, :got:g_num_data_superblocks
6913 adrp x20, :got:g_num_free_superblocks
6915 adrp x25, :got:c_ftl_nand_planes_num
6921 adrp x26, :got:p_plane_order_table
6922 adrp x27, :got:c_ftl_nand_page_pre_blk
6925 adrp x0, :got:p_free_data_block_list_head
6926 ldr x0, [x0, #:got_lo12:p_free_data_block_list_head]
6928 adrp x0, :got:p_data_block_list_head
6929 ldr x0, [x0, #:got_lo12:p_data_block_list_head]
6931 adrp x0, :got:p_data_block_list_tail
6932 ldr x0, [x0, #:got_lo12:p_data_block_list_tail]
6934 ldr x0, [x21, #:got_lo12:g_num_data_superblocks]
6936 ldr x0, [x20, #:got_lo12:g_num_free_superblocks]
6939 adrp x0, :got:c_ftl_nand_data_blks_per_plane
6940 ldr x0, [x0, #:got_lo12:c_ftl_nand_data_blks_per_plane]
6947 ldr x0, [x25, #:got_lo12:c_ftl_nand_planes_num]
6951 ldr x0, [x26, #:got_lo12:p_plane_order_table]
6955 ldrb w0, [x0,w4,sxtw]
6961 ldr x0, [x27, #:got_lo12:c_ftl_nand_page_pre_blk]
6973 ldr x1, [x23, #:got_lo12:p_data_block_list_table]
6979 adrp x0, :got:g_active_superblock
6980 ldr x0, [x0, #:got_lo12:g_active_superblock]
6984 adrp x0, :got:g_buffer_superblock
6985 ldr x0, [x0, #:got_lo12:g_buffer_superblock]
6989 adrp x0, :got:g_gc_temp_superblock
6990 ldr x0, [x0, #:got_lo12:g_gc_temp_superblock]
6994 adrp x1, :got:p_valid_page_count_table
6995 ubfiz x0, x19, 1, 16
6996 ldr x1, [x1, #:got_lo12:p_valid_page_count_table]
7015 ldr x21, [x21, #:got_lo12:g_num_data_superblocks]
7018 ldr x20, [x20, #:got_lo12:g_num_free_superblocks]
7020 ldp x19, x20, [sp,16]
7021 ldp x21, x22, [sp,32]
7022 ldp x23, x24, [sp,48]
7023 ldp x25, x26, [sp,64]
7024 ldp x27, x28, [sp,80]
7025 ldp x29, x30, [sp], 112
7027 .size SupperBlkListInit, .-SupperBlkListInit
7029 .global FtlGcPageVarInit
7030 .type FtlGcPageVarInit, %function
7032 adrp x0, :got:g_gc_blk_num
7034 stp x29, x30, [sp, -32]!
7036 ldr x0, [x0, #:got_lo12:g_gc_blk_num]
7038 adrp x19, :got:c_ftl_nand_page_pre_super_blk
7040 adrp x0, :got:g_gc_page_offset
7041 ldr x0, [x0, #:got_lo12:g_gc_page_offset]
7043 adrp x0, :got:p_gc_blk_tbl
7044 ldr x19, [x19, #:got_lo12:c_ftl_nand_page_pre_super_blk]
7045 ldr x0, [x0, #:got_lo12:p_gc_blk_tbl]
7050 adrp x0, :got:p_gc_page_info
7054 ldr x0, [x0, #:got_lo12:p_gc_page_info]
7060 ldp x29, x30, [sp], 32
7062 .size FtlGcPageVarInit, .-FtlGcPageVarInit
7065 .type ftl_memcpy, %function
7067 stp x29, x30, [sp, -16]!
7071 ldp x29, x30, [sp], 16
7073 .size ftl_memcpy, .-ftl_memcpy
7075 .global FlashGetReadRetryDefault
7076 .type FlashGetReadRetryDefault, %function
7077 FlashGetReadRetryDefault:
7078 stp x29, x30, [sp, -16]!
7085 bl HynixGetReadRetryDefault
7090 adrp x0, :got:gReadRetryInfo
7092 ldr x0, [x0, #:got_lo12:gReadRetryInfo]
7099 adrp x1, :got:SamsungRefValue
7100 ldr x1, [x1, #:got_lo12:SamsungRefValue]
7109 adrp x0, :got:gReadRetryInfo
7110 ldr x0, [x0, #:got_lo12:gReadRetryInfo]
7120 adrp x0, :got:gReadRetryInfo
7121 ldr x0, [x0, #:got_lo12:gReadRetryInfo]
7128 adrp x1, :got:ToshibaA19RefValue
7131 ldr x1, [x1, #:got_lo12:ToshibaA19RefValue]
7139 adrp x0, :got:gReadRetryInfo
7141 ldr x0, [x0, #:got_lo12:gReadRetryInfo]
7148 adrp x1, :got:Toshiba15RefValue
7149 ldr x1, [x1, #:got_lo12:Toshiba15RefValue]
7153 ldp x29, x30, [sp], 16
7155 .size FlashGetReadRetryDefault, .-FlashGetReadRetryDefault
7157 .global FlashReadIdbData
7158 .type FlashReadIdbData, %function
7160 adrp x1, :got:gNandIDataBuf
7162 stp x29, x30, [sp, -16]!
7164 ldr x1, [x1, #:got_lo12:gNandIDataBuf]
7167 ldp x29, x30, [sp], 16
7169 .size FlashReadIdbData, .-FlashReadIdbData
7171 .global FlashLoadPhyInfoInRam
7172 .type FlashLoadPhyInfoInRam, %function
7173 FlashLoadPhyInfoInRam:
7174 stp x29, x30, [sp, -64]!
7176 stp x19, x20, [sp,16]
7177 adrp x19, :got:NandFlashParaTbl
7179 stp x21, x22, [sp,32]
7181 adrp x23, :got:IDByte
7182 ldr x22, [x19, #:got_lo12:NandFlashParaTbl]
7184 ldr x1, [x23, #:got_lo12:IDByte]
7190 ldr x19, [x19, #:got_lo12:NandFlashParaTbl]
7191 ubfiz x20, x20, 5, 32
7206 add x5, x4, :lo12:.LANCHOR2
7216 adrp x0, :got:gNandOptPara
7218 add x2, x2, :lo12:.LANCHOR2
7222 ldr x0, [x0, #:got_lo12:gNandOptPara]
7224 adrp x0, :got:gNandParaInfo
7227 ldr x0, [x0, #:got_lo12:gNandParaInfo]
7235 ldp x19, x20, [sp,16]
7236 ldp x21, x22, [sp,32]
7237 ldp x29, x30, [sp], 64
7239 .size FlashLoadPhyInfoInRam, .-FlashLoadPhyInfoInRam
7241 .global NandcCopy1KB
7242 .type NandcCopy1KB, %function
7244 stp x29, x30, [sp, -48]!
7247 stp x19, x20, [sp,16]
7271 orr w0, w0, w1, lsl 8
7275 orr w0, w0, w1, lsl 24
7276 str w0, [x21,w19,sxtw 2]
7290 ldr w0, [x21,w19,sxtw 2]
7299 ldp x19, x20, [sp,16]
7301 ldp x29, x30, [sp], 48
7303 .size NandcCopy1KB, .-NandcCopy1KB
7306 .type ftl_memcmp, %function
7308 stp x29, x30, [sp, -16]!
7312 ldp x29, x30, [sp], 16
7314 .size ftl_memcmp, .-ftl_memcmp
7316 .global FlashSramLoadStore
7317 .type FlashSramLoadStore, %function
7319 adrp x4, :got:RK29_NANDC_REG_BASE
7321 stp x29, x30, [sp, -16]!
7324 ldr x4, [x4, #:got_lo12:RK29_NANDC_REG_BASE]
7336 ldp x29, x30, [sp], 16
7338 .size FlashSramLoadStore, .-FlashSramLoadStore
7340 .global FlashCs123Init
7341 .type FlashCs123Init, %function
7344 .size FlashCs123Init, .-FlashCs123Init
7346 .global rk_nand_de_init
7347 .type rk_nand_de_init, %function
7349 stp x29, x30, [sp, -16]!
7352 ldp x29, x30, [sp], 16
7354 .size rk_nand_de_init, .-rk_nand_de_init
7356 .global rk_nand_suspend
7357 .type rk_nand_suspend, %function
7359 stp x29, x30, [sp, -16]!
7362 ldp x29, x30, [sp], 16
7364 .size rk_nand_suspend, .-rk_nand_suspend
7366 .global rk_nand_resume
7367 .type rk_nand_resume, %function
7369 stp x29, x30, [sp, -16]!
7372 ldp x29, x30, [sp], 16
7374 .size rk_nand_resume, .-rk_nand_resume
7376 .global rk_ftl_get_capacity
7377 .type rk_ftl_get_capacity, %function
7378 rk_ftl_get_capacity:
7379 stp x29, x30, [sp, -16]!
7383 ldp x29, x30, [sp], 16
7385 .size rk_ftl_get_capacity, .-rk_ftl_get_capacity
7387 .global rknand_print_hex
7388 .type rknand_print_hex, %function
7390 stp x29, x30, [sp, -96]!
7392 stp x19, x20, [sp,16]
7393 stp x21, x22, [sp,32]
7394 stp x23, x24, [sp,48]
7399 stp x25, x26, [sp,64]
7406 add x23, x23, :lo12:.LC79
7407 add x21, x21, :lo12:.LC80
7408 add x24, x24, :lo12:.LC72
7421 ldr w1, [x22,x19,lsl 2]
7426 ldrsh w1, [x22,x19,lsl 1]
7437 add x1, x1, :lo12:.LC81
7446 add x1, x1, :lo12:.LC81
7447 add x0, x0, :lo12:.LC72
7450 ldp x19, x20, [sp,16]
7451 ldp x21, x22, [sp,32]
7452 ldp x23, x24, [sp,48]
7453 ldp x25, x26, [sp,64]
7454 ldp x29, x30, [sp], 96
7456 .size rknand_print_hex, .-rknand_print_hex
7458 .global NandcXferComp
7459 .type NandcXferComp, %function
7461 stp x29, x30, [sp, -80]!
7462 adrp x1, :got:gNandChipMap
7465 stp x21, x22, [sp,32]
7466 ldr x1, [x1, #:got_lo12:gNandChipMap]
7467 adrp x21, :got:gNandcVer
7468 stp x19, x20, [sp,16]
7471 ldr x0, [x21, #:got_lo12:gNandcVer]
7478 bl wait_for_nandc_xfer_completed
7487 add x22, x22, :lo12:.LC82
7488 add x23, x23, :lo12:.LC83
7496 ldr x0, [x21, #:got_lo12:gNandcVer]
7502 and w0, w20, 16777215
7525 adrp x19, :got:gMasterInfo
7526 ldr x19, [x19, #:got_lo12:gMasterInfo]
7534 bl rknand_dma_unmap_single
7540 bl rknand_dma_unmap_single
7545 add x21, x21, :lo12:.LC84
7546 add x22, x22, :lo12:.LC83
7553 and w0, w20, 16777215
7568 adrp x0, :got:gNandcDumpWriteEn
7570 ldr x1, [x0, #:got_lo12:gNandcDumpWriteEn]
7574 bl NandcSendDumpDataStart
7576 adrp x21, :got:gMasterInfo
7577 ldr x21, [x21, #:got_lo12:gMasterInfo]
7585 bl rknand_dma_unmap_single
7591 bl rknand_dma_unmap_single
7593 ldr x0, [x20, #:got_lo12:gNandcDumpWriteEn]
7597 bl NandcSendDumpDataDone
7599 adrp x0, :got:gMasterInfo
7600 ldr x0, [x0, #:got_lo12:gMasterInfo]
7609 ldp x19, x20, [sp,16]
7610 ldp x21, x22, [sp,32]
7612 ldp x29, x30, [sp], 80
7614 .size NandcXferComp, .-NandcXferComp
7616 .global NandcXferData
7617 .type NandcXferData, %function
7619 stp x29, x30, [sp, -176]!
7621 stp x23, x24, [sp,48]
7623 adrp x0, :got:gNandChipMap
7624 stp x19, x20, [sp,16]
7626 sbfiz x1, x24, 4, 32
7627 ldr x0, [x0, #:got_lo12:gNandChipMap]
7629 stp x21, x22, [sp,32]
7630 stp x25, x26, [sp,64]
7631 stp x27, x28, [sp,80]
7655 adrp x0, :got:gNandcEccBits
7658 adrp x5, :got:gMasterInfo
7659 add x2, x21, x2, lsl 2
7660 ldr x1, [x0, #:got_lo12:gNandcEccBits]
7670 ldr x6, [x5, #:got_lo12:gMasterInfo]
7671 and x1, x1, 4294967292
7685 ldr x0, [x0, #:got_lo12:gNandcEccBits]
7688 adrp x0, :got:gNandcVer
7689 ldr x0, [x0, #:got_lo12:gNandcVer]
7699 ldr w1, [x19,x1,lsl 2]
7715 orr w2, w6, w2, lsl 5
7717 orr w1, w3, w1, lsl 5
7724 orr w3, w3, w1, lsl 5
7741 orr w2, w6, w2, lsl 5
7743 orr w1, w3, w1, lsl 5
7756 orr w3, w1, w3, lsl 5
7759 csel w22, w22, w3, cs
7780 ubfiz x0, x22, 9, 23
7785 csel w4, w27, wzr, ne
7840 orr w0, w1, w0, lsl 5
7842 csel w22, w22, w0, cs
7850 ubfiz x3, x26, 9, 23
7855 csel w4, w27, wzr, ne
7864 adrp x0, :got:gNandcVer
7865 ldr x0, [x0, #:got_lo12:gNandcVer]
7871 movk w1, 0x2, lsl 16
7880 ldp x19, x20, [sp,16]
7881 ldp x21, x22, [sp,32]
7882 ldp x23, x24, [sp,48]
7883 ldp x25, x26, [sp,64]
7884 ldp x27, x28, [sp,80]
7885 ldp x29, x30, [sp], 176
7887 .size NandcXferData, .-NandcXferData
7889 .global FlashReadRawPage
7890 .type FlashReadRawPage, %function
7892 stp x29, x30, [sp, -64]!
7895 stp x19, x20, [sp,16]
7897 adrp x0, :got:gNandParaInfo
7900 ldr x0, [x0, #:got_lo12:gNandParaInfo]
7903 adrp x0, :got:gNandIDBResBlkNum
7904 adrp x5, :got:gBlockPageAlignSize
7905 ldr x0, [x0, #:got_lo12:gNandIDBResBlkNum]
7906 ldr x5, [x5, #:got_lo12:gBlockPageAlignSize]
7912 csel w20, w20, w0, cs
7917 bl NandcWaitFlashReady
7924 bl NandcWaitFlashReady
7936 ldp x19, x20, [sp,16]
7937 ldp x29, x30, [sp], 64
7939 .size FlashReadRawPage, .-FlashReadRawPage
7941 .global FlashDdrTunningRead
7942 .type FlashDdrTunningRead, %function
7943 FlashDdrTunningRead:
7944 stp x29, x30, [sp, -112]!
7946 stp x21, x22, [sp,32]
7948 adrp x0, :got:gpNandc
7949 stp x19, x20, [sp,16]
7950 stp x23, x24, [sp,48]
7951 ldr x0, [x0, #:got_lo12:gpNandc]
7953 stp x25, x26, [sp,64]
7954 stp x27, x28, [sp,80]
7962 adrp x0, :got:gNandcVer
7963 ldr x0, [x0, #:got_lo12:gNandcVer]
7967 csel w19, w19, w0, cc
7970 bl FlashSetInterfaceMode
7976 adrp x21, :got:gFlashInterfaceMode
7981 ldr x21, [x21, #:got_lo12:gFlashInterfaceMode]
7984 bl FlashSetInterfaceMode
7995 adrp x1, :got:IDByte
7998 ldr x1, [x1, #:got_lo12:IDByte]
8002 adrp x1, :got:gNandChipMap
8004 ldr x1, [x1, #:got_lo12:gNandChipMap]
8011 adrp x3, :got:FlashDdrTunningReadCount
8012 ldr x3, [x3, #:got_lo12:FlashDdrTunningReadCount]
8073 add x0, x0, :lo12:.LC85
8081 add x0, x0, :lo12:.LC86
8089 ldp x19, x20, [sp,16]
8090 ldp x21, x22, [sp,32]
8091 ldp x23, x24, [sp,48]
8092 ldp x25, x26, [sp,64]
8093 ldp x27, x28, [sp,80]
8094 ldp x29, x30, [sp], 112
8096 .size FlashDdrTunningRead, .-FlashDdrTunningRead
8098 .global FlashReadPage
8099 .type FlashReadPage, %function
8101 stp x29, x30, [sp, -80]!
8103 stp x19, x20, [sp,16]
8107 stp x23, x24, [sp,48]
8108 stp x21, x22, [sp,32]
8116 adrp x21, :got:gNandRandomizer
8117 ldr x21, [x21, #:got_lo12:gNandRandomizer]
8129 adrp x0, :got:gpReadRetrial
8130 ldr x0, [x0, #:got_lo12:gpReadRetrial]
8143 add x0, x0, :lo12:.LC87
8150 adrp x0, :got:gFlashToggleModeEn
8151 ldr x0, [x0, #:got_lo12:gFlashToggleModeEn]
8154 adrp x0, :got:gpNandc
8159 ldr x0, [x0, #:got_lo12:gpNandc]
8163 bl FlashDdrTunningRead
8167 adrp x1, :got:gNandFlashEccBits
8168 ldr x1, [x1, #:got_lo12:gNandFlashEccBits]
8178 ldp x19, x20, [sp,16]
8179 ldp x21, x22, [sp,32]
8180 ldp x23, x24, [sp,48]
8181 ldp x29, x30, [sp], 80
8183 .size FlashReadPage, .-FlashReadPage
8185 .global FlashDdrParaScan
8186 .type FlashDdrParaScan, %function
8188 stp x29, x30, [sp, -48]!
8190 stp x19, x20, [sp,16]
8191 adrp x19, :got:gFlashInterfaceMode
8193 stp x21, x22, [sp,32]
8195 ldr x22, [x19, #:got_lo12:gFlashInterfaceMode]
8197 bl FlashSetInterfaceMode
8205 bl FlashDdrTunningRead
8214 adrp x19, :got:gFlashToggleModeEn
8219 ldr x0, [x1, #:got_lo12:gFlashInterfaceMode]
8223 bl FlashSetInterfaceMode
8226 ldr x19, [x19, #:got_lo12:gFlashToggleModeEn]
8230 ldr x19, [x19, #:got_lo12:gFlashToggleModeEn]
8235 ldp x19, x20, [sp,16]
8236 ldp x21, x22, [sp,32]
8237 ldp x29, x30, [sp], 48
8239 .size FlashDdrParaScan, .-FlashDdrParaScan
8241 .global FlashLoadPhyInfo
8242 .type FlashLoadPhyInfo, %function
8244 stp x29, x30, [sp, -144]!
8247 stp x19, x20, [sp,16]
8248 adrp x20, :got:gNandParaInfo
8256 stp x21, x22, [sp,32]
8258 adrp x22, :got:gFlashPageBuffer0
8259 ldr x0, [x20, #:got_lo12:gNandParaInfo]
8260 adrp x21, :got:gpFlashSaveInfo
8261 stp x23, x24, [sp,48]
8262 stp x25, x26, [sp,64]
8263 stp x27, x28, [sp,80]
8264 ldr x1, [x22, #:got_lo12:gFlashPageBuffer0]
8265 adrp x23, :got:gNandFlashInfoBlockAddr
8270 ldr x0, [x21, #:got_lo12:gpFlashSaveInfo]
8271 adrp x26, :got:gNandOptPara
8273 adrp x27, :got:gReadRetryInfo
8276 ldr x0, [x23, #:got_lo12:gNandFlashInfoBlockAddr]
8285 ldr x6, [x22, #:got_lo12:gFlashPageBuffer0]
8323 movk w1, 0x4e41, lsl 16
8324 ldr x28, [x0, #:got_lo12:gpFlashSaveInfo]
8330 ldr x20, [x20, #:got_lo12:gNandParaInfo]
8331 adrp x0, :got:gNandFlashIdbBlockAddr
8333 ldr x0, [x0, #:got_lo12:gNandFlashIdbBlockAddr]
8339 ldr x21, [x20, #:got_lo12:gNandParaInfo]
8347 ldr x0, [x26, #:got_lo12:gNandOptPara]
8352 ldr x0, [x27, #:got_lo12:gReadRetryInfo]
8355 adrp x1, :got:gFlashToggleModeEn
8357 ldr x1, [x1, #:got_lo12:gFlashToggleModeEn]
8361 ldr x0, [x23, #:got_lo12:gNandFlashInfoBlockAddr]
8364 adrp x0, :got:gNandFlashIdbBlockAddr
8366 ldr x0, [x0, #:got_lo12:gNandFlashIdbBlockAddr]
8374 adrp x0, :got:gNandIDBResBlkNumSaveInFlash
8377 ldr x0, [x0, #:got_lo12:gNandIDBResBlkNumSaveInFlash]
8382 ldp x19, x20, [sp,16]
8383 ldp x21, x22, [sp,32]
8384 ldp x23, x24, [sp,48]
8385 ldp x25, x26, [sp,64]
8386 ldp x27, x28, [sp,80]
8387 ldp x29, x30, [sp], 144
8389 .size FlashLoadPhyInfo, .-FlashLoadPhyInfo
8391 .global ToshibaReadRetrial
8392 .type ToshibaReadRetrial, %function
8394 stp x29, x30, [sp, -96]!
8396 stp x23, x24, [sp,48]
8399 stp x19, x20, [sp,16]
8400 stp x25, x26, [sp,64]
8401 stp x21, x22, [sp,32]
8402 stp x27, x28, [sp,80]
8406 bl NandcWaitFlashReady
8408 adrp x20, :got:g_retryMode
8412 ldr x0, [x20, #:got_lo12:g_retryMode]
8418 adrp x0, :got:gFlashToggleModeEn
8419 ldr x0, [x0, #:got_lo12:gFlashToggleModeEn]
8434 adrp x0, :got:g_maxRetryCount
8435 ldr x0, [x0, #:got_lo12:g_maxRetryCount]
8440 ldr x0, [x20, #:got_lo12:g_retryMode]
8453 ldr x0, [x20, #:got_lo12:g_retryMode]
8457 adrp x0, :got:g_maxRetryCount
8458 ldr x0, [x0, #:got_lo12:g_maxRetryCount]
8492 adrp x0, :got:gNandFlashEccBits
8494 csel w24, w24, w28, ne
8495 ldr x0, [x0, #:got_lo12:gNandFlashEccBits]
8497 add w0, w0, w0, lsl 1
8508 ldr x20, [x20, #:got_lo12:g_retryMode]
8523 adrp x0, :got:gNandFlashEccBits
8524 ldr x0, [x0, #:got_lo12:gNandFlashEccBits]
8526 add w0, w0, w0, lsl 1
8531 csel w28, w28, w0, eq
8534 bl NandcWaitFlashReady
8540 ldp x19, x20, [sp,16]
8541 ldp x21, x22, [sp,32]
8542 ldp x23, x24, [sp,48]
8543 ldp x25, x26, [sp,64]
8544 ldp x27, x28, [sp,80]
8545 ldp x29, x30, [sp], 96
8547 .size ToshibaReadRetrial, .-ToshibaReadRetrial
8549 .global SamsungReadRetrial
8550 .type SamsungReadRetrial, %function
8552 stp x29, x30, [sp, -96]!
8554 stp x21, x22, [sp,32]
8559 stp x19, x20, [sp,16]
8560 stp x23, x24, [sp,48]
8561 stp x25, x26, [sp,64]
8564 bl NandcWaitFlashReady
8568 adrp x26, :got:g_maxRetryCount
8569 adrp x27, :got:gNandFlashEccBits
8573 ldr x0, [x26, #:got_lo12:g_maxRetryCount]
8590 csel w19, w19, w0, ne
8591 ldr x0, [x27, #:got_lo12:gNandFlashEccBits]
8593 add w2, w2, w2, lsl 1
8607 adrp x0, :got:gNandFlashEccBits
8608 ldr x0, [x0, #:got_lo12:gNandFlashEccBits]
8610 add w0, w0, w0, lsl 1
8615 csel w19, w19, w0, eq
8619 ldp x19, x20, [sp,16]
8620 ldp x21, x22, [sp,32]
8621 ldp x23, x24, [sp,48]
8622 ldp x25, x26, [sp,64]
8623 ldp x29, x30, [sp], 96
8625 .size SamsungReadRetrial, .-SamsungReadRetrial
8627 .global MicronReadRetrial
8628 .type MicronReadRetrial, %function
8630 stp x29, x30, [sp, -96]!
8632 stp x21, x22, [sp,32]
8636 stp x19, x20, [sp,16]
8637 stp x23, x24, [sp,48]
8638 stp x25, x26, [sp,64]
8639 stp x27, x28, [sp,80]
8643 bl NandcWaitFlashReady
8649 adrp x28, :got:gNandFlashEccBits
8668 ldr x1, [x28, #:got_lo12:gNandFlashEccBits]
8670 csel w20, w20, w0, ne
8672 add w2, w2, w2, lsl 1
8692 adrp x0, :got:gNandFlashEccBits
8695 ldr x0, [x0, #:got_lo12:gNandFlashEccBits]
8697 add w0, w0, w0, lsl 1
8702 csel w20, w20, w0, eq
8705 ldp x19, x20, [sp,16]
8706 ldp x21, x22, [sp,32]
8707 ldp x23, x24, [sp,48]
8708 ldp x25, x26, [sp,64]
8709 ldp x27, x28, [sp,80]
8710 ldp x29, x30, [sp], 96
8712 .size MicronReadRetrial, .-MicronReadRetrial
8714 .global HynixReadRetrial
8715 .type HynixReadRetrial, %function
8717 stp x29, x30, [sp, -112]!
8719 stp x21, x22, [sp,32]
8720 adrp x21, :got:gReadRetryInfo
8722 stp x23, x24, [sp,48]
8723 stp x27, x28, [sp,80]
8724 ldr x0, [x21, #:got_lo12:gReadRetryInfo]
8726 stp x19, x20, [sp,16]
8727 stp x25, x26, [sp,64]
8735 bl NandcWaitFlashReady
8738 adrp x4, :got:gNandFlashEccBits
8743 ldr x2, [x21, #:got_lo12:gReadRetryInfo]
8750 csel w20, w20, wzr, cc
8761 ldr x1, [x4, #:got_lo12:gNandFlashEccBits]
8763 csel w19, w19, w0, ne
8765 add w1, w1, w1, lsl 1
8776 ldr x21, [x21, #:got_lo12:gReadRetryInfo]
8777 adrp x0, :got:gNandFlashEccBits
8780 ldr x0, [x0, #:got_lo12:gNandFlashEccBits]
8782 add w0, w0, w0, lsl 1
8787 csel w19, w19, w0, eq
8790 ldp x19, x20, [sp,16]
8791 ldp x21, x22, [sp,32]
8792 ldp x23, x24, [sp,48]
8793 ldp x25, x26, [sp,64]
8794 ldp x27, x28, [sp,80]
8795 ldp x29, x30, [sp], 112
8797 .size HynixReadRetrial, .-HynixReadRetrial
8799 .global FlashProgPage
8800 .type FlashProgPage, %function
8802 stp x29, x30, [sp, -64]!
8805 stp x19, x20, [sp,16]
8807 adrp x0, :got:gNandParaInfo
8808 stp x21, x22, [sp,32]
8811 ldr x0, [x0, #:got_lo12:gNandParaInfo]
8814 adrp x0, :got:gNandIDBResBlkNum
8815 adrp x1, :got:gBlockPageAlignSize
8816 ldr x0, [x0, #:got_lo12:gNandIDBResBlkNum]
8817 ldr x1, [x1, #:got_lo12:gBlockPageAlignSize]
8823 adrp x0, :got:g_slc2KBNand
8824 ldr x0, [x0, #:got_lo12:g_slc2KBNand]
8834 bl NandcWaitFlashReady
8839 bl FlashProgFirstCmd
8848 bl FlashProgSecondCmd
8850 bl NandcWaitFlashReady
8858 ldp x19, x20, [sp,16]
8859 ldp x21, x22, [sp,32]
8860 ldp x29, x30, [sp], 64
8862 .size FlashProgPage, .-FlashProgPage
8864 .global FlashSavePhyInfo
8865 .type FlashSavePhyInfo, %function
8867 stp x29, x30, [sp, -112]!
8869 stp x23, x24, [sp,48]
8870 adrp x23, :got:gFlashPageBuffer0
8871 adrp x24, :got:gFlashPageBuffer1
8872 stp x21, x22, [sp,32]
8873 adrp x22, :got:gpFlashSaveInfo
8874 stp x19, x20, [sp,16]
8875 ldr x20, [x23, #:got_lo12:gFlashPageBuffer0]
8876 ldr x19, [x22, #:got_lo12:gpFlashSaveInfo]
8877 stp x25, x26, [sp,64]
8878 stp x27, x28, [sp,80]
8879 adrp x25, :got:gBlockPageAlignSize
8880 adrp x26, :got:gNandFlashIdbBlockAddr
8882 adrp x27, :got:gNandFlashInfoBlockAddr
8884 adrp x0, :got:gNandFlashIDBEccBits
8885 ldr x0, [x0, #:got_lo12:gNandFlashIDBEccBits]
8894 movk w0, 0x4e41, lsl 16
8897 adrp x1, :got:gNandMaxDie
8899 ldr x1, [x1, #:got_lo12:gNandMaxDie]
8903 adrp x1, :got:gNandIDBResBlkNum
8904 ldr x1, [x1, #:got_lo12:gNandIDBResBlkNum]
8907 adrp x1, :got:gFlashToggleModeEn
8908 ldr x1, [x1, #:got_lo12:gFlashToggleModeEn]
8911 adrp x1, :got:IDByte
8912 ldr x1, [x1, #:got_lo12:IDByte]
8914 adrp x1, :got:DieCsIndex
8918 ldr x1, [x1, #:got_lo12:DieCsIndex]
8920 adrp x1, :got:DieAddrs
8924 ldr x1, [x1, #:got_lo12:DieAddrs]
8926 adrp x1, :got:gNandParaInfo
8930 ldr x1, [x1, #:got_lo12:gNandParaInfo]
8932 adrp x1, :got:gNandOptPara
8936 ldr x1, [x1, #:got_lo12:gNandOptPara]
8938 adrp x1, :got:gReadRetryInfo
8942 ldr x1, [x1, #:got_lo12:gReadRetryInfo]
8952 ldr x0, [x24, #:got_lo12:gFlashPageBuffer1]
8958 ldr x21, [x25, #:got_lo12:gBlockPageAlignSize]
8964 ldr x28, [x23, #:got_lo12:gFlashPageBuffer0]
8981 ldr x2, [x24, #:got_lo12:gFlashPageBuffer1]
8988 ldr x0, [x22, #:got_lo12:gpFlashSaveInfo]
8990 movk w1, 0x4e41, lsl 16
9003 ldr x0, [x26, #:got_lo12:gNandFlashIdbBlockAddr]
9006 ldr x1, [x27, #:got_lo12:gNandFlashInfoBlockAddr]
9021 ldp x19, x20, [sp,16]
9022 ldp x21, x22, [sp,32]
9023 ldp x23, x24, [sp,48]
9024 ldp x25, x26, [sp,64]
9025 ldp x27, x28, [sp,80]
9026 ldp x29, x30, [sp], 112
9028 .size FlashSavePhyInfo, .-FlashSavePhyInfo
9030 .global FlashReadIdbDataRaw
9031 .type FlashReadIdbDataRaw, %function
9032 FlashReadIdbDataRaw:
9033 stp x29, x30, [sp, -128]!
9037 stp x23, x24, [sp,48]
9038 stp x25, x26, [sp,64]
9046 adrp x1, :got:gNandFlashEccBits
9047 stp x19, x20, [sp,16]
9048 stp x21, x22, [sp,32]
9049 ldr x1, [x1, #:got_lo12:gNandFlashEccBits]
9051 stp x27, x28, [sp,80]
9055 adrp x24, :got:gNandIDBResBlkNum
9057 adrp x25, :got:gBlockPageAlignSize
9058 adrp x26, :got:gFlashPageBuffer0
9059 add x21, x21, :lo12:.LC88
9063 ldr x0, [x24, #:got_lo12:gNandIDBResBlkNum]
9074 ldr x20, [x26, #:got_lo12:gFlashPageBuffer0]
9075 ldr x0, [x25, #:got_lo12:gBlockPageAlignSize]
9093 movk w0, 0xfcdc, lsl 16
9103 adrp x0, :got:gNandIDBResBlkNum
9105 ldr x0, [x0, #:got_lo12:gNandIDBResBlkNum]
9108 adrp x1, :got:gNandFlashIdbBlockAddr
9109 ldr x1, [x1, #:got_lo12:gNandFlashIdbBlockAddr]
9125 ldp x19, x20, [sp,16]
9126 ldp x21, x22, [sp,32]
9127 ldp x23, x24, [sp,48]
9128 ldp x25, x26, [sp,64]
9129 ldp x27, x28, [sp,80]
9130 ldp x29, x30, [sp], 128
9132 .size FlashReadIdbDataRaw, .-FlashReadIdbDataRaw
9135 .type FlashInit, %function
9137 stp x29, x30, [sp, -112]!
9139 stp x19, x20, [sp,16]
9142 stp x21, x22, [sp,32]
9143 stp x23, x24, [sp,48]
9144 stp x27, x28, [sp,80]
9145 stp x25, x26, [sp,64]
9147 adrp x20, :got:gNandIDBResBlkNum
9148 adrp x1, :got:gFlashPageBuffer0
9149 adrp x24, :got:gNandIDBResBlkNumSaveInFlash
9150 adrp x23, :got:gFlashToggleModeEn
9151 adrp x22, :got:g_slc2KBNand
9152 adrp x25, :got:gNandFlashIDBEccBits
9153 adrp x21, :got:IDByte
9154 ldr x1, [x1, #:got_lo12:gFlashPageBuffer0]
9157 add x27, x27, :lo12:.LC89
9161 adrp x1, :got:gFlashPageBuffer1
9162 ldr x1, [x1, #:got_lo12:gFlashPageBuffer1]
9166 adrp x1, :got:gFlashSpareBuffer
9167 ldr x1, [x1, #:got_lo12:gFlashSpareBuffer]
9171 adrp x1, :got:gFlashProgCheckBuffer
9172 ldr x1, [x1, #:got_lo12:gFlashProgCheckBuffer]
9176 adrp x1, :got:gFlashProgCheckSpareBuffer
9177 ldr x1, [x1, #:got_lo12:gFlashProgCheckSpareBuffer]
9180 ldr x0, [x20, #:got_lo12:gNandIDBResBlkNum]
9182 ldr x0, [x24, #:got_lo12:gNandIDBResBlkNumSaveInFlash]
9184 adrp x1, :got:gNandFlashIdbBlockAddr
9186 ldr x1, [x1, #:got_lo12:gNandFlashIdbBlockAddr]
9188 adrp x1, :got:gBlockPageAlignSize
9189 ldr x1, [x1, #:got_lo12:gBlockPageAlignSize]
9191 adrp x1, :got:FlashDdrTunningReadCount
9192 ldr x0, [x23, #:got_lo12:gFlashToggleModeEn]
9194 ldr x1, [x1, #:got_lo12:FlashDdrTunningReadCount]
9197 ldr x0, [x22, #:got_lo12:g_slc2KBNand]
9199 ldr x0, [x25, #:got_lo12:gNandFlashIDBEccBits]
9203 ldr x19, [x21, #:got_lo12:IDByte]
9252 ldr x0, [x21, #:got_lo12:IDByte]
9264 ldr x0, [x21, #:got_lo12:IDByte]
9268 adrp x0, :got:gBootDdrMode
9269 ldr x0, [x0, #:got_lo12:gBootDdrMode]
9273 adrp x26, :got:gReadRetryInfo
9276 adrp x19, :got:gpNandParaInfo
9277 adrp x27, :got:gNandRandomizer
9278 ldr x0, [x26, #:got_lo12:gReadRetryInfo]
9280 adrp x0, :got:gNandParaInfo
9281 ldr x1, [x19, #:got_lo12:gpNandParaInfo]
9283 ldr x2, [x0, #:got_lo12:gNandParaInfo]
9285 ldr x1, [x27, #:got_lo12:gNandRandomizer]
9287 ldr x1, [x21, #:got_lo12:IDByte]
9295 ldr x0, [x22, #:got_lo12:g_slc2KBNand]
9299 ldr x0, [x20, #:got_lo12:gNandIDBResBlkNum]
9301 ldr x25, [x25, #:got_lo12:gNandFlashIDBEccBits]
9303 ldr x0, [x21, #:got_lo12:IDByte]
9310 adrp x25, :got:gSlcNandParaInfo
9312 ldr x0, [x25, #:got_lo12:gSlcNandParaInfo]
9316 adrp x0, :got:gNandOptPara
9318 add x1, x1, :lo12:.LANCHOR2
9321 ldr x0, [x0, #:got_lo12:gNandOptPara]
9323 ldr x0, [x28, #:got_lo12:gNandParaInfo]
9325 ldr x1, [x25, #:got_lo12:gSlcNandParaInfo]
9328 ldr x0, [x22, #:got_lo12:g_slc2KBNand]
9331 bl FlashLoadPhyInfoInRam
9333 ldr x0, [x19, #:got_lo12:gpNandParaInfo]
9334 adrp x25, :got:gFlashInterfaceMode
9336 ldr x25, [x25, #:got_lo12:gFlashInterfaceMode]
9341 ldr x1, [x23, #:got_lo12:gFlashToggleModeEn]
9344 bl FlashSetInterfaceMode
9350 adrp x0, :got:gBootDdrMode
9351 ldr x0, [x0, #:got_lo12:gBootDdrMode]
9355 bl FlashSetInterfaceMode
9359 adrp x25, :got:gFlashInterfaceMode
9360 ldr x25, [x25, #:got_lo12:gFlashInterfaceMode]
9362 bl FlashSetInterfaceMode
9369 bl FlashSetInterfaceMode
9372 ldr x25, [x19, #:got_lo12:gpNandParaInfo]
9374 add x0, x0, :lo12:.LC90
9378 bl FlashLoadPhyInfoInRam
9384 bl FlashGetReadRetryDefault
9385 adrp x1, :got:gTotleBlock
9387 ldr x1, [x1, #:got_lo12:gTotleBlock]
9402 adrp x0, :got:gFlashInterfaceMode
9403 ldr x0, [x0, #:got_lo12:gFlashInterfaceMode]
9408 adrp x1, :got:gNandFlashInfoBlockAddr
9410 ldr x1, [x1, #:got_lo12:gNandFlashInfoBlockAddr]
9416 ldr x0, [x19, #:got_lo12:gpNandParaInfo]
9417 adrp x25, :got:gFlashInterfaceMode
9418 ldr x27, [x27, #:got_lo12:gNandRandomizer]
9419 adrp x3, :got:gpReadRetrial
9424 adrp x1, :got:gMultiPageReadEn
9426 ldr x1, [x1, #:got_lo12:gMultiPageReadEn]
9428 adrp x1, :got:gMultiPageProgEn
9430 ldr x1, [x1, #:got_lo12:gMultiPageProgEn]
9433 ldr x1, [x25, #:got_lo12:gFlashInterfaceMode]
9435 ldr x6, [x3, #:got_lo12:gpReadRetrial]
9438 adrp x1, :got:g_retryMode
9440 ldr x1, [x1, #:got_lo12:g_retryMode]
9442 adrp x1, :got:g_maxRegNum
9443 ldr x26, [x26, #:got_lo12:gReadRetryInfo]
9444 ldr x2, [x1, #:got_lo12:g_maxRegNum]
9447 adrp x2, :got:g_maxRetryCount
9449 ldr x5, [x2, #:got_lo12:g_maxRetryCount]
9455 adrp x1, :got:HynixReadRetrial
9458 ldr x1, [x1, #:got_lo12:HynixReadRetrial]
9462 adrp x0, :got:gNandcDumpWriteEn
9464 ldr x0, [x0, #:got_lo12:gNandcDumpWriteEn]
9472 adrp x0, :got:MicronReadRetrial
9473 ldr x0, [x0, #:got_lo12:MicronReadRetrial]
9483 adrp x0, :got:ToshibaReadRetrial
9484 ldr x3, [x3, #:got_lo12:gpReadRetrial]
9485 ldr x0, [x0, #:got_lo12:ToshibaReadRetrial]
9488 ldr x1, [x1, #:got_lo12:g_maxRegNum]
9491 ldr x2, [x2, #:got_lo12:g_maxRetryCount]
9505 adrp x5, :got:ToshibaReadRetrial
9506 ldr x3, [x3, #:got_lo12:gpReadRetrial]
9508 ldr x5, [x5, #:got_lo12:ToshibaReadRetrial]
9510 ldr x2, [x2, #:got_lo12:g_maxRetryCount]
9521 ldr x1, [x1, #:got_lo12:g_maxRegNum]
9530 adrp x0, :got:SamsungReadRetrial
9531 ldr x0, [x0, #:got_lo12:SamsungReadRetrial]
9539 bl BuildFlashLsbPageTable
9541 ldr x25, [x25, #:got_lo12:gFlashInterfaceMode]
9545 ldr x23, [x23, #:got_lo12:gFlashToggleModeEn]
9550 adrp x1, :got:gNandFlashInfoBlockAddr
9552 ldr x1, [x1, #:got_lo12:gNandFlashInfoBlockAddr]
9556 ldr x0, [x19, #:got_lo12:gpNandParaInfo]
9560 adrp x0, :got:gNandIDataBuf
9561 ldr x0, [x0, #:got_lo12:gNandIDataBuf]
9562 bl FlashReadIdbDataRaw
9565 ldr x24, [x0, #:got_lo12:gNandIDBResBlkNumSaveInFlash]
9566 ldr x0, [x20, #:got_lo12:gNandIDBResBlkNum]
9573 ldr x0, [x20, #:got_lo12:gNandIDBResBlkNum]
9578 ldr x0, [x20, #:got_lo12:gNandIDBResBlkNum]
9583 movk w0, 0x2, lsl 16
9586 ldr x19, [x19, #:got_lo12:gpNandParaInfo]
9587 adrp x0, :got:gNandPhyInfo
9589 ldr x0, [x0, #:got_lo12:gNandPhyInfo]
9595 ldr x21, [x21, #:got_lo12:IDByte]
9598 adrp x1, :got:gNandMaxDie
9599 ldr x1, [x1, #:got_lo12:gNandMaxDie]
9620 ldr x20, [x20, #:got_lo12:gNandIDBResBlkNum]
9623 ldr x22, [x22, #:got_lo12:g_slc2KBNand]
9646 ldp x19, x20, [sp,16]
9647 ldp x21, x22, [sp,32]
9648 ldp x23, x24, [sp,48]
9649 ldp x25, x26, [sp,64]
9650 ldp x27, x28, [sp,80]
9651 ldp x29, x30, [sp], 112
9653 .size FlashInit, .-FlashInit
9655 .global FlashPageProgMsbFFData
9656 .type FlashPageProgMsbFFData, %function
9657 FlashPageProgMsbFFData:
9658 stp x29, x30, [sp, -80]!
9659 adrp x3, :got:gpNandParaInfo
9661 stp x21, x22, [sp,32]
9663 ldr x0, [x3, #:got_lo12:gpNandParaInfo]
9664 stp x19, x20, [sp,16]
9665 stp x23, x24, [sp,48]
9666 stp x25, x26, [sp,64]
9683 adrp x24, :got:mlcPageToSlcPageTbl
9685 adrp x26, :got:gFlashPageBuffer1
9687 ldr x0, [x20, #:got_lo12:gpNandParaInfo]
9692 ldr x0, [x24, #:got_lo12:mlcPageToSlcPageTbl]
9693 ldrh w0, [x0,w19,sxtw 1]
9696 ldr x23, [x26, #:got_lo12:gFlashPageBuffer1]
9710 ldp x19, x20, [sp,16]
9711 ldp x21, x22, [sp,32]
9712 ldp x23, x24, [sp,48]
9713 ldp x25, x26, [sp,64]
9714 ldp x29, x30, [sp], 80
9716 .size FlashPageProgMsbFFData, .-FlashPageProgMsbFFData
9718 .global FlashProgPageDp
9719 .type FlashProgPageDp, %function
9721 stp x29, x30, [sp, -80]!
9723 stp x19, x20, [sp,16]
9725 adrp x0, :got:gNandParaInfo
9726 stp x23, x24, [sp,48]
9727 stp x21, x22, [sp,32]
9728 ldr x0, [x0, #:got_lo12:gNandParaInfo]
9736 bl NandcWaitFlashReady
9741 bl FlashProgFirstCmd
9747 adrp x21, :got:gBlockPageAlignSize
9751 bl FlashProgDpFirstCmd
9753 bl NandcWaitFlashReady
9754 ldr x21, [x21, #:got_lo12:gBlockPageAlignSize]
9758 bl FlashProgDpSecondCmd
9769 bl FlashProgSecondCmd
9771 bl NandcWaitFlashReady
9779 ldp x19, x20, [sp,16]
9780 ldp x21, x22, [sp,32]
9781 ldp x23, x24, [sp,48]
9782 ldp x29, x30, [sp], 80
9784 .size FlashProgPageDp, .-FlashProgPageDp
9786 .global FlashReadPages
9787 .type FlashReadPages, %function
9789 stp x29, x30, [sp, -160]!
9791 stp x23, x24, [sp,48]
9793 adrp x0, :got:gNandParaInfo
9794 stp x21, x22, [sp,32]
9795 stp x25, x26, [sp,64]
9796 ldr x0, [x0, #:got_lo12:gNandParaInfo]
9797 adrp x26, :got:gNandRandomizer
9798 stp x27, x28, [sp,80]
9799 stp x19, x20, [sp,16]
9805 ldr x0, [x26, #:got_lo12:gNandRandomizer]
9810 add x0, x0, :lo12:.LC92
9813 add x0, x0, :lo12:.LC93
9816 add x0, x0, :lo12:.LC91
9831 adrp x0, :got:gNandMaxDie
9833 ldr x0, [x0, #:got_lo12:gNandMaxDie]
9841 adrp x0, :got:DieCsIndex
9842 ldr x0, [x0, #:got_lo12:DieCsIndex]
9843 ldrb w20, [x0,w1,uxtw]
9844 adrp x0, :got:gMultiPageReadEn
9845 ldr x0, [x0, #:got_lo12:gMultiPageReadEn]
9849 csel w19, w19, wzr, ne
9850 bl NandcWaitFlashReady
9851 adrp x1, :got:gpNandParaInfo
9853 ldr x0, [x1, #:got_lo12:gpNandParaInfo]
9860 adrp x2, :got:gReadRetryInfo
9862 ldr x2, [x2, #:got_lo12:gReadRetryInfo]
9865 adrp x0, :got:read_retry_cur_offset
9866 ldr x0, [x0, #:got_lo12:read_retry_cur_offset]
9886 adrp x0, :got:gBlockPageAlignSize
9887 ldr x0, [x0, #:got_lo12:gBlockPageAlignSize]
9908 bl NandcReadDontCaseBusyEn
9911 ldr x0, [x26, #:got_lo12:gNandRandomizer]
9919 adrp x0, :got:gBlockPageAlignSize
9921 ldr x0, [x0, #:got_lo12:gBlockPageAlignSize]
9925 bl FlashReadDpDataOutCmd
9938 csel w19, w19, wzr, ne
9942 ldr x0, [x26, #:got_lo12:gNandRandomizer]
9947 adrp x0, :got:gFlashToggleModeEn
9948 ldr x0, [x0, #:got_lo12:gFlashToggleModeEn]
9952 adrp x0, :got:gpReadRetrial
9953 ldr x0, [x0, #:got_lo12:gpReadRetrial]
9958 adrp x0, :got:gpNandc
9963 ldr x0, [x0, #:got_lo12:gpNandc]
9967 bl FlashDdrTunningRead
9971 adrp x1, :got:gNandFlashEccBits
9972 ldr x1, [x1, #:got_lo12:gNandFlashEccBits]
9993 ldr x0, [x0, #:got_lo12:gpNandParaInfo]
10000 adrp x2, :got:gReadRetryInfo
10003 ldr x2, [x2, #:got_lo12:gReadRetryInfo]
10013 bl FlashReadRawPage
10015 adrp x2, :got:gNandFlashEccBits
10019 ldr x2, [x2, #:got_lo12:gNandFlashEccBits]
10028 bl FlashReadRawPage
10034 adrp x0, :got:gNandFlashEccBits
10035 ldr x0, [x0, #:got_lo12:gNandFlashEccBits]
10037 add w0, w0, w0, lsl 1
10040 adrp x0, :got:gpReadRetrial
10041 ldr x0, [x0, #:got_lo12:gpReadRetrial]
10045 csel w28, w28, w0, ne
10060 adrp x2, :got:gNandFlashEccBits
10063 ldr x2, [x2, #:got_lo12:gNandFlashEccBits]
10071 bl rknand_print_hex
10074 adrp x0, :got:gNandFlashEccBits
10075 ldr x0, [x0, #:got_lo12:gNandFlashEccBits]
10077 add w0, w0, w0, lsl 1
10080 adrp x0, :got:gpReadRetrial
10081 ldr x0, [x0, #:got_lo12:gpReadRetrial]
10085 csel w23, w23, w0, ne
10106 bl NandcWaitFlashReady
10110 bl FlashReadDpDataOutCmd
10114 ldp x19, x20, [sp,16]
10115 ldp x21, x22, [sp,32]
10116 ldp x23, x24, [sp,48]
10117 ldp x25, x26, [sp,64]
10118 ldp x27, x28, [sp,80]
10119 ldp x29, x30, [sp], 160
10121 .size FlashReadPages, .-FlashReadPages
10123 .global FlashLoadFactorBbt
10124 .type FlashLoadFactorBbt, %function
10125 FlashLoadFactorBbt:
10126 adrp x0, :got:gNandPhyInfo
10128 stp x29, x30, [sp, -192]!
10130 ldr x0, [x0, #:got_lo12:gNandPhyInfo]
10131 stp x23, x24, [sp,48]
10132 stp x25, x26, [sp,64]
10133 stp x27, x28, [sp,80]
10134 stp x19, x20, [sp,16]
10135 stp x21, x22, [sp,32]
10136 adrp x23, :got:FbbtBlk
10137 adrp x24, :got:gFlashSpareBuffer
10142 ldr x0, [x23, #:got_lo12:FbbtBlk]
10144 add x26, x26, :lo12:.LC94
10149 ldr x0, [x24, #:got_lo12:gFlashSpareBuffer]
10160 adrp x22, :got:gNandMaxDie
10161 ldr x1, [x22, #:got_lo12:gNandMaxDie]
10188 ldr x0, [x24, #:got_lo12:gFlashSpareBuffer]
10199 ldr x0, [x23, #:got_lo12:FbbtBlk]
10201 strh w20, [x0,w19,sxtw 1]
10209 ldr x22, [x22, #:got_lo12:gNandMaxDie]
10214 csel w27, w27, wzr, ne
10218 ldp x19, x20, [sp,16]
10219 ldp x21, x22, [sp,32]
10220 ldp x23, x24, [sp,48]
10221 ldp x25, x26, [sp,64]
10222 ldp x27, x28, [sp,80]
10223 ldp x29, x30, [sp], 192
10225 .size FlashLoadFactorBbt, .-FlashLoadFactorBbt
10227 .global FtlLoadFactoryBbt
10228 .type FtlLoadFactoryBbt, %function
10230 adrp x1, :got:p_sys_data_buf
10231 adrp x0, :got:req_sys
10232 stp x29, x30, [sp, -112]!
10234 ldr x1, [x1, #:got_lo12:p_sys_data_buf]
10235 stp x21, x22, [sp,32]
10236 stp x25, x26, [sp,64]
10237 stp x27, x28, [sp,80]
10238 stp x19, x20, [sp,16]
10239 stp x23, x24, [sp,48]
10240 ldr x2, [x0, #:got_lo12:req_sys]
10241 adrp x20, :got:gBbtInfo
10245 adrp x25, :got:c_ftl_nand_die_num
10247 adrp x1, :got:p_sys_spare_buf
10249 adrp x27, :got:c_ftl_nand_blks_per_die
10251 ldr x1, [x1, #:got_lo12:p_sys_spare_buf]
10254 ldr x20, [x20, #:got_lo12:gBbtInfo]
10256 ldr x0, [x25, #:got_lo12:c_ftl_nand_die_num]
10261 adrp x3, :got:c_ftl_nand_blks_per_die
10262 ldr x0, [x27, #:got_lo12:c_ftl_nand_blks_per_die]
10267 ldr x0, [x3, #:got_lo12:c_ftl_nand_blks_per_die]
10272 ldr x23, [x22, #:got_lo12:req_sys]
10273 madd w1, w21, w1, w19
10300 ldp x19, x20, [sp,16]
10301 ldp x21, x22, [sp,32]
10302 ldp x23, x24, [sp,48]
10303 ldp x25, x26, [sp,64]
10304 ldp x27, x28, [sp,80]
10305 ldp x29, x30, [sp], 112
10307 .size FtlLoadFactoryBbt, .-FtlLoadFactoryBbt
10309 .global FtlGetLastWrittenPage
10310 .type FtlGetLastWrittenPage, %function
10311 FtlGetLastWrittenPage:
10312 stp x29, x30, [sp, -208]!
10315 stp x23, x24, [sp,48]
10316 stp x19, x20, [sp,16]
10317 stp x21, x22, [sp,32]
10318 stp x25, x26, [sp,64]
10321 adrp x1, :got:c_ftl_nand_page_pre_slc_blk
10322 ldr x1, [x1, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
10325 adrp x1, :got:c_ftl_nand_page_pre_blk
10326 ldr x1, [x1, #:got_lo12:c_ftl_nand_page_pre_blk]
10377 ldp x19, x20, [sp,16]
10378 ldp x21, x22, [sp,32]
10379 ldp x23, x24, [sp,48]
10380 ldp x25, x26, [sp,64]
10381 ldp x29, x30, [sp], 208
10383 .size FtlGetLastWrittenPage, .-FtlGetLastWrittenPage
10386 .type FtlLoadBbt, %function
10388 stp x29, x30, [sp, -64]!
10389 adrp x0, :got:p_sys_spare_buf
10391 stp x21, x22, [sp,32]
10392 adrp x21, :got:req_sys
10393 stp x23, x24, [sp,48]
10394 stp x19, x20, [sp,16]
10395 ldr x1, [x21, #:got_lo12:req_sys]
10396 adrp x23, :got:c_ftl_nand_blks_per_die
10399 ldr x0, [x0, #:got_lo12:p_sys_spare_buf]
10403 ldr x0, [x23, #:got_lo12:c_ftl_nand_blks_per_die]
10408 ldr x0, [x23, #:got_lo12:c_ftl_nand_blks_per_die]
10413 ldr x22, [x21, #:got_lo12:req_sys]
10431 ldr x0, [x21, #:got_lo12:req_sys]
10438 adrp x0, :got:gBbtInfo
10440 ldr x0, [x0, #:got_lo12:gBbtInfo]
10451 adrp x19, :got:gBbtInfo
10454 ldr x22, [x19, #:got_lo12:gBbtInfo]
10461 ldr x23, [x21, #:got_lo12:req_sys]
10485 ldr x23, [x19, #:got_lo12:gBbtInfo]
10487 adrp x24, :got:p_sys_data_buf
10489 bl FtlGetLastWrittenPage
10494 tbnz w22, #31, .L1398
10495 ldr x0, [x19, #:got_lo12:gBbtInfo]
10497 ldr x23, [x21, #:got_lo12:req_sys]
10500 orr w0, w22, w0, lsl 10
10502 ldr x0, [x24, #:got_lo12:p_sys_data_buf]
10511 ldr x0, [x19, #:got_lo12:gBbtInfo]
10524 adrp x1, :got:c_ftl_nand_sys_blks_per_plane
10525 ldr x1, [x1, #:got_lo12:c_ftl_nand_sys_blks_per_plane]
10529 adrp x1, :got:c_ftl_nand_blk_pre_plane
10530 ldr x1, [x1, #:got_lo12:c_ftl_nand_blk_pre_plane]
10537 bl FtlSysBlkNumInit
10540 adrp x22, :got:c_ftl_nand_die_num
10541 adrp x23, :got:c_ftl_nand_bbm_buf_size
10543 ldr x0, [x22, #:got_lo12:c_ftl_nand_die_num]
10549 ldr x0, [x23, #:got_lo12:c_ftl_nand_bbm_buf_size]
10550 ldr x3, [x21, #:got_lo12:req_sys]
10552 ldr x0, [x19, #:got_lo12:gBbtInfo]
10554 add x0, x0, x20, lsl 3
10558 add x1, x3, x1, lsl 2
10564 ldp x19, x20, [sp,16]
10565 ldp x21, x22, [sp,32]
10566 ldp x23, x24, [sp,48]
10567 ldp x29, x30, [sp], 64
10569 .size FtlLoadBbt, .-FtlLoadBbt
10571 .global load_l2p_region
10572 .type load_l2p_region, %function
10574 stp x29, x30, [sp, -48]!
10577 stp x21, x22, [sp,32]
10579 adrp x0, :got:p_map_region_ppn_table
10580 stp x19, x20, [sp,16]
10581 ubfiz x2, x21, 2, 16
10582 adrp x20, :got:p_l2p_ram_map
10583 ldr x0, [x0, #:got_lo12:p_map_region_ppn_table]
10587 ldr x20, [x20, #:got_lo12:p_l2p_ram_map]
10588 adrp x2, :got:c_ftl_nand_byte_pre_page
10592 ldr x2, [x2, #:got_lo12:c_ftl_nand_byte_pre_page]
10604 adrp x0, :got:req_sys
10606 ldr x0, [x0, #:got_lo12:req_sys]
10608 ldr x20, [x20, #:got_lo12:p_l2p_ram_map]
10613 adrp x1, :got:p_sys_spare_buf
10614 ldr x1, [x1, #:got_lo12:p_sys_spare_buf]
10627 ldp x19, x20, [sp,16]
10628 ldp x21, x22, [sp,32]
10629 ldp x29, x30, [sp], 48
10631 .size load_l2p_region, .-load_l2p_region
10633 .global FtlVendorPartRead
10634 .type FtlVendorPartRead, %function
10636 stp x29, x30, [sp, -176]!
10638 stp x21, x22, [sp,32]
10640 adrp x0, :got:c_ftl_nand_sec_pre_page_shift
10641 stp x19, x20, [sp,16]
10642 stp x23, x24, [sp,48]
10643 ldr x0, [x0, #:got_lo12:c_ftl_nand_sec_pre_page_shift]
10645 stp x25, x26, [sp,64]
10646 stp x27, x28, [sp,80]
10650 adrp x0, :got:c_ftl_vendor_part_size
10652 ldr x0, [x0, #:got_lo12:c_ftl_vendor_part_size]
10659 adrp x26, :got:p_vendor_data_buf
10662 adrp x0, :got:p_vendor_region_ppn_table
10663 ldr x0, [x0, #:got_lo12:p_vendor_region_ppn_table]
10665 ldr w1, [x0,w24,uxtw 2]
10666 adrp x0, :got:c_ftl_nand_sec_pre_page
10667 ldr x0, [x0, #:got_lo12:c_ftl_nand_sec_pre_page]
10671 msub w27, w27, w19, w22
10675 csel w19, w0, w19, hi
10678 ldr x5, [x26, #:got_lo12:p_vendor_data_buf]
10679 ubfiz x27, x27, 9, 16
10695 csinv w20, w20, wzr, ne
10707 add x23, x23, x28, sxtw
10711 ldp x19, x20, [sp,16]
10712 ldp x21, x22, [sp,32]
10713 ldp x23, x24, [sp,48]
10714 ldp x25, x26, [sp,64]
10715 ldp x27, x28, [sp,80]
10716 ldp x29, x30, [sp], 176
10718 .size FtlVendorPartRead, .-FtlVendorPartRead
10720 .global FtlLoadEctTbl
10721 .type FtlLoadEctTbl, %function
10723 stp x29, x30, [sp, -32]!
10726 stp x19, x20, [sp,16]
10727 adrp x20, :got:g_ect_tbl_info_size
10728 adrp x19, :got:gp_ect_tbl_info
10729 ldr x20, [x20, #:got_lo12:g_ect_tbl_info_size]
10730 ldr x19, [x19, #:got_lo12:gp_ect_tbl_info]
10733 bl FtlVendorPartRead
10737 movk w0, 0x4254, lsl 16
10742 add x1, x1, :lo12:.LC95
10743 add x0, x0, :lo12:.LC72
10752 ldp x19, x20, [sp,16]
10753 ldp x29, x30, [sp], 32
10755 .size FtlLoadEctTbl, .-FtlLoadEctTbl
10757 .global Ftl_load_ext_data
10758 .type Ftl_load_ext_data, %function
10760 stp x29, x30, [sp, -32]!
10764 stp x19, x20, [sp,16]
10765 adrp x19, :got:g_sys_ext_data
10766 ldr x20, [x19, #:got_lo12:g_sys_ext_data]
10768 bl FtlVendorPartRead
10771 movk w0, 0x4654, lsl 16
10779 movk w0, 0x4654, lsl 16
10782 ldr x0, [x19, #:got_lo12:g_sys_ext_data]
10784 movk w1, 0x4654, lsl 16
10785 adrp x20, :got:g_totle_slc_erase_count
10789 adrp x1, :got:g_totle_write_sector
10791 ldr x1, [x1, #:got_lo12:g_totle_write_sector]
10793 adrp x1, :got:g_totle_read_sector
10795 ldr x1, [x1, #:got_lo12:g_totle_read_sector]
10797 adrp x1, :got:g_totle_gc_page_count
10799 ldr x1, [x1, #:got_lo12:g_totle_gc_page_count]
10801 adrp x1, :got:g_totle_write_page_count
10803 ldr x1, [x1, #:got_lo12:g_totle_write_page_count]
10805 adrp x1, :got:g_totle_read_page_count
10807 ldr x1, [x1, #:got_lo12:g_totle_read_page_count]
10809 adrp x1, :got:g_totle_l2p_write_count
10811 ldr x1, [x1, #:got_lo12:g_totle_l2p_write_count]
10814 ldr x1, [x20, #:got_lo12:g_totle_slc_erase_count]
10816 adrp x1, :got:g_totle_sys_slc_erase_count
10818 ldr x1, [x1, #:got_lo12:g_totle_sys_slc_erase_count]
10820 adrp x1, :got:g_totle_discard_page_count
10822 ldr x1, [x1, #:got_lo12:g_totle_discard_page_count]
10824 adrp x1, :got:g_totle_cache_write_count
10826 ldr x1, [x1, #:got_lo12:g_totle_cache_write_count]
10828 adrp x1, :got:g_max_erase_count
10830 ldr x1, [x1, #:got_lo12:g_max_erase_count]
10832 adrp x1, :got:g_min_erase_count
10833 ldr x1, [x1, #:got_lo12:g_min_erase_count]
10837 adrp x1, :got:g_all_blk_used_slc_mode
10838 ldr x1, [x1, #:got_lo12:g_all_blk_used_slc_mode]
10841 adrp x0, :got:g_SlcPartLbaEndSector
10842 ldr x0, [x0, #:got_lo12:g_SlcPartLbaEndSector]
10845 movk w0, 0x1234, lsl 16
10846 ldr x19, [x19, #:got_lo12:g_sys_ext_data]
10850 adrp x0, :got:g_inkDie_check_enable
10852 ldr x0, [x0, #:got_lo12:g_inkDie_check_enable]
10856 add x0, x0, :lo12:.LC72
10857 add x1, x1, :lo12:.LC96
10860 adrp x0, :got:c_mlc_erase_count_value
10861 ldr x2, [x20, #:got_lo12:g_totle_slc_erase_count]
10862 adrp x3, :got:g_totle_avg_erase_count
10863 ldr x0, [x0, #:got_lo12:c_mlc_erase_count_value]
10864 ldr x3, [x3, #:got_lo12:g_totle_avg_erase_count]
10866 adrp x0, :got:g_totle_mlc_erase_count
10867 ldr x0, [x0, #:got_lo12:g_totle_mlc_erase_count]
10870 madd w0, w1, w4, w0
10871 adrp x1, :got:c_ftl_nand_data_blks_per_plane
10872 ldr x1, [x1, #:got_lo12:c_ftl_nand_data_blks_per_plane]
10876 ldp x19, x20, [sp,16]
10877 ldp x29, x30, [sp], 32
10879 .size Ftl_load_ext_data, .-Ftl_load_ext_data
10881 .global FtlScanSysBlk
10882 .type FtlScanSysBlk, %function
10884 stp x29, x30, [sp, -160]!
10887 stp x19, x20, [sp,16]
10888 adrp x19, :got:g_totle_map_block
10889 stp x21, x22, [sp,32]
10890 stp x23, x24, [sp,48]
10891 ldr x0, [x19, #:got_lo12:g_totle_map_block]
10892 adrp x24, :got:p_map_block_ver_table
10893 stp x27, x28, [sp,80]
10894 stp x25, x26, [sp,64]
10895 adrp x28, :got:g_totle_vendor_block
10897 adrp x25, :got:c_ftl_nand_max_map_blks
10898 adrp x21, :got:p_map_block_table
10899 adrp x27, :got:c_ftl_nand_max_vendor_blks
10900 adrp x23, :got:p_vendor_block_ver_table
10901 ldr x0, [x28, #:got_lo12:g_totle_vendor_block]
10903 ldr x20, [x25, #:got_lo12:c_ftl_nand_max_map_blks]
10904 ldr x0, [x24, #:got_lo12:p_map_block_ver_table]
10909 ldr x0, [x21, #:got_lo12:p_map_block_table]
10912 adrp x20, :got:p_vendor_block_table
10916 ldr x22, [x27, #:got_lo12:c_ftl_nand_max_vendor_blks]
10917 ldr x0, [x23, #:got_lo12:p_vendor_block_ver_table]
10923 ldr x0, [x20, #:got_lo12:p_vendor_block_table]
10926 adrp x22, :got:gSysInfo
10930 ldr x0, [x22, #:got_lo12:gSysInfo]
10935 adrp x0, :got:c_ftl_nand_data_blks_per_plane
10939 ldr x0, [x0, #:got_lo12:c_ftl_nand_data_blks_per_plane]
10943 adrp x0, :got:c_ftl_nand_blk_pre_plane
10945 ldr x0, [x0, #:got_lo12:c_ftl_nand_blk_pre_plane]
10950 adrp x25, :got:c_ftl_nand_byte_pre_oob
10954 adrp x0, :got:c_ftl_nand_planes_num
10955 ldr x0, [x0, #:got_lo12:c_ftl_nand_planes_num]
10959 adrp x0, :got:p_plane_order_table
10961 ldr x0, [x0, #:got_lo12:p_plane_order_table]
10962 ldrb w0, [x0,w27,sxtw]
10965 bl FtlBbmIsBadBlock
10967 adrp x1, :got:req_read
10971 ldr x2, [x1, #:got_lo12:req_read]
10976 adrp x2, :got:p_gc_spare_buf
10979 ldr x0, [x25, #:got_lo12:c_ftl_nand_byte_pre_oob]
10980 ldr x2, [x2, #:got_lo12:p_gc_spare_buf]
10987 add x0, x2, x0, sxtw 2
10994 adrp x0, :got:req_read
10999 ldr x0, [x0, #:got_lo12:req_read]
11007 adrp x0, :got:req_read
11008 ldr x6, [x0, #:got_lo12:req_read]
11015 ubfx x25, x0, 10, 16
11036 adrp x0, :got:req_read
11037 ldr x0, [x0, #:got_lo12:req_read]
11042 adrp x0, :got:g_GlobalSysVersion
11043 ldr x0, [x0, #:got_lo12:g_GlobalSysVersion]
11054 adrp x1, :got:g_GlobalSysVersion
11056 ldr x1, [x1, #:got_lo12:g_GlobalSysVersion]
11068 ldr x6, [x23, #:got_lo12:p_vendor_block_ver_table]
11069 ldr x0, [x0, #:got_lo12:c_ftl_nand_max_vendor_blks]
11074 ldr x0, [x0, #:got_lo12:g_totle_vendor_block]
11090 ldr x6, [x24, #:got_lo12:p_map_block_ver_table]
11091 ldr x0, [x0, #:got_lo12:c_ftl_nand_max_map_blks]
11094 ldr x0, [x19, #:got_lo12:g_totle_map_block]
11105 sbfiz x7, x2, 2, 32
11116 ldr x0, [x21, #:got_lo12:p_map_block_table]
11123 bl FtlFreeSysBlkQueueIn
11129 ldr x1, [x19, #:got_lo12:g_totle_map_block]
11137 ldr x1, [x24, #:got_lo12:p_map_block_ver_table]
11147 ldr x5, [x21, #:got_lo12:p_map_block_table]
11154 ldr x0, [x24, #:got_lo12:p_map_block_ver_table]
11158 ldr x0, [x21, #:got_lo12:p_map_block_table]
11160 strh w25, [x0,x8,lsl 1]
11161 tbz w2, #31, .L1506
11168 tbz w2, #31, .L1461
11172 ldr x0, [x19, #:got_lo12:g_totle_map_block]
11173 ldr x1, [x1, #:got_lo12:c_ftl_nand_max_map_blks]
11181 ldr x1, [x19, #:got_lo12:g_totle_map_block]
11186 ldr x0, [x24, #:got_lo12:p_map_block_ver_table]
11188 str w1, [x0,x2,lsl 2]
11189 ldr x0, [x21, #:got_lo12:p_map_block_table]
11192 sbfiz x7, x2, 2, 32
11210 ldr x0, [x20, #:got_lo12:p_vendor_block_table]
11217 bl FtlFreeSysBlkQueueIn
11225 ldr x1, [x1, #:got_lo12:g_totle_vendor_block]
11232 ldr x1, [x23, #:got_lo12:p_vendor_block_ver_table]
11242 ldr x5, [x20, #:got_lo12:p_vendor_block_table]
11249 ldr x0, [x23, #:got_lo12:p_vendor_block_ver_table]
11253 ldr x0, [x20, #:got_lo12:p_vendor_block_table]
11255 strh w25, [x0,x8,lsl 1]
11257 tbnz w2, #31, .L1441
11259 ldr x5, [x0, #:got_lo12:g_totle_vendor_block]
11262 ldr x0, [x0, #:got_lo12:c_ftl_nand_max_vendor_blks]
11272 ldr x0, [x23, #:got_lo12:p_vendor_block_ver_table]
11274 str w1, [x0,x2,lsl 2]
11275 ldr x0, [x20, #:got_lo12:p_vendor_block_table]
11278 strh w25, [x0,x2,lsl 1]
11282 ldr x0, [x0, #:got_lo12:gSysInfo]
11290 bl FtlFreeSysBlkQueueIn
11294 ldr x0, [x0, #:got_lo12:gSysInfo]
11312 bl FtlFreeSysBlkQueueIn
11323 ldr x0, [x21, #:got_lo12:p_map_block_table]
11328 ldr x0, [x20, #:got_lo12:p_vendor_block_table]
11334 ldr x19, [x19, #:got_lo12:g_totle_map_block]
11338 ldr x2, [x2, #:got_lo12:c_ftl_nand_max_map_blks]
11343 ldrh w3, [x1,w0,sxtw 1]
11348 ldr x1, [x1, #:got_lo12:c_ftl_nand_max_map_blks]
11352 ldr x3, [x21, #:got_lo12:p_map_block_table]
11361 strh w7, [x4,x1,lsl 1]
11362 ldr x4, [x24, #:got_lo12:p_map_block_ver_table]
11364 ldr w5, [x4,x5,lsl 2]
11365 str w5, [x4,x1,lsl 2]
11375 ldr x1, [x1, #:got_lo12:g_totle_vendor_block]
11379 ldr x1, [x1, #:got_lo12:c_ftl_nand_max_vendor_blks]
11385 ldrh w3, [x2,w0,sxtw 1]
11389 ldr x1, [x1, #:got_lo12:c_ftl_nand_max_vendor_blks]
11393 ldr x3, [x20, #:got_lo12:p_vendor_block_table]
11402 strh w7, [x4,x1,lsl 1]
11403 ldr x4, [x23, #:got_lo12:p_vendor_block_ver_table]
11405 ldr w5, [x4,x5,lsl 2]
11406 str w5, [x4,x1,lsl 2]
11416 ldp x19, x20, [sp,16]
11417 ldp x21, x22, [sp,32]
11418 ldp x23, x24, [sp,48]
11419 ldp x25, x26, [sp,64]
11420 ldp x27, x28, [sp,80]
11421 ldp x29, x30, [sp], 160
11423 .size FtlScanSysBlk, .-FtlScanSysBlk
11425 .global FtlLoadSysInfo
11426 .type FtlLoadSysInfo, %function
11428 stp x29, x30, [sp, -80]!
11429 adrp x0, :got:p_sys_spare_buf
11431 stp x19, x20, [sp,16]
11432 adrp x20, :got:req_sys
11434 stp x21, x22, [sp,32]
11435 stp x23, x24, [sp,48]
11436 ldr x1, [x20, #:got_lo12:req_sys]
11437 adrp x22, :got:c_ftl_nand_data_blks_per_plane
11438 adrp x21, :got:p_valid_page_count_table
11439 adrp x23, :got:gSysInfo
11441 ldr x0, [x0, #:got_lo12:p_sys_spare_buf]
11444 ldr x1, [x22, #:got_lo12:c_ftl_nand_data_blks_per_plane]
11445 ldr x0, [x21, #:got_lo12:p_valid_page_count_table]
11451 ldr x24, [x23, #:got_lo12:gSysInfo]
11461 adrp x25, :got:p_sys_data_buf
11462 bl FtlGetLastWrittenPage
11467 tbnz w19, #31, .L1525
11468 ldr x0, [x23, #:got_lo12:gSysInfo]
11470 ldr x24, [x20, #:got_lo12:req_sys]
11473 orr w0, w19, w0, lsl 10
11475 ldr x0, [x25, #:got_lo12:p_sys_data_buf]
11484 adrp x24, :got:g_sys_save_data
11485 ldr x20, [x20, #:got_lo12:req_sys]
11487 ldr x19, [x24, #:got_lo12:g_sys_save_data]
11491 ldr x22, [x22, #:got_lo12:c_ftl_nand_data_blks_per_plane]
11492 ldr x21, [x21, #:got_lo12:p_valid_page_count_table]
11501 movk w0, 0x4654, lsl 16
11511 ldr x23, [x23, #:got_lo12:gSysInfo]
11512 adrp x0, :got:c_ftl_nand_die_num
11516 ldr x0, [x0, #:got_lo12:c_ftl_nand_die_num]
11520 adrp x0, :got:g_MaxLbn
11521 adrp x4, :got:c_ftl_nand_sec_pre_page
11523 adrp x20, :got:g_gc_superblock
11524 ldr x0, [x0, #:got_lo12:g_MaxLbn]
11526 adrp x0, :got:c_ftl_nand_page_pre_blk
11527 ldr x0, [x0, #:got_lo12:c_ftl_nand_page_pre_blk]
11529 adrp x0, :got:g_MaxLpn
11530 ldr x0, [x0, #:got_lo12:g_MaxLpn]
11533 adrp x0, :got:g_MaxLbaSector
11534 ldr x4, [x4, #:got_lo12:c_ftl_nand_sec_pre_page]
11535 ldr x0, [x0, #:got_lo12:g_MaxLbaSector]
11539 adrp x1, :got:c_ftl_nand_max_data_blks
11540 adrp x0, :got:gBbtInfo
11541 adrp x4, :got:c_ftl_nand_data_op_blks_per_plane
11542 ldr x1, [x1, #:got_lo12:c_ftl_nand_max_data_blks]
11543 ldr x0, [x0, #:got_lo12:gBbtInfo]
11544 ldr x4, [x4, #:got_lo12:c_ftl_nand_data_op_blks_per_plane]
11548 adrp x1, :got:c_ftl_nand_planes_num
11550 adrp x3, :got:g_active_superblock
11551 ldr x1, [x1, #:got_lo12:c_ftl_nand_planes_num]
11558 ldr x0, [x3, #:got_lo12:g_active_superblock]
11565 ldr x1, [x20, #:got_lo12:g_gc_superblock]
11570 adrp x1, :got:g_buffer_superblock
11572 ldr x4, [x1, #:got_lo12:g_buffer_superblock]
11580 adrp x0, :got:g_gc_temp_superblock
11584 ldr x4, [x0, #:got_lo12:g_gc_temp_superblock]
11593 adrp x4, :got:g_totle_gc_page_count
11595 ldr x4, [x4, #:got_lo12:g_totle_gc_page_count]
11597 adrp x4, :got:g_totle_write_page_count
11598 ldr x4, [x4, #:got_lo12:g_totle_write_page_count]
11600 adrp x4, :got:g_totle_read_page_count
11601 ldr x4, [x4, #:got_lo12:g_totle_read_page_count]
11603 adrp x4, :got:g_totle_l2p_write_count
11604 ldr x4, [x4, #:got_lo12:g_totle_l2p_write_count]
11606 adrp x4, :got:g_totle_mlc_erase_count
11607 ldr x4, [x4, #:got_lo12:g_totle_mlc_erase_count]
11609 adrp x4, :got:g_totle_slc_erase_count
11612 ldr x4, [x4, #:got_lo12:g_totle_slc_erase_count]
11614 adrp x4, :got:g_max_erase_count
11615 ldr x4, [x4, #:got_lo12:g_max_erase_count]
11617 adrp x4, :got:g_totle_cache_write_count
11618 ldr x4, [x4, #:got_lo12:g_totle_cache_write_count]
11620 adrp x4, :got:g_GlobalSysVersion
11621 ldr x4, [x4, #:got_lo12:g_GlobalSysVersion]
11627 adrp x0, :got:g_GlobalDataVersion
11628 ldr x2, [x2, #:got_lo12:g_sys_save_data]
11629 ldr x0, [x0, #:got_lo12:g_GlobalDataVersion]
11639 ldr x0, [x3, #:got_lo12:g_active_superblock]
11642 ldr x0, [x19, #:got_lo12:g_buffer_superblock]
11649 ldr x0, [x21, #:got_lo12:g_gc_temp_superblock]
11656 ldr x0, [x20, #:got_lo12:g_gc_superblock]
11666 ldp x19, x20, [sp,16]
11667 ldp x21, x22, [sp,32]
11668 ldp x23, x24, [sp,48]
11669 ldp x29, x30, [sp], 80
11671 .size FtlLoadSysInfo, .-FtlLoadSysInfo
11673 .global FtlGcScanTempBlk
11674 .type FtlGcScanTempBlk, %function
11676 stp x29, x30, [sp, -128]!
11678 stp x19, x20, [sp,16]
11679 adrp x19, .LANCHOR2
11680 stp x25, x26, [sp,64]
11682 add x0, x19, :lo12:.LANCHOR2
11683 stp x23, x24, [sp,48]
11684 stp x21, x22, [sp,32]
11685 stp x27, x28, [sp,80]
11696 adrp x0, :got:c_ftl_nand_page_pre_blk
11697 ldr x0, [x0, #:got_lo12:c_ftl_nand_page_pre_blk]
11702 bl FtlGcPageVarInit
11707 adrp x24, :got:req_read
11715 adrp x0, :got:c_ftl_nand_planes_num
11716 adrp x1, :got:c_ftl_nand_byte_pre_oob
11720 adrp x11, :got:p_gc_spare_buf
11721 ldr x0, [x0, #:got_lo12:c_ftl_nand_planes_num]
11722 ldr x1, [x1, #:got_lo12:c_ftl_nand_byte_pre_oob]
11725 add x6, x26, x6, lsl 1
11732 ldr x8, [x24, #:got_lo12:req_read]
11734 orr w1, w25, w1, lsl 10
11746 ldr x7, [x11, #:got_lo12:p_gc_spare_buf]
11748 add x1, x7, x1, sxtw 2
11754 ldr x0, [x24, #:got_lo12:req_read]
11765 adrp x0, :got:req_read
11767 ldr x8, [x0, #:got_lo12:req_read]
11788 adrp x0, :got:ftl_gc_temp_power_lost_recovery_flag
11790 ldr x0, [x0, #:got_lo12:ftl_gc_temp_power_lost_recovery_flag]
11799 adrp x0, :got:g_inkDie_check_enable
11800 ldr x0, [x0, #:got_lo12:g_inkDie_check_enable]
11803 adrp x0, :got:p_erase_count_table
11805 ldr x0, [x0, #:got_lo12:p_erase_count_table]
11807 ldrh w0, [x0,x1,lsl 1]
11816 adrp x0, :got:p_valid_page_count_table
11819 ldr x0, [x0, #:got_lo12:p_valid_page_count_table]
11821 strh wzr, [x0,x1,lsl 1]
11823 bl INSERT_FREE_LIST
11826 bl FtlGcPageVarInit
11832 adrp x0, :got:c_ftl_nand_page_pre_blk
11836 ldr x0, [x0, #:got_lo12:c_ftl_nand_page_pre_blk]
11842 add x2, x19, :lo12:.LANCHOR2
11848 ldr x1, [x0, #:got_lo12:c_ftl_nand_page_pre_blk]
11856 add x19, x19, :lo12:.LANCHOR2
11863 bl ftl_sb_update_avl_pages
11866 ldp x19, x20, [sp,16]
11867 ldp x21, x22, [sp,32]
11868 ldp x23, x24, [sp,48]
11869 ldp x25, x26, [sp,64]
11870 ldp x27, x28, [sp,80]
11871 ldp x29, x30, [sp], 128
11873 .size FtlGcScanTempBlk, .-FtlGcScanTempBlk
11875 .global FlashProgPages
11876 .type FlashProgPages, %function
11878 stp x29, x30, [sp, -192]!
11880 stp x19, x20, [sp,16]
11882 adrp x0, :got:gpNandParaInfo
11883 stp x21, x22, [sp,32]
11884 stp x23, x24, [sp,48]
11885 ldr x0, [x0, #:got_lo12:gpNandParaInfo]
11887 stp x25, x26, [sp,64]
11888 stp x27, x28, [sp,80]
11895 adrp x0, :got:gNandParaInfo
11896 ldr x0, [x0, #:got_lo12:gNandParaInfo]
11906 adrp x20, :got:gNandMaxDie
11908 umull x20, w21, w27
11917 adrp x1, :got:gNandMaxDie
11919 ldr x1, [x1, #:got_lo12:gNandMaxDie]
11927 adrp x1, :got:gMultiPageProgEn
11928 adrp x22, :got:gDieOp
11929 ldr x1, [x1, #:got_lo12:gMultiPageProgEn]
11930 ldr x3, [x22, #:got_lo12:gDieOp]
11935 csel w23, w23, wzr, ne
11936 madd x0, x1, x0, x3
11941 adrp x0, :got:gpNandc
11942 ldr x0, [x0, #:got_lo12:gpNandc]
11944 bl NandcIqrWaitFlashReady
11947 bl FlashWaitCmdDone
11949 ldr x2, [x22, #:got_lo12:gDieOp]
11952 madd x0, x1, x0, x2
11963 adrp x0, :got:DieCsIndex
11964 ldr x22, [x22, #:got_lo12:gDieOp]
11965 ldr x0, [x0, #:got_lo12:DieCsIndex]
11969 adrp x0, :got:gNandMaxDie
11971 ldr x0, [x0, #:got_lo12:gNandMaxDie]
11976 bl NandcWaitFlashReady
11980 adrp x0, :got:DieAddrs
11982 ldr x0, [x0, #:got_lo12:DieAddrs]
11983 ldr w0, [x0,x1,lsl 2]
11988 bl FlashWaitReadyEN
11995 adrp x0, :got:read_retry_cur_offset
11996 ldr x0, [x0, #:got_lo12:read_retry_cur_offset]
11997 ldrb w0, [x0,w20,sxtw]
11999 adrp x2, :got:gReadRetryInfo
12002 ldr x2, [x2, #:got_lo12:gReadRetryInfo]
12011 bl FlashProgFirstCmd
12021 bl FlashProgDpFirstCmd
12022 adrp x0, :got:DieAddrs
12024 ldr x0, [x0, #:got_lo12:DieAddrs]
12025 ldr w0, [x0,x1,lsl 2]
12030 bl FlashWaitReadyEN
12031 adrp x0, :got:gBlockPageAlignSize
12033 ldr x0, [x0, #:got_lo12:gBlockPageAlignSize]
12037 bl FlashProgDpSecondCmd
12051 bl FlashProgSecondCmd
12058 adrp x0, :got:gpNandc
12060 ldr x0, [x0, #:got_lo12:gpNandc]
12062 bl NandcIqrWaitFlashReady
12064 ldr x0, [x20, #:got_lo12:gNandMaxDie]
12070 bl FlashWaitCmdDone
12079 add x23, x23, :lo12:.LC100
12080 add x25, x25, :lo12:.LC99
12081 add x27, x27, :lo12:.LC98
12090 add x0, x0, :lo12:.LC97
12099 adrp x20, :got:gFlashProgCheckBuffer
12100 adrp x21, :got:gFlashProgCheckSpareBuffer
12102 ldr x4, [x20, #:got_lo12:gFlashProgCheckBuffer]
12109 ldr x28, [x21, #:got_lo12:gFlashProgCheckSpareBuffer]
12134 ldr x21, [x21, #:got_lo12:gFlashProgCheckSpareBuffer]
12148 ldr x20, [x20, #:got_lo12:gFlashProgCheckBuffer]
12165 ldp x19, x20, [sp,16]
12166 ldp x21, x22, [sp,32]
12167 ldp x23, x24, [sp,48]
12168 ldp x25, x26, [sp,64]
12169 ldp x27, x28, [sp,80]
12170 ldp x29, x30, [sp], 192
12172 .size FlashProgPages, .-FlashProgPages
12174 .type FlashTestBlk.part.19, %function
12175 FlashTestBlk.part.19:
12176 stp x29, x30, [sp, -176]!
12180 stp x19, x20, [sp,16]
12181 adrp x20, :got:gFlashPageBuffer1
12186 ldr x20, [x20, #:got_lo12:gFlashPageBuffer1]
12199 bl FlashEraseBlocks
12210 bl FlashEraseBlocks
12213 ldp x19, x20, [sp,16]
12214 ldp x29, x30, [sp], 176
12216 .size FlashTestBlk.part.19, .-FlashTestBlk.part.19
12218 .global FlashTestBlk
12219 .type FlashTestBlk, %function
12221 adrp x1, :got:gNandFlashIdbBlockAddr
12223 stp x29, x30, [sp, -16]!
12226 ldr x1, [x1, #:got_lo12:gNandFlashIdbBlockAddr]
12231 bl FlashTestBlk.part.19
12233 ldp x29, x30, [sp], 16
12235 .size FlashTestBlk, .-FlashTestBlk
12237 .global FlashMakeFactorBbt
12238 .type FlashMakeFactorBbt, %function
12239 FlashMakeFactorBbt:
12240 adrp x5, :got:gFlashSpareBuffer
12241 adrp x4, :got:gNandPhyInfo
12242 stp x29, x30, [sp, -256]!
12243 adrp x3, :got:gpNandParaInfo
12244 adrp x2, :got:gBlockPageAlignSize
12246 ldr x0, [x5, #:got_lo12:gFlashSpareBuffer]
12247 stp x19, x20, [sp,16]
12248 stp x21, x22, [sp,32]
12249 stp x23, x24, [sp,48]
12250 stp x25, x26, [sp,64]
12251 stp x27, x28, [sp,80]
12252 ldr x1, [x4, #:got_lo12:gNandPhyInfo]
12258 adrp x1, :got:g_slc2KBNand
12262 ldr x0, [x3, #:got_lo12:gpNandParaInfo]
12270 ldr x0, [x2, #:got_lo12:gBlockPageAlignSize]
12272 ldr x0, [x1, #:got_lo12:g_slc2KBNand]
12273 ubfiz w1, w25, 1, 15
12277 csel w25, w1, w25, eq
12278 add x0, x0, :lo12:.LC101
12284 ldr x0, [x0, #:got_lo12:gFlashSpareBuffer]
12300 adrp x0, :got:gNandMaxDie
12302 ldr x1, [x0, #:got_lo12:gNandMaxDie]
12306 adrp x0, :got:FbbtBlk
12309 ldr x1, [x0, #:got_lo12:FbbtBlk]
12310 ldrh w20, [x1,w19,sxtw 1]
12313 adrp x21, :got:gFlashPageBuffer0
12316 ldr x1, [x1, #:got_lo12:gNandPhyInfo]
12317 ldr x0, [x21, #:got_lo12:gFlashPageBuffer0]
12323 adrp x0, :got:DieCsIndex
12324 ldr x0, [x0, #:got_lo12:DieCsIndex]
12339 adrp x0, :got:DieAddrs
12341 ldr x0, [x0, #:got_lo12:DieAddrs]
12342 ldr w3, [x0,x24,lsl 2]
12350 ldr x0, [x0, #:got_lo12:g_slc2KBNand]
12356 ldr x0, [x0, #:got_lo12:gBlockPageAlignSize]
12370 ldr x0, [x0, #:got_lo12:gpNandParaInfo]
12373 adrp x0, :got:DieAddrs
12375 ldr x0, [x0, #:got_lo12:DieAddrs]
12376 ldr w0, [x0,x24,lsl 2]
12384 ldr x0, [x0, #:got_lo12:gpNandParaInfo]
12408 adrp x0, :got:DieAddrs
12409 ldr x0, [x0, #:got_lo12:DieAddrs]
12410 ldr w1, [x0,x24,lsl 2]
12413 bl SandiskProgTestBadBlock
12419 add x0, x0, :lo12:.LC102
12422 ldr x0, [x21, #:got_lo12:gFlashPageBuffer0]
12423 ubfx x1, x28, 5, 11
12434 ldr x0, [x0, #:got_lo12:gNandMaxDie]
12446 add x0, x0, :lo12:.LC103
12451 ldr x0, [x0, #:got_lo12:gNandMaxDie]
12457 ldr x0, [x21, #:got_lo12:gFlashPageBuffer0]
12458 ldr x1, [x1, #:got_lo12:gNandPhyInfo]
12466 adrp x27, :got:gNandFlashIdbBlockAddr
12469 adrp x26, :got:gNandIDBResBlkNum
12470 add x23, x23, :lo12:.LC104
12471 ldr x0, [x27, #:got_lo12:gNandFlashIdbBlockAddr]
12474 ldr x0, [x26, #:got_lo12:gNandIDBResBlkNum]
12484 ldr x0, [x21, #:got_lo12:gFlashPageBuffer0]
12485 ubfx x1, x28, 5, 11
12500 ldr x27, [x27, #:got_lo12:gNandFlashIdbBlockAddr]
12506 ldr x0, [x21, #:got_lo12:gFlashPageBuffer0]
12507 ldr x1, [x1, #:got_lo12:gNandPhyInfo]
12517 add x23, x23, :lo12:.LC105
12525 ldr x0, [x21, #:got_lo12:gFlashPageBuffer0]
12528 ubfx x0, x27, 5, 11
12529 ldr w1, [x2,x0,lsl 2]
12538 ldr x1, [x1, #:got_lo12:FbbtBlk]
12539 strh w27, [x1,x24,lsl 1]
12546 ldr x0, [x21, #:got_lo12:gFlashPageBuffer0]
12550 ldr x0, [x0, #:got_lo12:gFlashSpareBuffer]
12556 bl FlashEraseBlocks
12572 ldp x19, x20, [sp,16]
12573 ldp x21, x22, [sp,32]
12574 ldp x23, x24, [sp,48]
12575 ldp x25, x26, [sp,64]
12576 ldp x27, x28, [sp,80]
12577 ldp x29, x30, [sp], 256
12579 .size FlashMakeFactorBbt, .-FlashMakeFactorBbt
12581 .global FtlLowFormatEraseBlock
12582 .type FtlLowFormatEraseBlock, %function
12583 FtlLowFormatEraseBlock:
12584 stp x29, x30, [sp, -128]!
12586 stp x21, x22, [sp,32]
12588 adrp x0, :got:g_cur_erase_blk
12589 stp x19, x20, [sp,16]
12590 stp x23, x24, [sp,48]
12591 ldr x0, [x0, #:got_lo12:g_cur_erase_blk]
12593 stp x25, x26, [sp,64]
12594 stp x27, x28, [sp,80]
12600 adrp x26, :got:p_plane_order_table
12601 adrp x27, :got:c_ftl_nand_byte_pre_oob
12604 adrp x0, :got:c_ftl_nand_planes_num
12605 ldr x0, [x0, #:got_lo12:c_ftl_nand_planes_num]
12609 adrp x1, :got:req_erase
12611 ldr x1, [x1, #:got_lo12:req_erase]
12615 ldr x0, [x26, #:got_lo12:p_plane_order_table]
12616 ldrb w0, [x0,w25,sxtw]
12623 bl FtlBbmIsBadBlock
12625 adrp x1, :got:req_erase
12628 ldr x1, [x1, #:got_lo12:req_erase]
12632 adrp x3, :got:p_io_spare_buf
12636 ldr x0, [x27, #:got_lo12:c_ftl_nand_byte_pre_oob]
12637 ldr x3, [x3, #:got_lo12:p_io_spare_buf]
12644 add x0, x3, x0, sxtw 2
12649 bl IsBlkInVendorPart
12662 adrp x22, :got:req_erase
12666 ldr x0, [x22, #:got_lo12:req_erase]
12668 bl FlashEraseBlocks
12672 ldr x1, [x22, #:got_lo12:req_erase]
12683 bl FtlBbmMapBadBlock
12691 adrp x0, :got:g_inkDie_check_enable
12692 ldr x0, [x0, #:got_lo12:g_inkDie_check_enable]
12695 adrp x0, :got:c_ftl_nand_page_pre_slc_blk
12698 ldr x0, [x0, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
12717 adrp x0, :got:c_ftl_nand_planes_num
12718 ldr x0, [x0, #:got_lo12:c_ftl_nand_planes_num]
12722 ldr x1, [x22, #:got_lo12:req_erase]
12726 adrp x0, :got:p_plane_order_table
12728 ldr x0, [x0, #:got_lo12:p_plane_order_table]
12729 ldrb w0, [x0,w23,sxtw]
12737 bl FtlBbmIsBadBlock
12739 ldr x4, [x22, #:got_lo12:req_erase]
12744 add w3, w24, w2, lsl 10
12749 adrp x0, :got:p_io_data_buf_0
12750 ldr x0, [x0, #:got_lo12:p_io_data_buf_0]
12753 adrp x0, :got:c_ftl_nand_byte_pre_oob
12754 ldr x0, [x0, #:got_lo12:c_ftl_nand_byte_pre_oob]
12759 adrp x2, :got:p_io_data_buf_1
12761 ldr x3, [x2, #:got_lo12:p_io_data_buf_1]
12763 add x0, x3, x0, sxtw 2
12768 bl IsBlkInVendorPart
12777 ldr x0, [x22, #:got_lo12:req_erase]
12787 ldr x1, [x22, #:got_lo12:req_erase]
12799 bl FtlBbmMapBadBlock
12806 bl FtlFreeSysBlkQueueIn
12818 ldr x22, [x22, #:got_lo12:req_erase]
12821 bl FlashEraseBlocks
12824 ldp x19, x20, [sp,16]
12825 ldp x21, x22, [sp,32]
12826 ldp x23, x24, [sp,48]
12827 ldp x25, x26, [sp,64]
12828 ldp x27, x28, [sp,80]
12829 ldp x29, x30, [sp], 128
12831 .size FtlLowFormatEraseBlock, .-FtlLowFormatEraseBlock
12833 .global FtlBbmTblFlush
12834 .type FtlBbmTblFlush, %function
12836 stp x29, x30, [sp, -112]!
12838 stp x21, x22, [sp,32]
12839 adrp x21, :got:p_sys_data_buf
12840 adrp x22, :got:p_sys_spare_buf
12841 stp x19, x20, [sp,16]
12842 adrp x20, :got:req_sys
12844 ldr x0, [x21, #:got_lo12:p_sys_data_buf]
12845 stp x25, x26, [sp,64]
12846 stp x23, x24, [sp,48]
12847 stp x27, x28, [sp,80]
12848 ldr x1, [x20, #:got_lo12:req_sys]
12849 adrp x24, :got:c_ftl_nand_die_num
12851 adrp x25, :got:gBbtInfo
12852 adrp x26, :got:c_ftl_nand_bbm_buf_size
12854 ldr x2, [x22, #:got_lo12:p_sys_spare_buf]
12857 adrp x2, :got:c_ftl_nand_byte_pre_page
12859 ldr x2, [x2, #:got_lo12:c_ftl_nand_byte_pre_page]
12865 ldr x1, [x24, #:got_lo12:c_ftl_nand_die_num]
12867 adrp x23, :got:gBbtInfo
12872 ldr x1, [x26, #:got_lo12:c_ftl_nand_bbm_buf_size]
12874 ldr x1, [x20, #:got_lo12:req_sys]
12878 ldr x1, [x25, #:got_lo12:gBbtInfo]
12879 add x0, x3, x0, sxtw 2
12880 add x1, x1, x19, lsl 3
12885 ldr x0, [x20, #:got_lo12:req_sys]
12892 add x24, x24, :lo12:.LC106
12893 adrp x27, :got:c_ftl_nand_page_pre_slc_blk
12894 adrp x28, :got:req_erase
12896 add x25, x25, :lo12:.LC107
12900 ldr x0, [x23, #:got_lo12:gBbtInfo]
12908 adrp x0, :got:c_ftl_nand_sys_blks_per_plane
12910 ldr x0, [x0, #:got_lo12:c_ftl_nand_sys_blks_per_plane]
12915 ldr x22, [x20, #:got_lo12:req_sys]
12916 ldr x0, [x0, #:got_lo12:p_sys_data_buf]
12920 ldr x0, [x0, #:got_lo12:p_sys_spare_buf]
12924 ldr x19, [x23, #:got_lo12:gBbtInfo]
12929 orr w0, w2, w1, lsl 10
12938 ldr x0, [x27, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
12956 ldr x1, [x28, #:got_lo12:req_erase]
12961 bl FlashEraseBlocks
12969 ldr x1, [x23, #:got_lo12:gBbtInfo]
12973 ldr x1, [x20, #:got_lo12:req_sys]
12987 ldp x19, x20, [sp,16]
12988 ldp x21, x22, [sp,32]
12989 ldp x23, x24, [sp,48]
12990 ldp x25, x26, [sp,64]
12991 ldp x27, x28, [sp,80]
12992 ldp x29, x30, [sp], 112
12994 .size FtlBbmTblFlush, .-FtlBbmTblFlush
12996 .global allocate_data_superblock
12997 .type allocate_data_superblock, %function
12998 allocate_data_superblock:
12999 stp x29, x30, [sp, -128]!
13001 stp x19, x20, [sp,16]
13002 stp x21, x22, [sp,32]
13003 stp x23, x24, [sp,48]
13004 stp x25, x26, [sp,64]
13005 stp x27, x28, [sp,80]
13007 adrp x20, :got:g_num_free_superblocks
13008 adrp x24, :got:c_ftl_nand_type
13009 adrp x21, :got:g_inkDie_check_enable
13010 adrp x22, :got:g_min_erase_count
13012 adrp x0, :got:g_gc_temp_superblock
13013 ldr x0, [x0, #:got_lo12:g_gc_temp_superblock]
13016 ldr x0, [x20, #:got_lo12:g_num_free_superblocks]
13018 adrp x0, :got:g_in_swl_replace
13020 ldr x0, [x0, #:got_lo12:g_in_swl_replace]
13024 add w1, w1, w0, lsr 2
13025 ldr x0, [x21, #:got_lo12:g_inkDie_check_enable]
13029 ldr x0, [x22, #:got_lo12:g_min_erase_count]
13046 ldr x0, [x24, #:got_lo12:c_ftl_nand_type]
13050 ldr x2, [x21, #:got_lo12:g_inkDie_check_enable]
13051 ldr x0, [x20, #:got_lo12:g_num_free_superblocks]
13056 ldr x2, [x22, #:got_lo12:g_min_erase_count]
13068 adrp x0, :got:p_free_data_block_list_head
13069 ldr x0, [x0, #:got_lo12:p_free_data_block_list_head]
13070 bl List_pop_index_node
13072 ldr x1, [x20, #:got_lo12:g_num_free_superblocks]
13081 adrp x0, :got:c_ftl_nand_planes_num
13082 adrp x6, :got:req_erase
13085 ldr x0, [x0, #:got_lo12:c_ftl_nand_planes_num]
13091 adrp x0, :got:p_valid_page_count_table
13092 ubfiz x1, x26, 1, 16
13094 ldr x0, [x0, #:got_lo12:p_valid_page_count_table]
13099 ldr x1, [x6, #:got_lo12:req_erase]
13101 madd x1, x0, x3, x4
13104 add x1, x19, x0, lsl 1
13118 adrp x23, :got:req_erase
13120 adrp x1, :got:g_active_superblock
13122 adrp x0, :got:p_erase_count_table
13123 ldr x1, [x1, #:got_lo12:g_active_superblock]
13126 ldr x2, [x21, #:got_lo12:g_inkDie_check_enable]
13129 ldr x2, [x0, #:got_lo12:p_erase_count_table]
13131 ldrh w2, [x2,x27,lsl 1]
13137 adrp x1, :got:c_mlc_erase_count_value
13138 adrp x3, :got:g_totle_mlc_erase_count
13139 adrp x2, :got:g_totle_slc_erase_count
13140 ldr x6, [x0, #:got_lo12:p_erase_count_table]
13147 ldr x7, [x1, #:got_lo12:c_mlc_erase_count_value]
13152 ldr x6, [x3, #:got_lo12:g_totle_mlc_erase_count]
13160 ldr x6, [x2, #:got_lo12:g_totle_slc_erase_count]
13166 ldr x0, [x0, #:got_lo12:p_erase_count_table]
13169 adrp x0, :got:g_max_erase_count
13170 ldr x0, [x0, #:got_lo12:g_max_erase_count]
13176 ldr x1, [x1, #:got_lo12:c_mlc_erase_count_value]
13177 adrp x5, :got:g_totle_avg_erase_count
13178 ldr x3, [x3, #:got_lo12:g_totle_mlc_erase_count]
13179 ldr x2, [x2, #:got_lo12:g_totle_slc_erase_count]
13183 ldr x5, [x5, #:got_lo12:g_totle_avg_erase_count]
13184 madd w0, w1, w3, w0
13185 adrp x1, :got:c_ftl_nand_data_blks_per_plane
13187 ldr x1, [x1, #:got_lo12:c_ftl_nand_data_blks_per_plane]
13191 adrp x0, :got:gp_ect_tbl_info
13192 ldr x0, [x0, #:got_lo12:gp_ect_tbl_info]
13201 ldr x1, [x23, #:got_lo12:req_erase]
13203 madd x1, x0, x3, x1
13210 ldr x0, [x23, #:got_lo12:req_erase]
13214 bl FlashEraseBlocks
13220 ldr x2, [x23, #:got_lo12:req_erase]
13234 bl FtlBbmMapBadBlock
13235 add x0, x19, x28, lsl 1
13249 bl update_multiplier_value
13253 adrp x0, :got:p_valid_page_count_table
13255 ldr x0, [x0, #:got_lo12:p_valid_page_count_table]
13261 bl INSERT_DATA_LIST
13264 adrp x2, :got:c_ftl_nand_page_pre_blk
13265 ldr x2, [x2, #:got_lo12:c_ftl_nand_page_pre_blk]
13271 adrp x2, :got:g_GlobalSysVersion
13274 ldr x2, [x2, #:got_lo12:g_GlobalSysVersion]
13279 ldr x0, [x0, #:got_lo12:p_valid_page_count_table]
13282 strh w1, [x0,x2,lsl 1]
13284 ldp x19, x20, [sp,16]
13285 ldp x21, x22, [sp,32]
13286 ldp x23, x24, [sp,48]
13287 ldp x25, x26, [sp,64]
13288 ldp x27, x28, [sp,80]
13289 ldp x29, x30, [sp], 128
13291 .size allocate_data_superblock, .-allocate_data_superblock
13293 .global FtlGcFreeBadSuperBlk
13294 .type FtlGcFreeBadSuperBlk, %function
13295 FtlGcFreeBadSuperBlk:
13296 stp x29, x30, [sp, -112]!
13298 stp x21, x22, [sp,32]
13299 adrp x21, :got:g_gc_bad_block_temp_num
13300 stp x23, x24, [sp,48]
13302 ldr x0, [x21, #:got_lo12:g_gc_bad_block_temp_num]
13303 stp x19, x20, [sp,16]
13304 stp x25, x26, [sp,64]
13305 stp x27, x28, [sp,80]
13310 adrp x23, :got:c_ftl_nand_planes_num
13311 adrp x25, :got:p_plane_order_table
13312 adrp x26, :got:g_gc_bad_block_temp_tbl
13313 add x22, x22, :lo12:.LC108
13315 ldr x0, [x23, #:got_lo12:c_ftl_nand_planes_num]
13319 ldr x0, [x25, #:got_lo12:p_plane_order_table]
13322 ldrb w0, [x0,w20,sxtw]
13326 ldr x28, [x21, #:got_lo12:g_gc_bad_block_temp_num]
13330 ldr x0, [x26, #:got_lo12:g_gc_bad_block_temp_tbl]
13331 adrp x4, :got:g_gc_bad_block_temp_tbl
13332 ldrh w0, [x0,w19,sxtw 1]
13340 bl FtlBbmMapBadBlock
13348 ldr x1, [x4, #:got_lo12:g_gc_bad_block_temp_tbl]
13350 ldrh w5, [x1,w0,sxtw 1]
13351 strh w5, [x1,w3,sxtw 1]
13355 ldr x0, [x21, #:got_lo12:g_gc_bad_block_temp_num]
13367 bl FtlGcReFreshBadBlk
13370 ldp x19, x20, [sp,16]
13371 ldp x21, x22, [sp,32]
13372 ldp x23, x24, [sp,48]
13373 ldp x25, x26, [sp,64]
13374 ldp x27, x28, [sp,80]
13375 ldp x29, x30, [sp], 112
13377 .size FtlGcFreeBadSuperBlk, .-FtlGcFreeBadSuperBlk
13379 .global update_vpc_list
13380 .type update_vpc_list, %function
13382 stp x29, x30, [sp, -32]!
13386 adrp x0, :got:p_valid_page_count_table
13387 ubfiz x1, x19, 1, 16
13388 ldr x0, [x0, #:got_lo12:p_valid_page_count_table]
13392 adrp x0, :got:g_gc_superblock
13393 ldr x0, [x0, #:got_lo12:g_gc_superblock]
13401 adrp x0, :got:g_active_superblock
13402 ldr x0, [x0, #:got_lo12:g_active_superblock]
13407 adrp x0, :got:g_buffer_superblock
13408 ldr x0, [x0, #:got_lo12:g_buffer_superblock]
13413 adrp x0, :got:g_gc_temp_superblock
13414 ldr x0, [x0, #:got_lo12:g_gc_temp_superblock]
13420 adrp x0, :got:p_data_block_list_head
13422 ldr x0, [x0, #:got_lo12:p_data_block_list_head]
13423 bl List_remove_node
13424 adrp x0, :got:g_num_data_superblocks
13425 ldr x0, [x0, #:got_lo12:g_num_data_superblocks]
13430 bl free_data_superblock
13432 bl FtlGcFreeBadSuperBlk
13437 bl List_update_data_list
13441 ldp x29, x30, [sp], 32
13443 .size update_vpc_list, .-update_vpc_list
13445 .global decrement_vpc_count
13446 .type decrement_vpc_count, %function
13447 decrement_vpc_count:
13448 stp x29, x30, [sp, -48]!
13455 adrp x0, :got:p_valid_page_count_table
13456 ubfiz x2, x1, 1, 16
13457 ldr x0, [x0, #:got_lo12:p_valid_page_count_table]
13463 add x0, x0, :lo12:.LC109
13470 adrp x19, :got:g_tmp_data_superblock_id
13472 ldr x19, [x19, #:got_lo12:g_tmp_data_superblock_id]
13493 ldp x29, x30, [sp], 48
13495 .size decrement_vpc_count, .-decrement_vpc_count
13497 .global FtlSlcSuperblockCheck
13498 .type FtlSlcSuperblockCheck, %function
13499 FtlSlcSuperblockCheck:
13500 stp x29, x30, [sp, -48]!
13502 stp x19, x20, [sp,16]
13503 stp x21, x22, [sp,32]
13509 adrp x21, :got:mlcPageToSlcPageTbl
13511 adrp x22, :got:c_ftl_nand_planes_num
13512 ldrh w0, [x19,x0,lsl 1]
13521 ldr x1, [x22, #:got_lo12:c_ftl_nand_planes_num]
13532 ldrh w0, [x19,x0,lsl 1]
13538 ldr x0, [x21, #:got_lo12:mlcPageToSlcPageTbl]
13540 ldrh w0, [x0,w1,sxtw 1]
13547 bl decrement_vpc_count
13555 ldp x19, x20, [sp,16]
13556 ldp x21, x22, [sp,32]
13557 ldp x29, x30, [sp], 48
13559 .size FtlSlcSuperblockCheck, .-FtlSlcSuperblockCheck
13561 .global get_new_active_ppa
13562 .type get_new_active_ppa, %function
13563 get_new_active_ppa:
13564 stp x29, x30, [sp, -64]!
13566 stp x19, x20, [sp,16]
13567 stp x21, x22, [sp,32]
13568 stp x23, x24, [sp,48]
13573 adrp x21, :got:c_ftl_nand_planes_num
13574 adrp x23, :got:mlcPageToSlcPageTbl
13576 ldrh w0, [x19,x0,lsl 1]
13579 adrp x22, :got:c_ftl_nand_planes_num
13586 ldr x1, [x21, #:got_lo12:c_ftl_nand_planes_num]
13597 ldrh w0, [x19,x0,lsl 1]
13603 ldr x1, [x23, #:got_lo12:mlcPageToSlcPageTbl]
13605 ldrh w1, [x1,w2,sxtw 1]
13612 bl decrement_vpc_count
13618 adrp x24, :got:mlcPageToSlcPageTbl
13619 orr w20, w20, w0, lsl 10
13624 ldr x0, [x22, #:got_lo12:c_ftl_nand_planes_num]
13637 add x0, x19, x1, sxtw 1
13645 ldr x0, [x24, #:got_lo12:mlcPageToSlcPageTbl]
13647 ldrh w0, [x0,w1,sxtw 1]
13655 bl decrement_vpc_count
13659 ldp x19, x20, [sp,16]
13660 ldp x21, x22, [sp,32]
13661 ldp x23, x24, [sp,48]
13662 ldp x29, x30, [sp], 64
13664 .size get_new_active_ppa, .-get_new_active_ppa
13666 .global FtlVpcTblFlush
13667 .type FtlVpcTblFlush, %function
13669 stp x29, x30, [sp, -96]!
13671 stp x23, x24, [sp,48]
13672 adrp x23, :got:p_sys_data_buf
13673 adrp x24, :got:p_sys_spare_buf
13674 stp x21, x22, [sp,32]
13675 adrp x21, :got:req_sys
13676 adrp x22, :got:gSysInfo
13677 ldr x0, [x23, #:got_lo12:p_sys_data_buf]
13678 stp x25, x26, [sp,64]
13679 stp x19, x20, [sp,16]
13680 stp x27, x28, [sp,80]
13681 ldr x26, [x21, #:got_lo12:req_sys]
13682 adrp x19, :got:g_sys_save_data
13684 adrp x25, :got:g_GlobalSysVersion
13687 ldr x0, [x24, #:got_lo12:p_sys_spare_buf]
13690 ldr x0, [x22, #:got_lo12:gSysInfo]
13700 movk w1, 0x4654, lsl 16
13702 ldr x19, [x19, #:got_lo12:g_sys_save_data]
13706 adrp x0, :got:c_ftl_nand_die_num
13707 movk w1, 0x5000, lsl 16
13709 ldr x0, [x0, #:got_lo12:c_ftl_nand_die_num]
13712 adrp x0, :got:g_active_superblock
13713 ldr x0, [x0, #:got_lo12:g_active_superblock]
13720 adrp x0, :got:g_buffer_superblock
13721 orr w1, w2, w1, lsl 6
13723 ldr x0, [x0, #:got_lo12:g_buffer_superblock]
13730 adrp x0, :got:g_gc_temp_superblock
13731 orr w1, w2, w1, lsl 6
13733 ldr x0, [x0, #:got_lo12:g_gc_temp_superblock]
13740 adrp x0, :got:g_totle_mlc_erase_count
13741 orr w1, w2, w1, lsl 6
13743 adrp x2, :got:c_ftl_nand_byte_pre_page
13745 ldr x0, [x0, #:got_lo12:g_totle_mlc_erase_count]
13748 ldr x0, [x25, #:got_lo12:g_GlobalSysVersion]
13751 adrp x0, :got:g_GlobalDataVersion
13752 ldr x0, [x0, #:got_lo12:g_GlobalDataVersion]
13756 ldr x2, [x2, #:got_lo12:c_ftl_nand_byte_pre_page]
13763 adrp x2, :got:c_ftl_nand_data_blks_per_plane
13764 adrp x1, :got:p_valid_page_count_table
13766 adrp x26, :got:c_ftl_nand_page_pre_slc_blk
13767 ldr x2, [x2, #:got_lo12:c_ftl_nand_data_blks_per_plane]
13769 ldr x1, [x1, #:got_lo12:p_valid_page_count_table]
13775 bl FtlUpdateVaildLpn
13777 ldr x0, [x23, #:got_lo12:p_sys_data_buf]
13778 ldr x27, [x21, #:got_lo12:req_sys]
13781 ldr x0, [x24, #:got_lo12:p_sys_spare_buf]
13784 ldr x19, [x22, #:got_lo12:gSysInfo]
13787 orr w0, w1, w0, lsl 10
13794 ldr x0, [x26, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
13804 bl FtlFreeSysBlkQueueOut
13806 ldr x2, [x25, #:got_lo12:g_GlobalSysVersion]
13811 ubfiz w2, w0, 10, 16
13821 ldr x0, [x22, #:got_lo12:gSysInfo]
13826 ldr x2, [x21, #:got_lo12:req_sys]
13832 adrp x1, :got:c_ftl_nand_page_pre_slc_blk
13833 ldr x1, [x1, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
13846 bl FtlFreeSysBlkQueueIn
13849 ldp x19, x20, [sp,16]
13850 ldp x21, x22, [sp,32]
13851 ldp x23, x24, [sp,48]
13852 ldp x25, x26, [sp,64]
13853 ldp x27, x28, [sp,80]
13854 ldp x29, x30, [sp], 96
13856 .size FtlVpcTblFlush, .-FtlVpcTblFlush
13858 .global ftl_map_blk_gc
13859 .type ftl_map_blk_gc, %function
13861 stp x29, x30, [sp, -96]!
13863 stp x19, x20, [sp,16]
13864 stp x21, x22, [sp,32]
13865 stp x23, x24, [sp,48]
13866 stp x25, x26, [sp,64]
13867 stp x27, x28, [sp,80]
13869 adrp x22, :got:c_ftl_nand_page_pre_slc_blk
13872 bl ftl_free_no_use_map_blk
13878 ubfiz x1, x0, 1, 16
13890 ldr x0, [x22, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
13895 bl ftl_map_blk_alloc_new_blk
13898 adrp x25, :got:req_sys
13899 adrp x26, :got:p_sys_data_buf_1
13900 adrp x27, :got:p_sys_spare_buf
13905 ubfiz x28, x20, 2, 16
13907 cmp w23, w0, lsr 10
13909 ldr x0, [x26, #:got_lo12:p_sys_data_buf_1]
13911 ldr x21, [x25, #:got_lo12:req_sys]
13915 ldr x0, [x27, #:got_lo12:p_sys_spare_buf]
13939 bl FtlFreeSysBlkQueueIn
13942 ldr x22, [x22, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
13948 bl ftl_map_blk_alloc_new_blk
13951 ldp x19, x20, [sp,16]
13952 ldp x21, x22, [sp,32]
13953 ldp x23, x24, [sp,48]
13954 ldp x25, x26, [sp,64]
13955 ldp x27, x28, [sp,80]
13956 ldp x29, x30, [sp], 96
13958 .size ftl_map_blk_gc, .-ftl_map_blk_gc
13960 .global Ftl_write_map_blk_to_last_page
13961 .type Ftl_write_map_blk_to_last_page, %function
13962 Ftl_write_map_blk_to_last_page:
13963 stp x29, x30, [sp, -64]!
13966 stp x19, x20, [sp,16]
13967 stp x21, x22, [sp,32]
13978 bl FtlFreeSysBlkQueueOut
13987 ubfiz x0, x0, 1, 16
13989 adrp x21, :got:p_sys_data_buf
13991 adrp x20, :got:req_sys
13992 ldr x0, [x20, #:got_lo12:req_sys]
13993 orr w1, w1, w22, lsl 10
13995 ldr x3, [x21, #:got_lo12:p_sys_data_buf]
13998 adrp x1, :got:p_sys_spare_buf
13999 ldr x1, [x1, #:got_lo12:p_sys_spare_buf]
14008 adrp x0, :got:c_ftl_nand_page_pre_slc_blk
14011 ldr x0, [x0, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
14022 ubfiz x4, x1, 2, 16
14024 cmp w22, w0, lsr 10
14026 ldr x3, [x21, #:got_lo12:p_sys_data_buf]
14030 ubfiz x0, x2, 3, 16
14042 ldr x0, [x20, #:got_lo12:req_sys]
14054 ldp x19, x20, [sp,16]
14055 ldp x21, x22, [sp,32]
14056 ldp x29, x30, [sp], 64
14058 .size Ftl_write_map_blk_to_last_page, .-Ftl_write_map_blk_to_last_page
14060 .global FtlMapWritePage
14061 .type FtlMapWritePage, %function
14063 stp x29, x30, [sp, -96]!
14065 stp x21, x22, [sp,32]
14066 stp x23, x24, [sp,48]
14067 stp x25, x26, [sp,64]
14068 stp x19, x20, [sp,16]
14069 stp x27, x28, [sp,80]
14073 adrp x23, :got:g_totle_l2p_write_count
14074 adrp x24, :got:c_ftl_nand_page_pre_slc_blk
14076 adrp x26, :got:req_sys
14077 adrp x27, :got:p_sys_spare_buf
14079 ldr x1, [x23, #:got_lo12:g_totle_l2p_write_count]
14083 ldr x0, [x24, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
14094 bl Ftl_write_map_blk_to_last_page
14099 ldr x20, [x26, #:got_lo12:req_sys]
14100 ldrh w28, [x0,x1,lsl 1]
14104 orr w0, w0, w28, lsl 10
14106 ldr x0, [x27, #:got_lo12:p_sys_spare_buf]
14133 str w1, [x0,w21,uxtw 2]
14135 ldp x19, x20, [sp,16]
14136 ldp x21, x22, [sp,32]
14137 ldp x23, x24, [sp,48]
14138 ldp x25, x26, [sp,64]
14139 ldp x27, x28, [sp,80]
14140 ldp x29, x30, [sp], 96
14142 .size FtlMapWritePage, .-FtlMapWritePage
14144 .global flush_l2p_region
14145 .type flush_l2p_region, %function
14147 stp x29, x30, [sp, -32]!
14149 stp x19, x20, [sp,16]
14150 adrp x20, :got:p_l2p_ram_map
14151 ubfiz x19, x0, 4, 16
14152 adrp x0, :got:gL2pMapInfo
14153 ldr x20, [x20, #:got_lo12:p_l2p_ram_map]
14154 ldr x0, [x0, #:got_lo12:gL2pMapInfo]
14163 and w0, w0, 2147483647
14166 ldp x19, x20, [sp,16]
14167 ldp x29, x30, [sp], 32
14169 .size flush_l2p_region, .-flush_l2p_region
14172 .type log2phys, %function
14174 stp x29, x30, [sp, -80]!
14177 stp x21, x22, [sp,32]
14179 adrp x1, :got:c_ftl_nand_sec_pre_page_shift
14180 stp x23, x24, [sp,48]
14181 stp x19, x20, [sp,16]
14182 ldr x1, [x1, #:got_lo12:c_ftl_nand_sec_pre_page_shift]
14183 adrp x23, :got:p_l2p_ram_map
14186 ldr x1, [x23, #:got_lo12:p_l2p_ram_map]
14196 adrp x0, :got:c_ftl_nand_l2pmap_ram_region_num
14197 ldr x0, [x0, #:got_lo12:c_ftl_nand_l2pmap_ram_region_num]
14204 add x2, x1, x4, lsl 4
14210 ldr x0, [x23, #:got_lo12:p_l2p_ram_map]
14212 add x1, x1, x19, lsl 4
14214 ldr w0, [x0,x24,lsl 2]
14218 ldr x2, [x23, #:got_lo12:p_l2p_ram_map]
14224 str w3, [x1,x24,lsl 2]
14228 orr w1, w1, -2147483648
14230 adrp x0, :got:g_l2p_last_update_region_id
14231 ldr x0, [x0, #:got_lo12:g_l2p_last_update_region_id]
14234 ldr x23, [x23, #:got_lo12:p_l2p_ram_map]
14236 add x19, x0, x19, lsl 4
14244 bl select_l2p_ram_region
14246 ldr x3, [x23, #:got_lo12:p_l2p_ram_map]
14247 ubfiz x2, x19, 4, 16
14256 tbz w2, #31, .L1869
14258 bl flush_l2p_region
14266 ldp x19, x20, [sp,16]
14267 ldp x21, x22, [sp,32]
14268 ldp x23, x24, [sp,48]
14269 ldp x29, x30, [sp], 80
14271 .size log2phys, .-log2phys
14273 .global FtlReUsePrevPpa
14274 .type FtlReUsePrevPpa, %function
14276 stp x29, x30, [sp, -80]!
14278 stp x19, x20, [sp,16]
14281 stp x21, x22, [sp,32]
14284 bl P2V_block_in_plane
14286 adrp x0, :got:p_valid_page_count_table
14287 ubfiz x22, x4, 1, 16
14289 ldr x1, [x0, #:got_lo12:p_valid_page_count_table]
14293 adrp x0, :got:p_free_data_block_list_head
14294 ldr x2, [x0, #:got_lo12:p_free_data_block_list_head]
14297 adrp x2, :got:g_num_free_superblocks
14298 mov x6, -6148914691236517206
14300 ldr x3, [x2, #:got_lo12:g_num_free_superblocks]
14303 adrp x3, :got:p_data_block_list_table
14304 ldr x3, [x3, #:got_lo12:p_data_block_list_table]
14308 madd x19, x6, x19, x19
14316 ldr x0, [x0, #:got_lo12:p_free_data_block_list_head]
14318 bl List_remove_node
14319 ldr x0, [x21, #:got_lo12:g_num_free_superblocks]
14324 bl INSERT_DATA_LIST
14325 ldr x0, [x23, #:got_lo12:p_valid_page_count_table]
14348 ldp x19, x20, [sp,16]
14349 ldp x21, x22, [sp,32]
14350 ldp x29, x30, [sp], 80
14352 .size FtlReUsePrevPpa, .-FtlReUsePrevPpa
14354 .global FtlMapTblRecovery
14355 .type FtlMapTblRecovery, %function
14357 stp x29, x30, [sp, -144]!
14360 stp x25, x26, [sp,64]
14362 stp x19, x20, [sp,16]
14363 stp x21, x22, [sp,32]
14364 stp x23, x24, [sp,48]
14365 stp x27, x28, [sp,80]
14367 adrp x20, :got:p_sys_data_buf
14369 adrp x19, :got:req_sys
14377 ldr x0, [x20, #:got_lo12:p_sys_data_buf]
14378 ldr x1, [x19, #:got_lo12:req_sys]
14381 adrp x0, :got:p_sys_spare_buf
14382 ldr x0, [x0, #:got_lo12:p_sys_spare_buf]
14406 bl FtlGetLastWrittenPage
14411 ldr w0, [x25,x28,lsl 2]
14414 ldr x0, [x19, #:got_lo12:req_sys]
14421 ldr x24, [x19, #:got_lo12:req_sys]
14423 orr w0, w22, w0, lsl 10
14437 ubfiz x1, x1, 2, 16
14447 bl ftl_free_no_use_map_blk
14448 adrp x0, :got:c_ftl_nand_page_pre_slc_blk
14450 ldr x0, [x0, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
14455 bl ftl_map_blk_alloc_new_blk
14458 ldr x0, [x20, #:got_lo12:p_sys_data_buf]
14460 ldr x6, [x19, #:got_lo12:req_sys]
14465 adrp x0, :got:c_ftl_nand_page_pre_slc_blk
14467 ldr x0, [x0, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
14470 orr w0, w0, w1, lsl 10
14477 adrp x8, :got:c_ftl_nand_page_pre_slc_blk
14491 ldr x1, [x8, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
14496 ldr x1, [x20, #:got_lo12:p_sys_data_buf]
14497 sbfiz x2, x0, 3, 32
14503 ubfiz x1, x1, 2, 16
14512 ldr x0, [x19, #:got_lo12:req_sys]
14516 ldr x0, [x8, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
14522 ldr x7, [x19, #:got_lo12:req_sys]
14525 orr w0, w6, w0, lsl 10
14544 ubfiz x1, x1, 2, 16
14565 ldp x19, x20, [sp,16]
14566 ldp x21, x22, [sp,32]
14567 ldp x23, x24, [sp,48]
14568 ldp x25, x26, [sp,64]
14569 ldp x27, x28, [sp,80]
14570 ldp x29, x30, [sp], 144
14572 .size FtlMapTblRecovery, .-FtlMapTblRecovery
14574 .global FtlLoadVonderInfo
14575 .type FtlLoadVonderInfo, %function
14577 adrp x1, :got:c_ftl_nand_max_vendor_blks
14578 adrp x0, :got:gVendorBlkInfo
14579 stp x29, x30, [sp, -16]!
14581 ldr x1, [x1, #:got_lo12:c_ftl_nand_max_vendor_blks]
14582 ldr x0, [x0, #:got_lo12:gVendorBlkInfo]
14587 adrp x1, :got:g_totle_vendor_block
14588 ldr x1, [x1, #:got_lo12:g_totle_vendor_block]
14591 adrp x1, :got:c_ftl_nand_vendor_region_num
14592 ldr x1, [x1, #:got_lo12:c_ftl_nand_vendor_region_num]
14595 adrp x1, :got:p_vendor_block_table
14596 ldr x1, [x1, #:got_lo12:p_vendor_block_table]
14599 adrp x1, :got:p_vendor_block_ver_table
14600 ldr x1, [x1, #:got_lo12:p_vendor_block_ver_table]
14603 adrp x1, :got:p_vendor_block_valid_page_count
14604 ldr x1, [x1, #:got_lo12:p_vendor_block_valid_page_count]
14607 adrp x1, :got:p_vendor_region_ppn_table
14608 ldr x1, [x1, #:got_lo12:p_vendor_region_ppn_table]
14611 bl FtlMapTblRecovery
14613 ldp x29, x30, [sp], 16
14615 .size FtlLoadVonderInfo, .-FtlLoadVonderInfo
14617 .global FtlLoadMapInfo
14618 .type FtlLoadMapInfo, %function
14620 stp x29, x30, [sp, -16]!
14623 adrp x0, :got:gL2pMapInfo
14624 ldr x0, [x0, #:got_lo12:gL2pMapInfo]
14625 bl FtlMapTblRecovery
14627 ldp x29, x30, [sp], 16
14629 .size FtlLoadMapInfo, .-FtlLoadMapInfo
14631 .global FtlReadRefresh
14632 .type FtlReadRefresh, %function
14634 stp x29, x30, [sp, -128]!
14636 stp x19, x20, [sp,16]
14637 adrp x19, :got:g_sys_ext_data
14639 stp x21, x22, [sp,32]
14640 ldr x1, [x19, #:got_lo12:g_sys_ext_data]
14643 adrp x0, :got:g_MaxLpn
14646 ldr x2, [x0, #:got_lo12:g_MaxLpn]
14653 ldr x22, [x19, #:got_lo12:g_sys_ext_data]
14654 ldr x1, [x20, #:got_lo12:g_MaxLpn]
14682 bl P2V_block_in_plane
14683 bl FtlGcRefreshBlock
14692 adrp x0, :got:g_totle_read_page_count
14695 ldr x0, [x0, #:got_lo12:g_totle_read_page_count]
14700 adrp x2, :got:g_max_erase_count
14702 ldr x2, [x2, #:got_lo12:g_max_erase_count]
14704 adrp x2, :got:g_inkDie_check_enable
14705 ldr x2, [x2, #:got_lo12:g_inkDie_check_enable]
14707 adrp x2, :got:g_totle_read_page_count
14708 ldr x2, [x2, #:got_lo12:g_totle_read_page_count]
14710 add w5, w2, 1048576
14713 add w3, w4, w3, lsr 10
14720 ldr x0, [x19, #:got_lo12:g_sys_ext_data]
14728 ldp x19, x20, [sp,16]
14729 ldp x21, x22, [sp,32]
14731 ldp x29, x30, [sp], 128
14733 .size FtlReadRefresh, .-FtlReadRefresh
14735 .global FtlVendorPartWrite
14736 .type FtlVendorPartWrite, %function
14737 FtlVendorPartWrite:
14738 stp x29, x30, [sp, -176]!
14740 stp x25, x26, [sp,64]
14742 adrp x0, :got:c_ftl_nand_sec_pre_page_shift
14743 stp x19, x20, [sp,16]
14744 stp x23, x24, [sp,48]
14745 ldr x0, [x0, #:got_lo12:c_ftl_nand_sec_pre_page_shift]
14747 stp x21, x22, [sp,32]
14748 stp x27, x28, [sp,80]
14752 adrp x0, :got:c_ftl_vendor_part_size
14754 ldr x0, [x0, #:got_lo12:c_ftl_vendor_part_size]
14760 adrp x24, :got:p_vendor_data_buf
14762 adrp x28, :got:gVendorBlkInfo
14765 adrp x0, :got:p_vendor_region_ppn_table
14766 ldr x0, [x0, #:got_lo12:p_vendor_region_ppn_table]
14768 ldr w2, [x0,w20,uxtw 2]
14769 adrp x0, :got:c_ftl_nand_sec_pre_page
14770 ldr x0, [x0, #:got_lo12:c_ftl_nand_sec_pre_page]
14774 msub w21, w21, w1, w26
14778 csel w27, w0, w27, hi
14782 ldr x0, [x24, #:got_lo12:p_vendor_data_buf]
14793 adrp x1, :got:c_ftl_nand_byte_pre_page
14794 ldr x0, [x24, #:got_lo12:p_vendor_data_buf]
14795 ldr x2, [x1, #:got_lo12:c_ftl_nand_byte_pre_page]
14801 ldr x7, [x24, #:got_lo12:p_vendor_data_buf]
14803 ubfiz x21, x21, 9, 16
14815 ldr x0, [x28, #:got_lo12:gVendorBlkInfo]
14821 csinv w19, w19, wzr, ne
14822 add x23, x23, x6, sxtw
14826 ldp x19, x20, [sp,16]
14827 ldp x21, x22, [sp,32]
14828 ldp x23, x24, [sp,48]
14829 ldp x25, x26, [sp,64]
14830 ldp x27, x28, [sp,80]
14831 ldp x29, x30, [sp], 176
14833 .size FtlVendorPartWrite, .-FtlVendorPartWrite
14835 .global Ftl_save_ext_data
14836 .type Ftl_save_ext_data, %function
14838 adrp x2, :got:g_sys_ext_data
14840 stp x29, x30, [sp, -16]!
14841 movk w0, 0x4654, lsl 16
14843 ldr x2, [x2, #:got_lo12:g_sys_ext_data]
14849 movk w0, 0x5000, lsl 16
14851 adrp x0, :got:g_totle_write_sector
14852 ldr x0, [x0, #:got_lo12:g_totle_write_sector]
14855 adrp x0, :got:g_totle_read_sector
14856 ldr x0, [x0, #:got_lo12:g_totle_read_sector]
14859 adrp x0, :got:g_totle_gc_page_count
14860 ldr x0, [x0, #:got_lo12:g_totle_gc_page_count]
14863 adrp x0, :got:g_totle_write_page_count
14864 ldr x0, [x0, #:got_lo12:g_totle_write_page_count]
14867 adrp x0, :got:g_totle_read_page_count
14868 ldr x0, [x0, #:got_lo12:g_totle_read_page_count]
14871 adrp x0, :got:g_totle_l2p_write_count
14872 ldr x0, [x0, #:got_lo12:g_totle_l2p_write_count]
14875 adrp x0, :got:g_totle_slc_erase_count
14876 ldr x0, [x0, #:got_lo12:g_totle_slc_erase_count]
14879 adrp x0, :got:g_totle_sys_slc_erase_count
14880 ldr x0, [x0, #:got_lo12:g_totle_sys_slc_erase_count]
14883 adrp x0, :got:g_totle_discard_page_count
14884 ldr x0, [x0, #:got_lo12:g_totle_discard_page_count]
14887 adrp x0, :got:g_totle_cache_write_count
14888 ldr x0, [x0, #:got_lo12:g_totle_cache_write_count]
14891 adrp x0, :got:g_max_erase_count
14892 ldr x0, [x0, #:got_lo12:g_max_erase_count]
14895 adrp x0, :got:g_min_erase_count
14896 ldr x0, [x0, #:got_lo12:g_min_erase_count]
14899 adrp x0, :got:g_all_blk_used_slc_mode
14900 ldr x0, [x0, #:got_lo12:g_all_blk_used_slc_mode]
14903 adrp x0, :got:g_SlcPartLbaEndSector
14904 ldr x0, [x0, #:got_lo12:g_SlcPartLbaEndSector]
14908 bl FtlVendorPartWrite
14910 ldp x29, x30, [sp], 16
14912 .size Ftl_save_ext_data, .-Ftl_save_ext_data
14914 .global FtlEctTblFlush
14915 .type FtlEctTblFlush, %function
14917 adrp x1, :got:g_inkDie_check_enable
14918 stp x29, x30, [sp, -16]!
14920 ldr x1, [x1, #:got_lo12:g_inkDie_check_enable]
14924 adrp x2, :got:g_min_erase_count
14925 ldr x2, [x2, #:got_lo12:g_min_erase_count]
14929 csel w1, w1, w2, hi
14931 adrp x2, :got:g_ect_tbl_power_up_flush
14932 ldr x2, [x2, #:got_lo12:g_ect_tbl_power_up_flush]
14940 adrp x2, :got:gp_ect_tbl_info
14942 ldr x0, [x2, #:got_lo12:gp_ect_tbl_info]
14950 ldr x2, [x2, #:got_lo12:gp_ect_tbl_info]
14955 movk w1, 0x4254, lsl 16
14957 adrp x1, :got:g_ect_tbl_info_size
14959 ldr x1, [x1, #:got_lo12:g_ect_tbl_info_size]
14969 bl FtlVendorPartWrite
14970 bl Ftl_save_ext_data
14973 ldp x29, x30, [sp], 16
14975 .size FtlEctTblFlush, .-FtlEctTblFlush
14977 .global FtlMapBlkWriteDumpData
14978 .type FtlMapBlkWriteDumpData, %function
14979 FtlMapBlkWriteDumpData:
14980 stp x29, x30, [sp, -48]!
14982 stp x19, x20, [sp,16]
14990 adrp x0, :got:p_sys_data_buf_1
14991 adrp x2, :got:req_sys
14992 adrp x3, :got:p_sys_spare_buf
14995 ldr x0, [x0, #:got_lo12:p_sys_data_buf_1]
14997 ldr x1, [x2, #:got_lo12:req_sys]
15000 ldr x3, [x3, #:got_lo12:p_sys_spare_buf]
15003 ubfiz x3, x20, 2, 16
15013 adrp x2, :got:c_ftl_nand_byte_pre_page
15015 ldr x2, [x2, #:got_lo12:c_ftl_nand_byte_pre_page]
15019 ldr x2, [x19, #:got_lo12:req_sys]
15025 ldp x19, x20, [sp,16]
15027 ldp x29, x30, [sp], 48
15029 .size FtlMapBlkWriteDumpData, .-FtlMapBlkWriteDumpData
15031 .global FtlRecoverySuperblock
15032 .type FtlRecoverySuperblock, %function
15033 FtlRecoverySuperblock:
15034 stp x29, x30, [sp, -240]!
15036 stp x19, x20, [sp,16]
15037 stp x21, x22, [sp,32]
15038 stp x23, x24, [sp,48]
15039 stp x25, x26, [sp,64]
15040 stp x27, x28, [sp,80]
15044 adrp x0, :got:c_ftl_nand_page_pre_blk
15046 ldr x1, [x0, #:got_lo12:c_ftl_nand_page_pre_blk]
15061 add x0, x19, x1, sxtw 1
15068 bl FtlGetLastWrittenPage
15072 adrp x0, :got:slcPageToMlcPageTbl
15073 ldr x0, [x0, #:got_lo12:slcPageToMlcPageTbl]
15074 ldrh w23, [x0,w20,sxtw 1]
15078 bl FtlGetLastWrittenPage
15084 adrp x1, :got:c_ftl_nand_planes_num
15085 adrp x0, :got:c_ftl_nand_byte_pre_oob
15090 ldr x2, [x1, #:got_lo12:c_ftl_nand_planes_num]
15091 adrp x9, :got:req_read
15092 ldr x0, [x0, #:got_lo12:c_ftl_nand_byte_pre_oob]
15094 adrp x11, :got:p_gc_spare_buf
15098 add x3, x19, x3, lsl 1
15109 ldr x5, [x9, #:got_lo12:req_read]
15110 orr w1, w23, w1, lsl 10
15122 ldr x4, [x11, #:got_lo12:p_gc_spare_buf]
15124 add x1, x4, x1, sxtw 2
15131 adrp x21, :got:req_read
15135 ldr x0, [x21, #:got_lo12:req_read]
15138 adrp x0, :got:g_GlobalDataVersion
15143 ldr x1, [x0, #:got_lo12:g_GlobalDataVersion]
15149 ldr x0, [x21, #:got_lo12:req_read]
15163 ldr x4, [x1, #:got_lo12:g_GlobalDataVersion]
15168 bl ftl_cmp_data_ver
15180 ldr x0, [x21, #:got_lo12:req_read]
15190 ldr x0, [x21, #:got_lo12:req_read]
15205 ldr x0, [x21, #:got_lo12:req_read]
15216 adrp x0, :got:slcPageToMlcPageTbl
15217 ldr x0, [x0, #:got_lo12:slcPageToMlcPageTbl]
15218 ldrh w20, [x0,w20,sxtw 1]
15221 ldr x0, [x0, #:got_lo12:c_ftl_nand_page_pre_blk]
15242 adrp x24, :got:g_recovery_page_min_ver
15244 ldr x0, [x24, #:got_lo12:g_recovery_page_min_ver]
15250 ldr x0, [x24, #:got_lo12:g_recovery_page_min_ver]
15263 adrp x8, :got:mlcPageToSlcPageTbl
15269 ldr x0, [x0, #:got_lo12:c_ftl_nand_planes_num]
15272 add x2, x19, x2, lsl 1
15279 ldr x10, [x21, #:got_lo12:req_read]
15280 orr w1, w27, w1, lsl 10
15291 ldr x9, [x21, #:got_lo12:req_read]
15326 ldr x2, [x24, #:got_lo12:g_recovery_page_min_ver]
15331 ldr x2, [x8, #:got_lo12:mlcPageToSlcPageTbl]
15332 ldrh w2, [x2,x10,lsl 1]
15336 csinv w3, w28, wzr, ne
15341 adrp x0, :got:mlcPageToSlcPageTbl
15342 ldr x0, [x0, #:got_lo12:mlcPageToSlcPageTbl]
15343 ldrh w1, [x0,w27,sxtw 1]
15348 ldr x24, [x24, #:got_lo12:g_recovery_page_min_ver]
15365 ldr x24, [x24, #:got_lo12:g_recovery_page_min_ver]
15369 ldr x24, [x24, #:got_lo12:g_recovery_page_min_ver]
15386 ldr x24, [x24, #:got_lo12:g_recovery_page_min_ver]
15391 adrp x0, :got:g_power_lost_recovery_flag
15394 ldr x0, [x0, #:got_lo12:g_power_lost_recovery_flag]
15396 adrp x0, :got:gL2pMapInfo
15397 ldr x0, [x0, #:got_lo12:gL2pMapInfo]
15398 bl FtlMapBlkWriteDumpData
15402 add x0, x0, :lo12:.LC110
15413 ldr x0, [x0, #:got_lo12:c_ftl_nand_planes_num]
15416 add x2, x19, x2, lsl 1
15424 orr w1, w23, w1, lsl 10
15425 ldr x6, [x21, #:got_lo12:req_read]
15438 ldr x0, [x21, #:got_lo12:req_read]
15452 ldr x0, [x21, #:got_lo12:req_read]
15473 ldr x0, [x21, #:got_lo12:req_read]
15488 ldr x27, [x0, #:got_lo12:g_GlobalDataVersion]
15491 bl ftl_cmp_data_ver
15504 adrp x0, :got:g_recovery_page_min_ver
15506 ldr x1, [x0, #:got_lo12:g_recovery_page_min_ver]
15512 bl ftl_cmp_data_ver
15517 ldr x3, [x21, #:got_lo12:req_read]
15559 bl ftl_cmp_data_ver
15585 ldr x0, [x21, #:got_lo12:req_read]
15594 ldr x0, [x0, #:got_lo12:g_recovery_page_min_ver]
15596 bl ftl_cmp_data_ver
15600 bl ftl_cmp_data_ver
15610 bl decrement_vpc_count
15628 bl P2V_block_in_plane
15630 adrp x1, :got:g_active_superblock
15631 ldr x1, [x1, #:got_lo12:g_active_superblock]
15635 adrp x1, :got:g_buffer_superblock
15636 ldr x1, [x1, #:got_lo12:g_buffer_superblock]
15640 adrp x1, :got:g_gc_temp_superblock
15641 ldr x1, [x1, #:got_lo12:g_gc_temp_superblock]
15646 ldr x24, [x21, #:got_lo12:req_read]
15661 bl ftl_cmp_data_ver
15672 bl P2V_block_in_plane
15674 adrp x2, :got:p_valid_page_count_table
15675 ubfiz x3, x1, 1, 16
15676 ldr x2, [x2, #:got_lo12:p_valid_page_count_table]
15681 bl decrement_vpc_count
15688 adrp x1, :got:g_recovery_page_num
15689 ldr x1, [x1, #:got_lo12:g_recovery_page_num]
15693 adrp x2, :got:g_recovery_ppa_tbl
15695 ldr x2, [x2, #:got_lo12:g_recovery_ppa_tbl]
15696 str w3, [x2,w0,uxtw 2]
15701 bl decrement_vpc_count
15702 adrp x0, :got:g_recovery_page_min_ver
15703 ldr x0, [x0, #:got_lo12:g_recovery_page_min_ver]
15720 ldr x0, [x0, #:got_lo12:c_ftl_nand_page_pre_blk]
15728 ldr x0, [x0, #:got_lo12:c_ftl_nand_planes_num]
15736 add x4, x19, x0, lsl 1
15749 bl ftl_sb_update_avl_pages
15752 ldp x19, x20, [sp,16]
15753 ldp x21, x22, [sp,32]
15754 ldp x23, x24, [sp,48]
15755 ldp x25, x26, [sp,64]
15756 ldp x27, x28, [sp,80]
15757 ldp x29, x30, [sp], 240
15759 .size FtlRecoverySuperblock, .-FtlRecoverySuperblock
15761 .global FtlWriteDumpData
15762 .type FtlWriteDumpData, %function
15764 stp x29, x30, [sp, -144]!
15766 stp x19, x20, [sp,16]
15767 adrp x19, :got:g_active_superblock
15768 stp x21, x22, [sp,32]
15769 stp x23, x24, [sp,48]
15770 ldr x0, [x19, #:got_lo12:g_active_superblock]
15771 stp x25, x26, [sp,64]
15776 adrp x2, :got:c_ftl_nand_page_pre_blk
15778 ldr x2, [x2, #:got_lo12:c_ftl_nand_page_pre_blk]
15783 adrp x1, :got:g_MaxLpn
15785 ldr x1, [x1, #:got_lo12:g_MaxLpn]
15787 adrp x1, :got:c_ftl_nand_planes_num
15788 ldr x1, [x1, #:got_lo12:c_ftl_nand_planes_num]
15798 adrp x0, :got:p_sys_data_buf
15802 ldr x0, [x0, #:got_lo12:p_sys_data_buf]
15805 adrp x1, :got:p_sys_spare_buf
15806 ldr x1, [x1, #:got_lo12:p_sys_spare_buf]
15817 adrp x2, :got:c_ftl_nand_byte_pre_page
15820 ldr x2, [x2, #:got_lo12:c_ftl_nand_byte_pre_page]
15826 adrp x25, :got:g_GlobalDataVersion
15833 ldr x23, [x19, #:got_lo12:g_active_superblock]
15843 bl get_new_active_ppa
15845 ldr x0, [x25, #:got_lo12:g_GlobalDataVersion]
15852 csel w1, w1, wzr, ne
15858 bl decrement_vpc_count
15861 ldr x19, [x19, #:got_lo12:g_active_superblock]
15866 ldr x19, [x19, #:got_lo12:g_active_superblock]
15869 ldp x19, x20, [sp,16]
15870 ldp x21, x22, [sp,32]
15871 ldp x23, x24, [sp,48]
15872 ldp x25, x26, [sp,64]
15873 ldp x29, x30, [sp], 144
15875 .size FtlWriteDumpData, .-FtlWriteDumpData
15878 .type l2p_flush, %function
15880 stp x29, x30, [sp, -48]!
15882 stp x19, x20, [sp,16]
15885 adrp x20, :got:c_ftl_nand_l2pmap_ram_region_num
15886 adrp x21, :got:p_l2p_ram_map
15887 bl FtlWriteDumpData
15889 ldr x0, [x20, #:got_lo12:c_ftl_nand_l2pmap_ram_region_num]
15893 ldr x1, [x21, #:got_lo12:p_l2p_ram_map]
15894 ubfiz x0, x19, 4, 16
15898 tbz w0, #31, .L2134
15900 bl flush_l2p_region
15908 ldp x19, x20, [sp,16]
15909 ldp x29, x30, [sp], 48
15911 .size l2p_flush, .-l2p_flush
15913 .global FtlVpcCheckAndModify
15914 .type FtlVpcCheckAndModify, %function
15915 FtlVpcCheckAndModify:
15916 stp x29, x30, [sp, -112]!
15919 add x1, x1, :lo12:.LANCHOR1
15922 add x0, x0, :lo12:.LC111
15923 stp x19, x20, [sp,16]
15924 stp x21, x22, [sp,32]
15925 stp x23, x24, [sp,48]
15926 stp x25, x26, [sp,64]
15927 stp x27, x28, [sp,80]
15929 adrp x20, :got:p_valid_page_count_check_table
15930 adrp x0, :got:c_ftl_nand_blk_pre_plane
15932 adrp x21, :got:g_MaxLpn
15934 ldr x1, [x20, #:got_lo12:p_valid_page_count_check_table]
15935 ldr x0, [x0, #:got_lo12:c_ftl_nand_blk_pre_plane]
15942 ldr x0, [x21, #:got_lo12:g_MaxLpn]
15954 bl P2V_block_in_plane
15955 ubfiz x0, x0, 1, 16
15956 ldr x1, [x20, #:got_lo12:p_valid_page_count_check_table]
15967 adrp x23, :got:c_ftl_nand_data_blks_per_plane
15968 adrp x24, :got:p_valid_page_count_table
15970 add x22, x22, :lo12:.LC112
15971 adrp x26, :got:g_active_superblock
15973 ldr x0, [x23, #:got_lo12:c_ftl_nand_data_blks_per_plane]
15977 ldr x27, [x24, #:got_lo12:p_valid_page_count_table]
15978 ubfiz x21, x19, 1, 16
15979 ldr x28, [x20, #:got_lo12:p_valid_page_count_check_table]
15991 ldr x0, [x26, #:got_lo12:g_active_superblock]
15995 adrp x0, :got:g_gc_temp_superblock
15996 ldr x0, [x0, #:got_lo12:g_gc_temp_superblock]
16000 adrp x0, :got:g_buffer_superblock
16001 ldr x0, [x0, #:got_lo12:g_buffer_superblock]
16018 ldp x19, x20, [sp,16]
16019 ldp x21, x22, [sp,32]
16020 ldp x23, x24, [sp,48]
16021 ldp x25, x26, [sp,64]
16022 ldp x27, x28, [sp,80]
16023 ldp x29, x30, [sp], 112
16025 .size FtlVpcCheckAndModify, .-FtlVpcCheckAndModify
16027 .global allocate_new_data_superblock
16028 .type allocate_new_data_superblock, %function
16029 allocate_new_data_superblock:
16030 stp x29, x30, [sp, -48]!
16032 stp x19, x20, [sp,16]
16039 adrp x1, :got:p_valid_page_count_table
16040 ubfiz x0, x21, 1, 16
16041 ldr x1, [x1, #:got_lo12:p_valid_page_count_table]
16046 bl INSERT_DATA_LIST
16050 bl INSERT_FREE_LIST
16052 adrp x0, :got:g_buffer_superblock
16054 ldr x0, [x0, #:got_lo12:g_buffer_superblock]
16057 adrp x0, :got:c_ftl_nand_type
16058 ldr x0, [x0, #:got_lo12:c_ftl_nand_type]
16067 adrp x1, :got:g_active_superblock
16068 ldr x2, [x1, #:got_lo12:g_active_superblock]
16073 adrp x0, :got:g_all_blk_used_slc_mode
16074 ldr x0, [x0, #:got_lo12:g_all_blk_used_slc_mode]
16079 ldr x0, [x1, #:got_lo12:g_active_superblock]
16083 adrp x0, :got:g_inkDie_check_enable
16084 ldr x0, [x0, #:got_lo12:g_inkDie_check_enable]
16087 adrp x0, :got:g_min_erase_count
16088 ldr x0, [x0, #:got_lo12:g_min_erase_count]
16092 ldr x1, [x1, #:got_lo12:g_active_superblock]
16096 adrp x1, :got:g_tmp_data_superblock_id
16099 ldr x0, [x1, #:got_lo12:g_tmp_data_superblock_id]
16105 adrp x2, :got:p_valid_page_count_table
16106 ubfiz x1, x0, 1, 16
16107 ldr x2, [x2, #:got_lo12:p_valid_page_count_table]
16114 ldr x1, [x20, #:got_lo12:g_tmp_data_superblock_id]
16119 bl allocate_data_superblock
16126 ldp x19, x20, [sp,16]
16127 ldp x29, x30, [sp], 48
16129 .size allocate_new_data_superblock, .-allocate_new_data_superblock
16131 .global FtlCacheWriteBack
16132 .type FtlCacheWriteBack, %function
16134 adrp x0, :got:gp_last_act_superblock
16135 stp x29, x30, [sp, -144]!
16137 ldr x0, [x0, #:got_lo12:gp_last_act_superblock]
16138 stp x19, x20, [sp,16]
16139 stp x21, x22, [sp,32]
16140 stp x23, x24, [sp,48]
16141 stp x25, x26, [sp,64]
16142 stp x27, x28, [sp,80]
16144 adrp x0, :got:g_wr_page_num
16146 ldr x1, [x0, #:got_lo12:g_wr_page_num]
16149 adrp x21, :got:req_wr_io
16155 ldr x0, [x21, #:got_lo12:req_wr_io]
16157 adrp x26, :got:p_valid_page_count_table
16158 add x24, x24, :lo12:.LC113
16165 ldr x0, [x0, #:got_lo12:g_wr_page_num]
16170 ldr x1, [x21, #:got_lo12:req_wr_io]
16176 umull x20, w22, w25
16177 adrp x27, :got:c_ftl_nand_page_pre_blk
16178 adrp x28, :got:g_sys_ext_data
16180 ldr x3, [x21, #:got_lo12:req_wr_io]
16188 bl P2V_block_in_plane
16192 ldr x0, [x26, #:got_lo12:p_valid_page_count_table]
16193 ubfiz x1, x1, 1, 16
16199 ldr x0, [x27, #:got_lo12:c_ftl_nand_page_pre_blk]
16208 bl allocate_new_data_superblock
16210 ldr x1, [x28, #:got_lo12:g_sys_ext_data]
16214 ldr x23, [x21, #:got_lo12:req_wr_io]
16219 bl FtlGcMarkBadPhyBlk
16221 bl get_new_active_ppa
16250 bl P2V_block_in_plane
16252 ldr x2, [x26, #:got_lo12:p_valid_page_count_table]
16253 ubfiz x0, x1, 1, 16
16262 bl decrement_vpc_count
16270 ldp x19, x20, [sp,16]
16271 ldp x21, x22, [sp,32]
16272 ldp x23, x24, [sp,48]
16273 ldp x25, x26, [sp,64]
16274 ldp x27, x28, [sp,80]
16275 ldp x29, x30, [sp], 144
16277 .size FtlCacheWriteBack, .-FtlCacheWriteBack
16279 .global rk_ftl_cache_write_back
16280 .type rk_ftl_cache_write_back, %function
16281 rk_ftl_cache_write_back:
16282 stp x29, x30, [sp, -16]!
16284 bl FtlCacheWriteBack
16285 ldp x29, x30, [sp], 16
16287 .size rk_ftl_cache_write_back, .-rk_ftl_cache_write_back
16289 .global FtlSysFlush
16290 .type FtlSysFlush, %function
16292 stp x29, x30, [sp, -16]!
16294 bl FtlCacheWriteBack
16300 ldp x29, x30, [sp], 16
16302 .size FtlSysFlush, .-FtlSysFlush
16305 .type FtlDeInit, %function
16307 adrp x0, :got:gFtlInitStatus
16308 stp x29, x30, [sp, -16]!
16310 ldr x0, [x0, #:got_lo12:gFtlInitStatus]
16317 ldp x29, x30, [sp], 16
16319 .size FtlDeInit, .-FtlDeInit
16321 .global rk_ftl_de_init
16322 .type rk_ftl_de_init, %function
16324 stp x29, x30, [sp, -16]!
16329 ldp x29, x30, [sp], 16
16331 .size rk_ftl_de_init, .-rk_ftl_de_init
16334 .type FtlDiscard, %function
16336 stp x29, x30, [sp, -96]!
16339 stp x19, x20, [sp,16]
16341 adrp x0, :got:g_MaxLbaSector
16342 stp x21, x22, [sp,32]
16343 stp x23, x24, [sp,48]
16344 ldr x0, [x0, #:got_lo12:g_MaxLbaSector]
16353 adrp x22, :got:c_ftl_nand_sec_pre_page
16354 bl FtlCacheWriteBack
16355 ldr x0, [x22, #:got_lo12:c_ftl_nand_sec_pre_page]
16358 msub w20, w1, w21, w20
16364 csel w1, w1, w19, ls
16365 sub w19, w19, w1, uxth
16367 adrp x20, .LANCHOR0
16371 add x20, x20, :lo12:.LANCHOR0
16372 adrp x24, :got:g_totle_discard_page_count
16375 ldr x0, [x22, #:got_lo12:c_ftl_nand_sec_pre_page]
16390 ldr x1, [x24, #:got_lo12:g_totle_discard_page_count]
16399 bl P2V_block_in_plane
16400 bl decrement_vpc_count
16402 ldr x0, [x22, #:got_lo12:c_ftl_nand_sec_pre_page]
16409 add x0, x0, :lo12:.LANCHOR0
16419 ldp x19, x20, [sp,16]
16420 ldp x21, x22, [sp,32]
16421 ldp x23, x24, [sp,48]
16423 ldp x29, x30, [sp], 96
16425 .size FtlDiscard, .-FtlDiscard
16427 .global FtlGcFreeTempBlock
16428 .type FtlGcFreeTempBlock, %function
16429 FtlGcFreeTempBlock:
16430 stp x29, x30, [sp, -112]!
16432 stp x19, x20, [sp,16]
16433 adrp x19, :got:g_gc_temp_superblock
16434 adrp x20, :got:c_ftl_nand_page_pre_blk
16435 stp x21, x22, [sp,32]
16436 stp x23, x24, [sp,48]
16437 ldr x2, [x19, #:got_lo12:g_gc_temp_superblock]
16438 stp x25, x26, [sp,64]
16439 stp x27, x28, [sp,80]
16440 ldr x1, [x20, #:got_lo12:c_ftl_nand_page_pre_blk]
16447 adrp x0, :got:ftl_gc_temp_power_lost_recovery_flag
16448 ldr x0, [x0, #:got_lo12:ftl_gc_temp_power_lost_recovery_flag]
16451 ldr x22, [x19, #:got_lo12:g_gc_temp_superblock]
16455 adrp x21, :got:p_valid_page_count_table
16456 bl FtlCacheWriteBack
16457 ldr x20, [x20, #:got_lo12:c_ftl_nand_page_pre_blk]
16458 adrp x25, :got:p_gc_page_info
16461 ldr x0, [x21, #:got_lo12:p_valid_page_count_table]
16464 adrp x20, :got:g_gc_page_offset
16469 strh w0, [x1,x2,lsl 1]
16470 adrp x0, :got:g_totle_gc_page_count
16471 ldr x1, [x20, #:got_lo12:g_gc_page_offset]
16472 ldr x0, [x0, #:got_lo12:g_totle_gc_page_count]
16481 add x0, x0, :lo12:.LANCHOR2
16490 adrp x0, :got:g_num_free_superblocks
16491 ldr x0, [x0, #:got_lo12:g_num_free_superblocks]
16496 ldr x0, [x19, #:got_lo12:g_gc_temp_superblock]
16497 bl FtlGcScanTempBlk
16501 adrp x0, :got:g_sys_ext_data
16502 ubfiz x21, x21, 1, 16
16503 ldr x0, [x0, #:got_lo12:g_sys_ext_data]
16507 adrp x0, :got:p_erase_count_table
16508 ldr x0, [x0, #:got_lo12:p_erase_count_table]
16518 adrp x0, :got:ftl_gc_temp_power_lost_recovery_flag
16520 ldr x1, [x0, #:got_lo12:ftl_gc_temp_power_lost_recovery_flag]
16525 bl FtlBbmMapBadBlock
16528 ldr x0, [x19, #:got_lo12:ftl_gc_temp_power_lost_recovery_flag]
16533 adrp x0, .LANCHOR2+128
16535 ldrh w2, [x0,#:lo12:.LANCHOR2+128]
16541 ldr x0, [x25, #:got_lo12:p_gc_page_info]
16543 umull x24, w22, w26
16554 bl P2V_block_in_plane
16562 bl decrement_vpc_count
16567 ldr x0, [x20, #:got_lo12:g_gc_page_offset]
16576 ldr x0, [x19, #:got_lo12:g_gc_temp_superblock]
16581 bl decrement_vpc_count
16582 ldr x21, [x21, #:got_lo12:p_valid_page_count_table]
16583 ldr x0, [x19, #:got_lo12:g_gc_temp_superblock]
16586 ubfiz x1, x0, 1, 16
16589 bl INSERT_DATA_LIST
16592 bl INSERT_FREE_LIST
16594 ldr x19, [x19, #:got_lo12:g_gc_temp_superblock]
16597 adrp x0, :got:g_gc_blk_num
16598 ldr x20, [x20, #:got_lo12:g_gc_page_offset]
16600 ldr x0, [x0, #:got_lo12:g_gc_blk_num]
16604 adrp x0, :got:g_inkDie_check_enable
16605 adrp x1, :got:g_num_free_superblocks
16606 ldr x0, [x0, #:got_lo12:g_inkDie_check_enable]
16608 adrp x0, :got:c_ftl_nand_data_op_blks_per_plane
16610 adrp x2, :got:g_min_erase_count
16611 ldr x2, [x2, #:got_lo12:g_min_erase_count]
16615 ldr x0, [x0, #:got_lo12:c_ftl_nand_data_op_blks_per_plane]
16616 ldr x1, [x1, #:got_lo12:g_num_free_superblocks]
16621 adrp x1, :got:g_gc_free_blk_threshold
16623 ldr x1, [x1, #:got_lo12:g_gc_free_blk_threshold]
16626 adrp x0, :got:g_gc_superblock
16628 ldr x0, [x0, #:got_lo12:g_gc_superblock]
16631 ldr x0, [x0, #:got_lo12:c_ftl_nand_data_op_blks_per_plane]
16632 ldr x1, [x1, #:got_lo12:g_num_free_superblocks]
16635 add w0, w0, w0, lsl 1
16638 adrp x0, :got:g_gc_superblock
16640 ldr x0, [x0, #:got_lo12:g_gc_superblock]
16642 adrp x0, :got:g_gc_free_blk_threshold
16644 ldr x0, [x0, #:got_lo12:g_gc_free_blk_threshold]
16650 ldp x19, x20, [sp,16]
16651 ldp x21, x22, [sp,32]
16652 ldp x23, x24, [sp,48]
16653 ldp x25, x26, [sp,64]
16654 ldp x27, x28, [sp,80]
16655 ldp x29, x30, [sp], 112
16657 .size FtlGcFreeTempBlock, .-FtlGcFreeTempBlock
16659 .global FtlGcPageRecovery
16660 .type FtlGcPageRecovery, %function
16662 stp x29, x30, [sp, -32]!
16664 stp x19, x20, [sp,16]
16665 adrp x19, :got:c_ftl_nand_page_pre_blk
16666 adrp x20, :got:g_gc_temp_superblock
16667 ldr x19, [x19, #:got_lo12:c_ftl_nand_page_pre_blk]
16668 ldr x20, [x20, #:got_lo12:g_gc_temp_superblock]
16671 bl FtlGcScanTempBlk
16676 adrp x0, :got:gL2pMapInfo
16677 ldr x0, [x0, #:got_lo12:gL2pMapInfo]
16678 bl FtlMapBlkWriteDumpData
16680 bl FtlGcFreeTempBlock
16681 adrp x0, :got:ftl_gc_temp_power_lost_recovery_flag
16682 ldr x0, [x0, #:got_lo12:ftl_gc_temp_power_lost_recovery_flag]
16685 ldp x19, x20, [sp,16]
16686 ldp x29, x30, [sp], 32
16688 .size FtlGcPageRecovery, .-FtlGcPageRecovery
16690 .global FtlPowerLostRecovery
16691 .type FtlPowerLostRecovery, %function
16692 FtlPowerLostRecovery:
16693 adrp x0, :got:g_power_lost_recovery_flag
16694 stp x29, x30, [sp, -32]!
16696 ldr x0, [x0, #:got_lo12:g_power_lost_recovery_flag]
16698 adrp x19, :got:g_active_superblock
16700 adrp x0, :got:g_recovery_page_num
16701 ldr x0, [x0, #:got_lo12:g_recovery_page_num]
16703 ldr x19, [x19, #:got_lo12:g_active_superblock]
16705 bl FtlRecoverySuperblock
16707 adrp x19, :got:g_buffer_superblock
16708 bl FtlSlcSuperblockCheck
16709 ldr x19, [x19, #:got_lo12:g_buffer_superblock]
16711 bl FtlRecoverySuperblock
16713 bl FtlSlcSuperblockCheck
16714 bl FtlGcPageRecovery
16716 bl decrement_vpc_count
16719 ldp x29, x30, [sp], 32
16721 .size FtlPowerLostRecovery, .-FtlPowerLostRecovery
16723 .global Ftl_gc_temp_data_write_back
16724 .type Ftl_gc_temp_data_write_back, %function
16725 Ftl_gc_temp_data_write_back:
16726 stp x29, x30, [sp, -64]!
16729 stp x19, x20, [sp,16]
16730 stp x21, x22, [sp,32]
16731 adrp x19, :got:req_gc_dst
16732 adrp x21, :got:g_gc_num_req
16737 ldr x0, [x19, #:got_lo12:req_gc_dst]
16738 ldr x1, [x21, #:got_lo12:g_gc_num_req]
16743 ldr x22, [x21, #:got_lo12:g_gc_num_req]
16747 ldr x3, [x19, #:got_lo12:req_gc_dst]
16754 adrp x1, :got:g_gc_temp_superblock
16755 adrp x2, :got:p_valid_page_count_table
16756 ldr x1, [x1, #:got_lo12:g_gc_temp_superblock]
16757 ldr x2, [x2, #:got_lo12:p_valid_page_count_table]
16760 strh wzr, [x2,x5,lsl 1]
16762 adrp x1, :got:g_sys_ext_data
16763 ldr x1, [x1, #:got_lo12:g_sys_ext_data]
16771 bl FtlBbmMapBadBlock
16773 bl FtlGcPageVarInit
16785 ldr x19, [x19, #:got_lo12:req_gc_dst]
16789 adrp x0, :got:g_gc_temp_superblock
16790 ldr x0, [x0, #:got_lo12:g_gc_temp_superblock]
16795 bl FtlGcFreeTempBlock
16799 ldp x19, x20, [sp,16]
16800 ldp x21, x22, [sp,32]
16802 ldp x29, x30, [sp], 64
16804 .size Ftl_gc_temp_data_write_back, .-Ftl_gc_temp_data_write_back
16806 .global FtlSysBlkInit
16807 .type FtlSysBlkInit, %function
16809 adrp x0, :got:c_ftl_nand_max_sys_blks
16810 stp x29, x30, [sp, -48]!
16812 ldr x0, [x0, #:got_lo12:c_ftl_nand_max_sys_blks]
16813 stp x19, x20, [sp,16]
16814 stp x21, x22, [sp,32]
16816 bl FtlFreeSysBlkQueueInit
16818 adrp x0, :got:gSysInfo
16819 ldr x0, [x0, #:got_lo12:gSysInfo]
16832 bl FtlLoadVonderInfo
16833 bl Ftl_load_ext_data
16835 bl FtlFreeSysBLkSort
16836 bl SupperBlkListInit
16837 bl FtlPowerLostRecovery
16838 adrp x0, :got:c_ftl_nand_l2pmap_ram_region_num
16840 ldr x0, [x0, #:got_lo12:c_ftl_nand_l2pmap_ram_region_num]
16842 adrp x0, :got:p_l2p_ram_map
16843 ldr x0, [x0, #:got_lo12:p_l2p_ram_map]
16849 add x4, x0, x1, lsl 4
16852 tbz w4, #31, .L2268
16854 adrp x19, :got:g_sys_save_data
16856 adrp x20, :got:g_active_superblock
16857 ldr x1, [x19, #:got_lo12:g_sys_save_data]
16862 adrp x0, :got:g_power_lost_recovery_flag
16863 ldr x0, [x0, #:got_lo12:g_power_lost_recovery_flag]
16867 adrp x3, :got:p_valid_page_count_table
16868 ldr x1, [x20, #:got_lo12:g_active_superblock]
16869 ldr x3, [x3, #:got_lo12:p_valid_page_count_table]
16877 adrp x0, :got:c_ftl_nand_page_pre_blk
16879 ldr x0, [x0, #:got_lo12:c_ftl_nand_page_pre_blk]
16884 adrp x1, :got:g_buffer_superblock
16885 ldr x1, [x1, #:got_lo12:g_buffer_superblock]
16895 adrp x0, :got:gL2pMapInfo
16897 ldr x0, [x0, #:got_lo12:gL2pMapInfo]
16898 bl FtlMapBlkWriteDumpData
16899 adrp x0, :got:gVendorBlkInfo
16900 ldr x0, [x0, #:got_lo12:gVendorBlkInfo]
16901 bl FtlMapBlkWriteDumpData
16902 ldr x1, [x19, #:got_lo12:g_sys_save_data]
16910 bl FtlUpdateVaildLpn
16911 ldr x20, [x20, #:got_lo12:g_active_superblock]
16918 adrp x21, :got:g_buffer_superblock
16919 ldr x21, [x21, #:got_lo12:g_buffer_superblock]
16922 bl FtlGcRefreshBlock
16924 bl FtlGcRefreshBlock
16926 bl allocate_new_data_superblock
16928 bl allocate_new_data_superblock
16929 adrp x0, :got:gVendorBlkInfo
16930 ldr x0, [x0, #:got_lo12:gVendorBlkInfo]
16931 bl FtlMapBlkWriteDumpData
16933 ldr x19, [x19, #:got_lo12:g_sys_save_data]
16937 bl FtlVpcCheckAndModify
16940 ldp x19, x20, [sp,16]
16941 ldp x21, x22, [sp,32]
16942 ldp x29, x30, [sp], 48
16944 .size FtlSysBlkInit, .-FtlSysBlkInit
16947 .type FtlInit, %function
16949 stp x29, x30, [sp, -32]!
16950 adrp x1, :got:g_LowFormat
16952 stp x19, x20, [sp,16]
16953 adrp x19, :got:gFtlInitStatus
16956 ldr x19, [x19, #:got_lo12:gFtlInitStatus]
16959 add x0, x0, :lo12:.LC72
16960 ldr x1, [x1, #:got_lo12:g_LowFormat]
16963 add x1, x1, :lo12:.LC73
16966 bl FtlConstantsInit
16968 bl FtlVariablesInit
16969 adrp x0, :got:c_ftl_nand_max_sys_blks
16970 ldr x0, [x0, #:got_lo12:c_ftl_nand_max_sys_blks]
16972 bl FtlFreeSysBlkQueueInit
16981 ldp x19, x20, [sp,16]
16982 ldp x29, x30, [sp], 32
16984 .size FtlInit, .-FtlInit
16986 .global rk_ftl_init
16987 .type rk_ftl_init, %function
16989 stp x29, x30, [sp, -32]!
16992 stp x19, x20, [sp,16]
16993 adrp x20, :got:gLoaderBootInfo
16995 adrp x19, :got:RK29_NANDC_REG_BASE
16996 adrp x1, :got:RK29_NANDC1_REG_BASE
16997 ldr x20, [x20, #:got_lo12:gLoaderBootInfo]
16999 ldr x19, [x19, #:got_lo12:RK29_NANDC_REG_BASE]
17002 ldr x1, [x1, #:got_lo12:RK29_NANDC1_REG_BASE]
17004 bl rknand_get_reg_addr
17008 bl rk_nandc_irq_init
17013 bl FlashSramLoadStore
17014 bl rknand_flash_cs_init
17019 adrp x0, :got:gNandPhyInfo
17020 ldr x0, [x0, #:got_lo12:gNandPhyInfo]
17025 add x0, x0, :lo12:.LC114
17029 ldp x19, x20, [sp,16]
17030 ldp x29, x30, [sp], 32
17032 .size rk_ftl_init, .-rk_ftl_init
17034 .global Ftl_get_new_temp_ppa
17035 .type Ftl_get_new_temp_ppa, %function
17036 Ftl_get_new_temp_ppa:
17037 stp x29, x30, [sp, -32]!
17041 adrp x19, :got:g_gc_temp_superblock
17042 ldr x0, [x19, #:got_lo12:g_gc_temp_superblock]
17049 bl FtlCacheWriteBack
17051 bl FtlGcFreeTempBlock
17052 ldr x0, [x19, #:got_lo12:g_gc_temp_superblock]
17054 bl allocate_data_superblock
17055 adrp x0, :got:g_gc_blk_num
17056 ldr x0, [x0, #:got_lo12:g_gc_blk_num]
17058 adrp x0, :got:g_gc_page_offset
17059 ldr x0, [x0, #:got_lo12:g_gc_page_offset]
17066 ldr x0, [x19, #:got_lo12:g_gc_temp_superblock]
17067 bl get_new_active_ppa
17069 ldp x29, x30, [sp], 32
17071 .size Ftl_get_new_temp_ppa, .-Ftl_get_new_temp_ppa
17073 .global rk_ftl_garbage_collect
17074 .type rk_ftl_garbage_collect, %function
17075 rk_ftl_garbage_collect:
17076 stp x29, x30, [sp, -160]!
17078 stp x21, x22, [sp,32]
17079 adrp x22, :got:g_in_gc_progress
17080 stp x19, x20, [sp,16]
17081 stp x23, x24, [sp,48]
17082 ldr x2, [x22, #:got_lo12:g_in_gc_progress]
17083 stp x25, x26, [sp,64]
17084 stp x27, x28, [sp,80]
17089 adrp x0, .LANCHOR2+128
17092 ldrh w0, [x0,#:lo12:.LANCHOR2+128]
17096 adrp x0, :got:g_gc_next_blk_1
17098 ldr x0, [x0, #:got_lo12:g_gc_next_blk_1]
17104 adrp x0, :got:g_gc_temp_superblock
17105 ldr x0, [x0, #:got_lo12:g_gc_temp_superblock]
17110 bl FtlGcFreeTempBlock
17115 adrp x1, :got:g_gc_next_blk
17116 ldr x1, [x1, #:got_lo12:g_gc_next_blk]
17124 adrp x26, :got:g_gc_skip_write_count
17126 adrp x19, :got:g_gc_superblock
17127 ldr x20, [x26, #:got_lo12:g_gc_skip_write_count]
17130 add w0, w0, w24, lsl 7
17137 adrp x1, :got:g_inkDie_check_enable
17138 ldr x1, [x1, #:got_lo12:g_inkDie_check_enable]
17141 adrp x27, :got:g_min_erase_count
17142 ldr x27, [x27, #:got_lo12:g_min_erase_count]
17146 adrp x25, :got:gc_ink_free_return_value
17147 ldr x21, [x25, #:got_lo12:gc_ink_free_return_value]
17151 bl FtlGcReFreshBadBlk
17152 ldr x0, [x19, #:got_lo12:g_gc_superblock]
17157 adrp x0, :got:g_gc_next_blk
17158 ldr x0, [x0, #:got_lo12:g_gc_next_blk]
17179 bl List_get_gc_head_node
17184 adrp x20, :got:g_gc_blk_index
17185 ldr x20, [x20, #:got_lo12:g_gc_blk_index]
17188 adrp x27, :got:p_valid_page_count_table
17189 ubfiz x28, x28, 1, 16
17190 adrp x2, :got:c_ftl_nand_planes_num
17191 ldr x27, [x27, #:got_lo12:p_valid_page_count_table]
17192 ldr x2, [x2, #:got_lo12:c_ftl_nand_planes_num]
17196 adrp x1, :got:c_ftl_nand_page_pre_slc_blk
17197 ldr x1, [x1, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
17203 adrp x1, :got:g_in_swl_replace
17205 ldr x1, [x1, #:got_lo12:g_in_swl_replace]
17209 bl List_get_gc_head_node
17214 ubfiz x5, x21, 1, 16
17218 add x0, x0, :lo12:.LC115
17234 ldr x25, [x25, #:got_lo12:gc_ink_free_return_value]
17242 bl GetSwlReplaceBlock
17247 ldr x25, [x25, #:got_lo12:gc_ink_free_return_value]
17250 ldr x0, [x19, #:got_lo12:g_gc_superblock]
17255 adrp x0, :got:g_gc_temp_superblock
17256 ldr x0, [x0, #:got_lo12:g_gc_temp_superblock]
17260 adrp x0, :got:g_gc_next_blk
17261 ldr x0, [x0, #:got_lo12:g_gc_next_blk]
17265 adrp x25, :got:g_num_free_superblocks
17266 ldr x26, [x26, #:got_lo12:g_gc_skip_write_count]
17268 ldr x27, [x25, #:got_lo12:g_num_free_superblocks]
17273 csel w0, w0, w2, cc
17276 adrp x0, :got:gc_ink_free_return_value
17278 ldr x0, [x0, #:got_lo12:gc_ink_free_return_value]
17280 bl GetSwlReplaceBlock
17284 adrp x20, :got:g_gc_merge_free_blk_threshold
17286 ldr x26, [x20, #:got_lo12:g_gc_merge_free_blk_threshold]
17291 bl List_get_gc_head_node
17295 adrp x1, :got:g_SlcPartLbaEndSector
17296 adrp x4, :got:c_ftl_nand_type
17298 ldr x1, [x1, #:got_lo12:g_SlcPartLbaEndSector]
17300 adrp x1, :got:p_valid_page_count_table
17302 ldr x0, [x4, #:got_lo12:c_ftl_nand_type]
17306 adrp x0, :got:g_all_blk_used_slc_mode
17307 ldr x0, [x0, #:got_lo12:g_all_blk_used_slc_mode]
17310 adrp x0, :got:g_inkDie_check_enable
17311 ldr x0, [x0, #:got_lo12:g_inkDie_check_enable]
17315 ldr x1, [x1, #:got_lo12:p_valid_page_count_table]
17317 ldrh w5, [x0,x2,lsl 1]
17318 adrp x0, :got:c_ftl_nand_page_pre_slc_blk
17319 ldr x2, [x4, #:got_lo12:c_ftl_nand_type]
17320 ldr x0, [x0, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
17323 adrp x0, :got:c_ftl_nand_planes_num
17325 ldr x0, [x0, #:got_lo12:c_ftl_nand_planes_num]
17330 csel w0, w1, w0, eq
17335 bl List_get_gc_head_node
17337 adrp x0, :got:g_MaxLpn
17338 adrp x1, :got:g_VaildLpn
17339 ldr x20, [x20, #:got_lo12:g_gc_merge_free_blk_threshold]
17340 ldr x0, [x0, #:got_lo12:g_MaxLpn]
17341 ldr x1, [x1, #:got_lo12:g_VaildLpn]
17344 add w0, w0, w0, lsl 1
17355 ldr x20, [x20, #:got_lo12:g_gc_merge_free_blk_threshold]
17360 ldr x1, [x1, #:got_lo12:p_valid_page_count_table]
17362 ldrh w1, [x1,x2,lsl 1]
17365 bl List_get_gc_head_node
17383 adrp x0, :got:p_valid_page_count_table
17384 adrp x5, :got:g_gc_free_blk_threshold
17385 ubfiz x4, x21, 1, 16
17386 ldr x25, [x25, #:got_lo12:g_num_free_superblocks]
17388 ldr x0, [x0, #:got_lo12:p_valid_page_count_table]
17389 ldr x5, [x5, #:got_lo12:g_gc_free_blk_threshold]
17392 adrp x0, :got:p_erase_count_table
17394 ldr x0, [x0, #:got_lo12:p_erase_count_table]
17398 add x0, x0, :lo12:.LC116
17402 bl FtlGcReFreshBadBlk
17409 adrp x0, :got:g_num_free_superblocks
17411 ldr x0, [x0, #:got_lo12:g_num_free_superblocks]
17415 adrp x0, :got:c_ftl_nand_page_pre_blk
17417 ldr x0, [x0, #:got_lo12:c_ftl_nand_page_pre_blk]
17432 adrp x0, :got:g_gc_free_blk_threshold
17433 ldr x4, [x0, #:got_lo12:g_gc_free_blk_threshold]
17437 adrp x1, :got:g_gc_temp_superblock
17438 ldr x1, [x1, #:got_lo12:g_gc_temp_superblock]
17443 adrp x1, :got:g_gc_next_blk
17444 ldr x1, [x1, #:got_lo12:g_gc_next_blk]
17448 adrp x1, :got:gc_ink_free_return_value
17449 ldr x1, [x1, #:got_lo12:gc_ink_free_return_value]
17452 adrp x1, :got:g_MaxLpn
17453 adrp x3, :got:g_VaildLpn
17454 ldr x1, [x1, #:got_lo12:g_MaxLpn]
17455 ldr x3, [x3, #:got_lo12:g_VaildLpn]
17458 add w1, w1, w1, lsl 1
17462 adrp x1, :got:c_ftl_nand_data_op_blks_per_plane
17463 ldr x0, [x0, #:got_lo12:g_gc_free_blk_threshold]
17464 ldr x1, [x1, #:got_lo12:c_ftl_nand_data_op_blks_per_plane]
17466 add w1, w1, w1, lsl 1
17474 adrp x0, :got:g_in_swl_replace
17475 ldr x0, [x0, #:got_lo12:g_in_swl_replace]
17479 adrp x1, :got:c_ftl_nand_data_op_blks_per_plane
17480 ldr x0, [x0, #:got_lo12:g_gc_free_blk_threshold]
17481 ldr x1, [x1, #:got_lo12:c_ftl_nand_data_op_blks_per_plane]
17483 add w1, w1, w1, lsl 1
17489 adrp x0, :got:g_inkDie_check_enable
17490 ldr x0, [x0, #:got_lo12:g_inkDie_check_enable]
17497 adrp x0, :got:g_gc_temp_superblock
17499 ldr x0, [x0, #:got_lo12:g_gc_temp_superblock]
17504 adrp x1, :got:g_gc_next_blk
17505 ldr x1, [x1, #:got_lo12:g_gc_next_blk]
17509 ldr x1, [x19, #:got_lo12:g_gc_superblock]
17517 adrp x0, :got:g_in_swl_replace
17518 adrp x20, :got:g_num_free_superblocks
17519 adrp x21, :got:gc_ink_free_return_value
17520 ldr x0, [x0, #:got_lo12:g_in_swl_replace]
17522 adrp x0, :got:g_gc_free_blk_threshold
17523 ldr x24, [x20, #:got_lo12:g_num_free_superblocks]
17524 ldr x2, [x0, #:got_lo12:g_gc_free_blk_threshold]
17529 ldr x1, [x21, #:got_lo12:gc_ink_free_return_value]
17532 adrp x1, :got:g_MaxLpn
17533 adrp x3, :got:g_VaildLpn
17534 ldr x1, [x1, #:got_lo12:g_MaxLpn]
17535 ldr x3, [x3, #:got_lo12:g_VaildLpn]
17538 add w1, w1, w1, lsl 1
17542 adrp x1, :got:c_ftl_nand_data_op_blks_per_plane
17543 ldr x0, [x0, #:got_lo12:g_gc_free_blk_threshold]
17544 ldr x1, [x1, #:got_lo12:c_ftl_nand_data_op_blks_per_plane]
17546 add w1, w1, w1, lsl 1
17555 ldr x21, [x21, #:got_lo12:gc_ink_free_return_value]
17558 ldr x21, [x21, #:got_lo12:gc_ink_free_return_value]
17561 adrp x23, :got:c_ftl_nand_data_op_blks_per_plane
17562 ldr x23, [x23, #:got_lo12:c_ftl_nand_data_op_blks_per_plane]
17564 add w1, w1, w1, lsl 1
17567 bl List_get_gc_head_node
17568 ubfiz x0, x0, 1, 16
17569 adrp x1, :got:p_valid_page_count_table
17570 ldr x1, [x1, #:got_lo12:p_valid_page_count_table]
17573 adrp x0, :got:c_ftl_nand_page_pre_slc_blk
17574 adrp x1, :got:c_ftl_nand_planes_num
17575 ldr x0, [x0, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
17576 ldr x1, [x1, #:got_lo12:c_ftl_nand_planes_num]
17596 bl decrement_vpc_count
17597 ldr x20, [x20, #:got_lo12:g_num_free_superblocks]
17602 adrp x0, :got:g_inkDie_check_enable
17604 ldr x0, [x0, #:got_lo12:g_inkDie_check_enable]
17607 csinc w20, w20, wzr, ne
17612 ldr x1, [x19, #:got_lo12:g_gc_superblock]
17622 adrp x0, :got:g_gc_next_blk
17623 ldr x0, [x0, #:got_lo12:g_gc_next_blk]
17631 ldr x23, [x19, #:got_lo12:g_gc_superblock]
17638 ldr x23, [x19, #:got_lo12:g_gc_superblock]
17646 adrp x0, :got:g_gc_cur_blk_valid_pages
17649 ldr x0, [x0, #:got_lo12:g_gc_cur_blk_valid_pages]
17651 adrp x0, :got:p_valid_page_count_table
17652 ldr x0, [x0, #:got_lo12:p_valid_page_count_table]
17654 ldrh w1, [x0,x1,lsl 1]
17655 adrp x0, :got:g_gc_cur_blk_max_valid_pages
17656 ldr x0, [x0, #:got_lo12:g_gc_cur_blk_max_valid_pages]
17659 ldr x0, [x19, #:got_lo12:g_gc_superblock]
17661 adrp x0, :got:g_active_superblock
17662 ldr x0, [x0, #:got_lo12:g_active_superblock]
17666 adrp x0, :got:g_buffer_superblock
17667 ldr x0, [x0, #:got_lo12:g_buffer_superblock]
17677 ldr x19, [x19, #:got_lo12:g_gc_superblock]
17682 ldr x1, [x19, #:got_lo12:g_gc_superblock]
17685 adrp x0, :got:c_ftl_nand_page_pre_blk
17688 ldr x0, [x0, #:got_lo12:c_ftl_nand_page_pre_blk]
17692 adrp x1, :got:g_gc_cur_blk_valid_pages
17693 adrp x0, :got:g_gc_cur_blk_max_valid_pages
17694 ldr x1, [x1, #:got_lo12:g_gc_cur_blk_valid_pages]
17695 ldr x0, [x0, #:got_lo12:g_gc_cur_blk_max_valid_pages]
17701 adrp x0, :got:g_num_free_superblocks
17702 ldr x0, [x0, #:got_lo12:g_num_free_superblocks]
17706 adrp x0, :got:c_ftl_nand_page_pre_blk
17707 ldr x0, [x0, #:got_lo12:c_ftl_nand_page_pre_blk]
17710 ldr x0, [x19, #:got_lo12:g_gc_superblock]
17714 adrp x0, :got:g_in_swl_replace
17715 adrp x23, :got:c_ftl_nand_planes_num
17717 ldr x0, [x0, #:got_lo12:g_in_swl_replace]
17720 adrp x0, :got:g_gc_blk_index
17721 adrp x26, :got:g_gc_blk_index
17722 ldr x27, [x0, #:got_lo12:g_gc_blk_index]
17724 bl List_get_gc_head_node
17725 ldr x28, [x19, #:got_lo12:g_gc_superblock]
17742 adrp x1, :got:p_valid_page_count_table
17748 ldr x1, [x1, #:got_lo12:p_valid_page_count_table]
17749 ldr x5, [x23, #:got_lo12:c_ftl_nand_planes_num]
17751 adrp x1, :got:c_ftl_nand_page_pre_blk
17753 ldr x1, [x1, #:got_lo12:c_ftl_nand_page_pre_blk]
17764 adrp x0, :got:g_gc_blk_num
17765 ldr x0, [x0, #:got_lo12:g_gc_blk_num]
17770 ldr x0, [x26, #:got_lo12:g_gc_blk_index]
17778 ldr x19, [x19, #:got_lo12:g_gc_superblock]
17781 ldr x26, [x26, #:got_lo12:g_gc_blk_index]
17787 bl decrement_vpc_count
17788 ldr x26, [x26, #:got_lo12:g_gc_blk_index]
17794 ldr x23, [x19, #:got_lo12:g_gc_superblock]
17798 adrp x0, :got:g_gc_cur_blk_valid_pages
17800 ldr x0, [x0, #:got_lo12:g_gc_cur_blk_valid_pages]
17802 adrp x0, :got:p_valid_page_count_table
17803 ldr x0, [x0, #:got_lo12:p_valid_page_count_table]
17805 ldrh w1, [x0,x1,lsl 1]
17806 adrp x0, :got:g_gc_cur_blk_max_valid_pages
17807 ldr x0, [x0, #:got_lo12:g_gc_cur_blk_max_valid_pages]
17813 ldr x0, [x22, #:got_lo12:g_in_gc_progress]
17816 ldr x0, [x19, #:got_lo12:g_gc_superblock]
17818 adrp x0, :got:c_ftl_nand_page_pre_blk
17820 ldr x0, [x0, #:got_lo12:c_ftl_nand_page_pre_blk]
17831 adrp x0, :got:c_ftl_nand_planes_num
17832 ldr x0, [x0, #:got_lo12:c_ftl_nand_planes_num]
17834 ldr x0, [x19, #:got_lo12:g_gc_superblock]
17842 ldr x1, [x19, #:got_lo12:g_gc_superblock]
17843 add x1, x1, x0, lsl 1
17847 adrp x5, :got:req_gc
17849 orr w1, w2, w1, lsl 10
17851 ldr x5, [x5, #:got_lo12:req_gc]
17861 adrp x0, :got:req_gc
17866 ldr x0, [x0, #:got_lo12:req_gc]
17872 adrp x0, :got:req_gc
17874 ldr x6, [x0, #:got_lo12:req_gc]
17901 adrp x0, :got:g_gc_cur_blk_valid_pages
17905 ldr x1, [x0, #:got_lo12:g_gc_cur_blk_valid_pages]
17909 adrp x0, :got:g_gc_num_req
17910 ldr x28, [x0, #:got_lo12:g_gc_num_req]
17911 adrp x0, :got:req_gc_dst
17912 ldr x7, [x0, #:got_lo12:req_gc_dst]
17916 madd x1, x0, x27, x1
17920 bl Ftl_get_new_temp_ppa
17929 madd x0, x0, x27, x1
17934 adrp x2, :got:g_gc_temp_superblock
17940 ldr x2, [x2, #:got_lo12:g_gc_temp_superblock]
17944 adrp x0, :got:g_GlobalDataVersion
17945 ldr x0, [x0, #:got_lo12:g_GlobalDataVersion]
17962 bl Ftl_gc_temp_data_write_back
17971 adrp x0, :got:g_gc_num_req
17972 ldr x0, [x0, #:got_lo12:g_gc_num_req]
17975 bl Ftl_gc_temp_data_write_back
17978 ldr x22, [x22, #:got_lo12:g_in_gc_progress]
17981 adrp x0, :got:gc_ink_free_return_value
17982 ldr x0, [x0, #:got_lo12:gc_ink_free_return_value]
17986 adrp x0, :got:g_gc_cur_blk_valid_pages
17987 ldr x0, [x0, #:got_lo12:g_gc_cur_blk_valid_pages]
17990 adrp x0, :got:p_valid_page_count_table
17991 ldr x1, [x19, #:got_lo12:g_gc_superblock]
17992 ldr x2, [x0, #:got_lo12:p_valid_page_count_table]
18001 bl FtlCacheWriteBack
18005 ldr x0, [x19, #:got_lo12:g_gc_superblock]
18010 ldr x22, [x22, #:got_lo12:g_in_gc_progress]
18011 adrp x1, :got:gc_ink_free_return_value
18013 ldr x1, [x1, #:got_lo12:gc_ink_free_return_value]
18016 csinc w2, w2, w0, ne
18019 ldp x19, x20, [sp,16]
18020 ldp x21, x22, [sp,32]
18021 ldp x23, x24, [sp,48]
18022 ldp x25, x26, [sp,64]
18023 ldp x27, x28, [sp,80]
18024 ldp x29, x30, [sp], 160
18026 .size rk_ftl_garbage_collect, .-rk_ftl_garbage_collect
18029 .type FtlRead, %function
18031 stp x29, x30, [sp, -192]!
18034 stp x19, x20, [sp,16]
18035 stp x25, x26, [sp,64]
18036 stp x27, x28, [sp,80]
18037 stp x21, x22, [sp,32]
18038 stp x23, x24, [sp,48]
18047 bl FtlVendorPartRead
18052 adrp x0, :got:g_MaxLbaSector
18054 ldr x0, [x0, #:got_lo12:g_MaxLbaSector]
18059 adrp x23, :got:c_ftl_nand_sec_pre_page
18061 ldr x0, [x23, #:got_lo12:c_ftl_nand_sec_pre_page]
18065 adrp x0, :got:g_totle_read_sector
18067 ldr x0, [x0, #:got_lo12:g_totle_read_sector]
18072 adrp x0, :got:g_totle_read_page_count
18073 ldr x0, [x0, #:got_lo12:g_totle_read_page_count]
18079 bl FtlCacheMetchLpa
18081 bl FtlCacheWriteBack
18101 ldr x0, [x23, #:got_lo12:c_ftl_nand_sec_pre_page]
18105 madd w0, w20, w0, w3
18113 ubfiz x0, x0, 9, 23
18126 adrp x0, :got:req_read
18127 ldr x0, [x0, #:got_lo12:req_read]
18132 adrp x2, :got:p_io_data_buf_0
18135 ldr x2, [x2, #:got_lo12:p_io_data_buf_0]
18138 ldr x2, [x23, #:got_lo12:c_ftl_nand_sec_pre_page]
18141 msub w3, w3, w2, w19
18145 csel w3, w3, w28, ls
18156 adrp x0, :got:p_io_data_buf_1
18158 ldr x0, [x0, #:got_lo12:p_io_data_buf_1]
18161 ldr x0, [x23, #:got_lo12:c_ftl_nand_sec_pre_page]
18169 ldr x0, [x23, #:got_lo12:c_ftl_nand_sec_pre_page]
18174 ubfiz x0, x0, 9, 23
18178 adrp x0, :got:req_read
18179 adrp x2, :got:p_io_spare_buf
18180 ldr x0, [x0, #:got_lo12:req_read]
18181 ldr x2, [x2, #:got_lo12:p_io_spare_buf]
18185 adrp x0, :got:c_ftl_nand_byte_pre_oob
18186 ldr x0, [x0, #:got_lo12:c_ftl_nand_byte_pre_oob]
18191 and x0, x0, 4294967292
18198 adrp x0, :got:c_ftl_nand_planes_num
18199 ldr x0, [x0, #:got_lo12:c_ftl_nand_planes_num]
18205 adrp x0, :got:req_read
18208 ldr x0, [x0, #:got_lo12:req_read]
18213 ubfiz x0, x0, 9, 23
18227 adrp x0, :got:req_read
18228 ldr x0, [x0, #:got_lo12:req_read]
18235 adrp x0, :got:p_io_data_buf_0
18236 ldr x0, [x0, #:got_lo12:p_io_data_buf_0]
18250 adrp x0, :got:p_io_data_buf_1
18251 ldr x0, [x0, #:got_lo12:p_io_data_buf_1]
18255 ldr x0, [x23, #:got_lo12:c_ftl_nand_sec_pre_page]
18261 ubfiz x0, x0, 9, 23
18267 adrp x0, :got:req_read
18268 ldr x0, [x0, #:got_lo12:req_read]
18274 adrp x1, :got:g_sys_ext_data
18276 ldr x4, [x1, #:got_lo12:g_sys_ext_data]
18286 bl P2V_block_in_plane
18287 bl FtlGcRefreshBlock
18297 adrp x0, :got:g_gc_bad_block_temp_num
18298 ldr x0, [x0, #:got_lo12:g_gc_bad_block_temp_num]
18303 bl rk_ftl_garbage_collect
18307 ldp x19, x20, [sp,16]
18308 ldp x21, x22, [sp,32]
18309 ldp x23, x24, [sp,48]
18310 ldp x25, x26, [sp,64]
18311 ldp x27, x28, [sp,80]
18312 ldp x29, x30, [sp], 192
18314 .size FtlRead, .-FtlRead
18316 .global StorageSysDataLoad
18317 .type StorageSysDataLoad, %function
18318 StorageSysDataLoad:
18319 stp x29, x30, [sp, -48]!
18328 bl rknand_device_lock
18335 bl rknand_device_unlock
18338 ldp x29, x30, [sp], 48
18340 .size StorageSysDataLoad, .-StorageSysDataLoad
18343 .type FtlWrite, %function
18345 stp x29, x30, [sp, -320]!
18348 stp x23, x24, [sp,48]
18349 stp x25, x26, [sp,64]
18350 stp x19, x20, [sp,16]
18351 stp x21, x22, [sp,32]
18352 stp x27, x28, [sp,80]
18361 bl FtlVendorPartWrite
18364 adrp x0, :got:g_MaxLbaSector
18366 ldr x0, [x0, #:got_lo12:g_MaxLbaSector]
18371 adrp x0, :got:g_ftl_nand_free_count
18372 adrp x3, :got:c_ftl_nand_sec_pre_page
18376 ldr x0, [x0, #:got_lo12:g_ftl_nand_free_count]
18378 ldr x0, [x3, #:got_lo12:c_ftl_nand_sec_pre_page]
18385 adrp x0, :got:g_totle_write_page_count
18387 ldr x0, [x0, #:got_lo12:g_totle_write_page_count]
18391 adrp x0, :got:g_totle_write_sector
18392 ldr x0, [x0, #:got_lo12:g_totle_write_sector]
18400 adrp x19, :got:g_buffer_superblock
18401 ldr x19, [x19, #:got_lo12:g_buffer_superblock]
18404 adrp x19, :got:g_active_superblock
18405 ldr x19, [x19, #:got_lo12:g_active_superblock]
18407 adrp x22, :got:g_wr_page_num
18408 ldr x0, [x22, #:got_lo12:g_wr_page_num]
18411 adrp x0, :got:req_wr_io
18414 adrp x20, :got:last_cache_match_count
18415 ldr x0, [x0, #:got_lo12:req_wr_io]
18422 adrp x0, :got:g_totle_cache_write_count
18423 ldr x0, [x0, #:got_lo12:g_totle_cache_write_count]
18427 ldr x28, [x20, #:got_lo12:last_cache_match_count]
18431 msub w0, w26, w1, w23
18433 ubfiz x0, x0, 9, 23
18435 csel w19, w1, w24, ls
18454 ldr x20, [x20, #:got_lo12:last_cache_match_count]
18455 adrp x0, :got:gp_last_act_superblock
18457 ldr x0, [x0, #:got_lo12:gp_last_act_superblock]
18462 bl FtlCacheMetchLpa
18464 bl FtlCacheWriteBack
18466 adrp x0, :got:gp_last_act_superblock
18469 ldr x1, [x0, #:got_lo12:gp_last_act_superblock]
18475 add x0, x0, :lo12:.LC117
18482 adrp x0, :got:g_active_superblock
18483 adrp x20, :got:g_active_superblock
18484 ldr x0, [x0, #:got_lo12:g_active_superblock]
18487 adrp x19, :got:g_buffer_superblock
18488 ldr x0, [x19, #:got_lo12:g_buffer_superblock]
18491 bl allocate_new_data_superblock
18492 adrp x0, :got:power_up_flag
18493 ldr x0, [x0, #:got_lo12:power_up_flag]
18496 ldr x0, [x20, #:got_lo12:g_active_superblock]
18497 bl allocate_new_data_superblock
18498 adrp x0, :got:power_up_flag
18499 ldr x0, [x0, #:got_lo12:power_up_flag]
18503 ldr x19, [x20, #:got_lo12:g_active_superblock]
18506 adrp x2, :got:power_up_flag
18508 ldr x2, [x2, #:got_lo12:power_up_flag]
18512 bl allocate_new_data_superblock
18515 ldr x19, [x19, #:got_lo12:g_buffer_superblock]
18520 bl allocate_new_data_superblock
18523 ldr x0, [x0, #:got_lo12:gp_last_act_superblock]
18526 adrp x2, :got:c_wr_page_buf_num
18527 ldr x3, [x22, #:got_lo12:g_wr_page_num]
18530 ldr x0, [x2, #:got_lo12:c_wr_page_buf_num]
18536 csel w0, w1, w0, ls
18538 csel w0, w0, w21, ls
18563 ldr x1, [x1, #:got_lo12:c_ftl_nand_sec_pre_page]
18565 msub w2, w28, w1, w2
18575 bl get_new_active_ppa
18576 ldr x8, [x22, #:got_lo12:g_wr_page_num]
18577 adrp x4, :got:req_wr_io
18581 ldr x6, [x4, #:got_lo12:req_wr_io]
18591 adrp x0, :got:c_ftl_nand_byte_pre_oob
18592 ldr x0, [x0, #:got_lo12:c_ftl_nand_byte_pre_oob]
18594 adrp x0, :got:p_wr_io_spare_buf
18595 ldr x0, [x0, #:got_lo12:p_wr_io_spare_buf]
18598 and x3, x5, 4294967292
18599 adrp x5, :got:c_ftl_nand_byte_pre_page
18604 ldr x20, [x5, #:got_lo12:c_ftl_nand_byte_pre_page]
18608 adrp x9, :got:p_wr_io_data_buf
18609 and x0, x0, 4294967292
18610 ldr x9, [x9, #:got_lo12:p_wr_io_data_buf]
18630 ldr x0, [x0, #:got_lo12:c_ftl_nand_sec_pre_page]
18633 msub w20, w28, w20, w0
18640 ldr x0, [x0, #:got_lo12:c_ftl_nand_sec_pre_page]
18643 msub w0, w0, w20, w23
18647 csel w20, w20, w24, ls
18650 ldr x0, [x0, #:got_lo12:c_ftl_nand_sec_pre_page]
18659 ubfiz x1, x1, 9, 23
18665 ldr x2, [x22, #:got_lo12:g_wr_page_num]
18666 ldr x4, [x4, #:got_lo12:req_wr_io]
18674 ldr x2, [x22, #:got_lo12:g_wr_page_num]
18675 ldr x4, [x4, #:got_lo12:req_wr_io]
18676 ldr x5, [x5, #:got_lo12:c_ftl_nand_byte_pre_page]
18693 ldr x0, [x22, #:got_lo12:g_wr_page_num]
18694 ldr x1, [x4, #:got_lo12:req_wr_io]
18713 adrp x0, :got:g_sys_ext_data
18714 ldr x0, [x0, #:got_lo12:g_sys_ext_data]
18723 adrp x0, :got:g_sys_ext_data
18726 ldr x0, [x0, #:got_lo12:g_sys_ext_data]
18735 ldr x0, [x22, #:got_lo12:g_wr_page_num]
18737 ldr x5, [x5, #:got_lo12:c_ftl_nand_byte_pre_page]
18742 ldr x1, [x4, #:got_lo12:req_wr_io]
18755 ldr x1, [x22, #:got_lo12:g_wr_page_num]
18756 ldr x4, [x4, #:got_lo12:req_wr_io]
18762 ubfiz x0, x0, 9, 23
18768 ldr x1, [x22, #:got_lo12:g_wr_page_num]
18769 ldr x4, [x4, #:got_lo12:req_wr_io]
18775 ldr x1, [x1, #:got_lo12:c_ftl_nand_sec_pre_page]
18780 ubfiz x1, x1, 9, 23
18791 ldr x0, [x0, #:got_lo12:c_ftl_nand_sec_pre_page]
18795 ubfiz x0, x0, 9, 23
18805 ldr x1, [x1, #:got_lo12:c_ftl_nand_sec_pre_page]
18810 ubfiz x1, x1, 9, 23
18819 adrp x1, :got:g_GlobalDataVersion
18820 ldr x1, [x1, #:got_lo12:g_GlobalDataVersion]
18826 csel w0, w0, wzr, ne
18832 ldr x1, [x22, #:got_lo12:g_wr_page_num]
18851 ldr x1, [x22, #:got_lo12:g_wr_page_num]
18852 ldr x0, [x0, #:got_lo12:c_wr_page_buf_num]
18863 bl FtlCacheWriteBack
18864 ldr x0, [x22, #:got_lo12:g_wr_page_num]
18869 bl rknand_queue_cond_resched
18875 bl rk_ftl_garbage_collect
18878 ldp x19, x20, [sp,16]
18879 ldp x21, x22, [sp,32]
18880 ldp x23, x24, [sp,48]
18881 ldp x25, x26, [sp,64]
18882 ldp x27, x28, [sp,80]
18883 ldp x29, x30, [sp], 320
18885 .size FtlWrite, .-FtlWrite
18887 .global StorageSysDataStore
18888 .type StorageSysDataStore, %function
18889 StorageSysDataStore:
18890 stp x29, x30, [sp, -48]!
18895 bl rknand_device_lock
18902 bl rknand_device_unlock
18905 ldp x29, x30, [sp], 48
18907 .size StorageSysDataStore, .-StorageSysDataStore
18909 .type FlashReadFacBbtData.part.16, %function
18910 FlashReadFacBbtData.part.16:
18911 stp x29, x30, [sp, -32]!
18913 adrp x4, :got:gFlashPageBuffer0
18918 adrp x1, :got:gNandFlashIdbBlockAddr
18921 ldr x0, [x1, #:got_lo12:gNandFlashIdbBlockAddr]
18925 ldr x0, [x4, #:got_lo12:gFlashPageBuffer0]
18937 ldr x4, [x4, #:got_lo12:gFlashPageBuffer0]
18944 add x0, x0, :lo12:.LC118
18946 bl rknand_print_hex
18949 ldp x29, x30, [sp], 32
18951 .size FlashReadFacBbtData.part.16, .-FlashReadFacBbtData.part.16
18953 .global FlashReadFacBbtData
18954 .type FlashReadFacBbtData, %function
18955 FlashReadFacBbtData:
18956 adrp x4, :got:gNandPhyInfo
18957 stp x29, x30, [sp, -160]!
18959 ldr x4, [x4, #:got_lo12:gNandPhyInfo]
18960 stp x19, x20, [sp,16]
18961 stp x21, x22, [sp,32]
18962 stp x23, x24, [sp,48]
18963 stp x25, x26, [sp,64]
18971 adrp x4, :got:gFlashSpareBuffer
18975 adrp x0, :got:gFlashPageBuffer0
18977 ldr x0, [x0, #:got_lo12:gFlashPageBuffer0]
18984 ldr x0, [x4, #:got_lo12:gFlashSpareBuffer]
19000 ldr x0, [x21, #:got_lo12:gFlashSpareBuffer]
19010 bl FlashReadFacBbtData.part.16
19019 ldp x19, x20, [sp,16]
19020 ldp x21, x22, [sp,32]
19021 ldp x23, x24, [sp,48]
19022 ldp x25, x26, [sp,64]
19024 ldp x29, x30, [sp], 160
19026 .size FlashReadFacBbtData, .-FlashReadFacBbtData
19028 .global FlashGetBadBlockList
19029 .type FlashGetBadBlockList, %function
19030 FlashGetBadBlockList:
19031 adrp x2, :got:gpNandParaInfo
19032 stp x29, x30, [sp, -48]!
19034 ldr x2, [x2, #:got_lo12:gpNandParaInfo]
19035 stp x19, x20, [sp,16]
19038 adrp x20, :got:gFlashPageBuffer1
19042 ldr x0, [x20, #:got_lo12:gFlashPageBuffer1]
19048 bl FlashReadFacBbtData
19063 ldr x3, [x20, #:got_lo12:gFlashPageBuffer1]
19067 ldr w4, [x6,x4,lsl 2]
19071 ubfiz x1, x1, 1, 16
19081 ubfiz x1, x1, 1, 16
19083 ldp x19, x20, [sp,16]
19087 ldp x29, x30, [sp], 48
19089 .size FlashGetBadBlockList, .-FlashGetBadBlockList
19092 .type FtlMakeBbt, %function
19094 stp x29, x30, [sp, -96]!
19096 stp x19, x20, [sp,16]
19097 adrp x19, :got:gBbtInfo
19098 stp x21, x22, [sp,32]
19099 stp x23, x24, [sp,48]
19100 stp x25, x26, [sp,64]
19101 stp x27, x28, [sp,80]
19104 bl FtlLoadFactoryBbt
19105 ldr x22, [x19, #:got_lo12:gBbtInfo]
19106 adrp x25, :got:c_ftl_nand_blks_per_die
19109 adrp x0, :got:c_ftl_nand_die_num
19110 ldr x0, [x0, #:got_lo12:c_ftl_nand_die_num]
19114 adrp x0, :got:p_sys_data_buf
19115 adrp x1, :got:req_sys
19117 ldr x0, [x0, #:got_lo12:p_sys_data_buf]
19118 ldr x20, [x1, #:got_lo12:req_sys]
19119 adrp x1, :got:p_sys_spare_buf
19122 ldr x1, [x1, #:got_lo12:p_sys_spare_buf]
19128 ldr x24, [x25, #:got_lo12:c_ftl_nand_blks_per_die]
19130 madd w26, w21, w1, w26
19146 adrp x28, :got:c_ftl_nand_bbm_buf_size
19147 bl FlashGetBadBlockList
19151 ldr x0, [x25, #:got_lo12:c_ftl_nand_blks_per_die]
19156 ldr x26, [x25, #:got_lo12:c_ftl_nand_blks_per_die]
19158 madd w0, w21, w0, w20
19159 bl FtlBbmIsBadBlock
19166 adrp x0, :got:p_sys_spare_buf
19170 ldr x0, [x0, #:got_lo12:p_sys_spare_buf]
19180 madd w26, w21, w0, w1
19181 adrp x0, :got:req_sys
19183 ldr x27, [x0, #:got_lo12:req_sys]
19186 ldr x0, [x28, #:got_lo12:c_ftl_nand_bbm_buf_size]
19193 bl FlashEraseBlocks
19203 bl FtlBbmMapBadBlock
19210 bl FtlBbmMapBadBlock
19214 adrp x21, :got:c_ftl_nand_reserved_blks
19216 ldr x0, [x21, #:got_lo12:c_ftl_nand_reserved_blks]
19222 bl FtlBbmMapBadBlock
19226 ldr x0, [x19, #:got_lo12:gBbtInfo]
19232 ldr x21, [x19, #:got_lo12:gBbtInfo]
19238 bl FtlBbmIsBadBlock
19245 bl FtlBbmMapBadBlock
19261 ldr x19, [x19, #:got_lo12:gBbtInfo]
19262 adrp x0, :got:req_erase
19266 ldr x0, [x0, #:got_lo12:req_erase]
19275 bl FlashEraseBlocks
19277 bl FtlBbmMapBadBlock
19279 bl FtlBbmMapBadBlock
19291 ldp x19, x20, [sp,16]
19292 ldp x21, x22, [sp,32]
19293 ldp x23, x24, [sp,48]
19294 ldp x25, x26, [sp,64]
19295 ldp x27, x28, [sp,80]
19296 ldp x29, x30, [sp], 96
19298 .size FtlMakeBbt, .-FtlMakeBbt
19300 .global FtlLowFormat
19301 .type FtlLowFormat, %function
19303 stp x29, x30, [sp, -80]!
19305 stp x19, x20, [sp,16]
19306 adrp x19, :got:g_GlobalSysVersion
19308 stp x23, x24, [sp,48]
19309 stp x21, x22, [sp,32]
19310 ldr x0, [x19, #:got_lo12:g_GlobalSysVersion]
19311 adrp x23, :got:c_ftl_nand_max_sys_blks
19313 adrp x0, :got:g_GlobalDataVersion
19314 ldr x0, [x0, #:got_lo12:g_GlobalDataVersion]
19316 ldr x0, [x23, #:got_lo12:c_ftl_nand_max_sys_blks]
19318 bl FtlFreeSysBlkQueueInit
19324 adrp x3, :got:c_ftl_nand_sec_pre_page
19325 adrp x4, :got:p_io_data_buf_0
19326 adrp x5, :got:p_io_data_buf_1
19328 ldr x1, [x3, #:got_lo12:c_ftl_nand_sec_pre_page]
19332 ldr x1, [x4, #:got_lo12:p_io_data_buf_0]
19333 ubfiz x2, x0, 2, 16
19336 orr w1, w0, w1, lsl 16
19340 ldr x1, [x5, #:got_lo12:p_io_data_buf_1]
19343 movk w1, 0xa0f, lsl 16
19347 adrp x24, :got:c_ftl_nand_data_blks_per_plane
19349 adrp x25, :got:c_ftl_nand_blk_pre_plane
19350 ldr x0, [x24, #:got_lo12:c_ftl_nand_data_blks_per_plane]
19353 ldr x0, [x25, #:got_lo12:c_ftl_nand_blk_pre_plane]
19354 adrp x20, :got:c_ftl_nand_blk_pre_plane
19361 bl FtlLowFormatEraseBlock
19367 adrp x22, :got:c_ftl_nand_planes_num
19369 ldr x0, [x22, #:got_lo12:c_ftl_nand_planes_num]
19379 adrp x0, :got:c_ftl_nand_init_sys_blks_per_plane
19380 ldr x0, [x0, #:got_lo12:c_ftl_nand_init_sys_blks_per_plane]
19383 bl FtlSysBlkNumInit
19384 ldr x23, [x23, #:got_lo12:c_ftl_nand_max_sys_blks]
19386 bl FtlFreeSysBlkQueueInit
19387 ldr x0, [x24, #:got_lo12:c_ftl_nand_data_blks_per_plane]
19390 ldr x0, [x20, #:got_lo12:c_ftl_nand_blk_pre_plane]
19397 bl FtlLowFormatEraseBlock
19401 ldr x0, [x24, #:got_lo12:c_ftl_nand_data_blks_per_plane]
19408 bl FtlLowFormatEraseBlock
19414 adrp x0, :got:g_cur_erase_blk
19415 ldr x1, [x20, #:got_lo12:c_ftl_nand_blk_pre_plane]
19416 adrp x2, :got:g_MaxLpn
19417 adrp x5, :got:c_ftl_nand_data_op_blks_per_plane
19418 ldr x0, [x0, #:got_lo12:g_cur_erase_blk]
19421 adrp x0, :got:c_ftl_nand_max_data_blks
19422 ldr x22, [x22, #:got_lo12:c_ftl_nand_planes_num]
19423 ldr x0, [x0, #:got_lo12:c_ftl_nand_max_data_blks]
19424 ldr x8, [x2, #:got_lo12:g_MaxLpn]
19430 ldr x4, [x5, #:got_lo12:c_ftl_nand_data_op_blks_per_plane]
19444 adrp x3, :got:g_inkDie_check_enable
19445 ldr x3, [x3, #:got_lo12:g_inkDie_check_enable]
19449 ldr x1, [x5, #:got_lo12:c_ftl_nand_data_op_blks_per_plane]
19453 add w3, w4, w3, asr 2
19456 adrp x3, :got:c_ftl_nand_ext_blk_pre_plane
19457 ldr x3, [x3, #:got_lo12:c_ftl_nand_ext_blk_pre_plane]
19460 ldr x3, [x5, #:got_lo12:c_ftl_nand_data_op_blks_per_plane]
19462 add w4, w4, w1, lsr 1
19467 ldr x4, [x2, #:got_lo12:g_MaxLpn]
19473 ldr x1, [x5, #:got_lo12:c_ftl_nand_data_op_blks_per_plane]
19474 adrp x22, :got:g_MaxLbn
19475 ldr x2, [x2, #:got_lo12:g_MaxLpn]
19476 adrp x21, :got:p_valid_page_count_table
19480 ldr x1, [x22, #:got_lo12:g_MaxLbn]
19483 adrp x1, :got:c_ftl_nand_page_pre_blk
19484 ldr x1, [x1, #:got_lo12:c_ftl_nand_page_pre_blk]
19488 adrp x2, :got:c_ftl_nand_sec_pre_page
19489 adrp x1, :got:g_MaxLbaSector
19490 ldr x2, [x2, #:got_lo12:c_ftl_nand_sec_pre_page]
19491 ldr x1, [x1, #:got_lo12:g_MaxLbaSector]
19496 ldr x0, [x20, #:got_lo12:c_ftl_nand_blk_pre_plane]
19498 ldr x1, [x21, #:got_lo12:p_valid_page_count_table]
19504 adrp x0, :got:g_VaildLpn
19507 ldr x0, [x0, #:got_lo12:g_VaildLpn]
19509 adrp x0, :got:g_gc_superblock
19510 ldr x0, [x0, #:got_lo12:g_gc_superblock]
19515 adrp x0, :got:g_active_superblock
19517 ldr x2, [x0, #:got_lo12:g_active_superblock]
19523 ldr x21, [x24, #:got_lo12:g_active_superblock]
19528 ldr x0, [x20, #:got_lo12:p_valid_page_count_table]
19531 strh w23, [x0,x1,lsl 1]
19537 ldr x1, [x19, #:got_lo12:g_GlobalSysVersion]
19545 ldr x0, [x20, #:got_lo12:p_valid_page_count_table]
19547 strh w2, [x0,x1,lsl 1]
19548 adrp x0, :got:g_buffer_superblock
19551 ldr x1, [x0, #:got_lo12:g_buffer_superblock]
19559 ldr x21, [x23, #:got_lo12:g_buffer_superblock]
19564 ldr x0, [x20, #:got_lo12:p_valid_page_count_table]
19567 strh w24, [x0,x1,lsl 1]
19573 ldr x19, [x19, #:got_lo12:g_GlobalSysVersion]
19580 ldr x20, [x20, #:got_lo12:p_valid_page_count_table]
19583 strh w2, [x0,x1,lsl 1]
19584 adrp x0, :got:g_gc_temp_superblock
19585 ldr x0, [x0, #:got_lo12:g_gc_temp_superblock]
19587 bl FtlFreeSysBlkQueueOut
19588 adrp x1, :got:gSysInfo
19589 ldr x1, [x1, #:got_lo12:gSysInfo]
19593 ldr x22, [x22, #:got_lo12:g_MaxLbn]
19603 adrp x0, :got:gFtlInitStatus
19605 ldr x0, [x0, #:got_lo12:gFtlInitStatus]
19610 ldp x19, x20, [sp,16]
19611 ldp x21, x22, [sp,32]
19612 ldp x23, x24, [sp,48]
19613 ldp x29, x30, [sp], 80
19615 .size FtlLowFormat, .-FtlLowFormat
19617 .global FtlReInitForSDUpdata
19618 .type FtlReInitForSDUpdata, %function
19619 FtlReInitForSDUpdata:
19620 adrp x0, :got:RK29_NANDC_REG_BASE
19621 stp x29, x30, [sp, -48]!
19623 ldr x0, [x0, #:got_lo12:RK29_NANDC_REG_BASE]
19629 bl FlashLoadFactorBbt
19631 bl FlashMakeFactorBbt
19633 adrp x0, :got:gFlashPageBuffer1
19634 ldr x0, [x0, #:got_lo12:gFlashPageBuffer1]
19636 bl FlashReadIdbDataRaw
19641 bl FlashReadFacBbtData
19656 adrp x0, :got:gNandIDBResBlkNum
19657 ldr x0, [x0, #:got_lo12:gNandIDBResBlkNum]
19671 adrp x0, :got:gNandIDBResBlkNum
19672 ldr x0, [x0, #:got_lo12:gNandIDBResBlkNum]
19677 adrp x1, :got:gNandIDBResBlkNum
19678 adrp x0, :got:gNandPhyInfo
19679 ldr x1, [x1, #:got_lo12:gNandIDBResBlkNum]
19680 ldr x0, [x0, #:got_lo12:gNandPhyInfo]
19686 add x1, x1, :lo12:.LC73
19687 add x0, x0, :lo12:.LC72
19690 adrp x0, :got:gNandPhyInfo
19691 ldr x0, [x0, #:got_lo12:gNandPhyInfo]
19692 bl FtlConstantsInit
19693 bl FtlVariablesInit
19694 adrp x0, :got:c_ftl_nand_max_sys_blks
19695 ldr x0, [x0, #:got_lo12:c_ftl_nand_max_sys_blks]
19697 bl FtlFreeSysBlkQueueInit
19713 adrp x1, :got:gFtlInitStatus
19715 ldr x1, [x1, #:got_lo12:gFtlInitStatus]
19721 ldp x29, x30, [sp], 48
19723 .size FtlReInitForSDUpdata, .-FtlReInitForSDUpdata
19725 .global IdBlockReadData
19726 .type IdBlockReadData, %function
19728 stp x29, x30, [sp, -176]!
19730 stp x19, x20, [sp,16]
19731 stp x23, x24, [sp,48]
19733 adrp x23, :got:gpNandParaInfo
19734 adrp x0, :got:gBlockPageAlignSize
19735 stp x21, x22, [sp,32]
19736 ldr x21, [x23, #:got_lo12:gpNandParaInfo]
19738 ldr x0, [x0, #:got_lo12:gBlockPageAlignSize]
19739 stp x27, x28, [sp,80]
19740 stp x25, x26, [sp,64]
19749 add x0, x0, :lo12:.LC119
19756 adrp x6, :got:slcPageToMlcPageTbl
19757 adrp x7, :got:gFlashPageBuffer1
19759 adrp x8, :got:gNandFlashEccBits
19761 adrp x9, :got:gNandFlashIDBEccBits
19762 msub w19, w0, w19, w20
19770 ldr x1, [x6, #:got_lo12:slcPageToMlcPageTbl]
19772 ldr x25, [x7, #:got_lo12:gFlashPageBuffer1]
19776 ldrh w24, [x1,w0,sxtw 1]
19778 ldr x0, [x26, #:got_lo12:gpNandParaInfo]
19785 ldr x0, [x8, #:got_lo12:gNandFlashEccBits]
19789 ldr x0, [x9, #:got_lo12:gNandFlashIDBEccBits]
19790 madd w24, w24, w28, w3
19805 ubfiz x0, x21, 9, 16
19825 add x0, x0, :lo12:.LC120
19828 ldp x19, x20, [sp,16]
19829 ldp x21, x22, [sp,32]
19830 ldp x23, x24, [sp,48]
19831 ldp x25, x26, [sp,64]
19832 ldp x27, x28, [sp,80]
19833 ldp x29, x30, [sp], 176
19835 .size IdBlockReadData, .-IdBlockReadData
19837 .global IDBlockWriteData
19838 .type IDBlockWriteData, %function
19840 stp x29, x30, [sp, -224]!
19842 stp x21, x22, [sp,32]
19843 stp x25, x26, [sp,64]
19844 adrp x21, :got:gpNandParaInfo
19846 adrp x0, :got:gBlockPageAlignSize
19847 stp x23, x24, [sp,48]
19848 ldr x22, [x21, #:got_lo12:gpNandParaInfo]
19850 ldr x0, [x0, #:got_lo12:gBlockPageAlignSize]
19851 stp x27, x28, [sp,80]
19852 stp x19, x20, [sp,16]
19862 add x0, x0, :lo12:.LC121
19865 adrp x0, :got:gNandPhyInfo
19868 ldr x0, [x0, #:got_lo12:gNandPhyInfo]
19875 adrp x5, :got:slcPageToMlcPageTbl
19876 adrp x6, :got:gNandFlashEccBits
19877 adrp x7, :got:gNandFlashIDBEccBits
19879 msub w26, w26, w19, w25
19889 ldr x0, [x5, #:got_lo12:slcPageToMlcPageTbl]
19892 ldrh w4, [x0,w1,sxtw 1]
19897 ldr x4, [x5, #:got_lo12:slcPageToMlcPageTbl]
19898 ubfiz x2, x24, 9, 16
19899 ldr x0, [x6, #:got_lo12:gNandFlashEccBits]
19903 ldrh w1, [x4,w19,sxtw 1]
19906 ldr x0, [x7, #:got_lo12:gNandFlashIDBEccBits]
19907 madd w1, w1, w22, w23
19916 ldr x0, [x21, #:got_lo12:gpNandParaInfo]
19931 ldrh w2, [x4,w19,sxtw 1]
19933 bl FlashPageProgMsbFFData
19943 add x0, x0, :lo12:.LC122
19946 ldp x19, x20, [sp,16]
19947 ldp x21, x22, [sp,32]
19948 ldp x23, x24, [sp,48]
19949 ldp x25, x26, [sp,64]
19950 ldp x27, x28, [sp,80]
19951 ldp x29, x30, [sp], 224
19953 .size IDBlockWriteData, .-IDBlockWriteData
19955 .global write_idblock
19956 .type write_idblock, %function
19958 stp x29, x30, [sp, -112]!
19960 stp x23, x24, [sp,48]
19962 adrp x0, :got:gpNandParaInfo
19963 stp x19, x20, [sp,16]
19964 stp x21, x22, [sp,32]
19965 ldr x0, [x0, #:got_lo12:gpNandParaInfo]
19967 stp x25, x26, [sp,64]
19968 stp x27, x28, [sp,80]
19972 movk w1, 0x240, lsl 16
19975 adrp x0, :got:gBlockPageAlignSize
19976 ldr x0, [x0, #:got_lo12:gBlockPageAlignSize]
19979 movk x0, 0x3, lsl 16
19980 bl kmalloc_order_trace
19988 ubfiz x0, x19, 9, 23
19998 adrp x26, :got:gNandIDBResBlkNum
19999 csel w19, w19, w0, ls
20001 add x0, x0, :lo12:.LC123
20005 bl rknand_print_hex
20006 ldr x26, [x26, #:got_lo12:gNandIDBResBlkNum]
20009 add x0, x0, :lo12:.LC124
20021 add x0, x0, :lo12:.LC125
20032 add x25, x25, :lo12:.LC126
20033 add x26, x26, :lo12:.LC127
20034 add x27, x27, :lo12:.LC128
20036 adrp x0, :got:gNandPhyInfo
20037 ldr w2, [x23,x28,lsl 2]
20039 ldr x0, [x0, #:got_lo12:gNandPhyInfo]
20043 adrp x0, :got:gNandFlashIdbBlockAddr
20044 ldr x0, [x0, #:got_lo12:gNandFlashIdbBlockAddr]
20053 ldr w0, [x23,x28,lsl 2]
20057 bl IDBlockWriteData
20058 ldr w0, [x23,x28,lsl 2]
20070 ldr w4, [x20,x0,lsl 2]
20073 add x1, x21, x0, lsl 2
20077 ldr w2, [x23,x28,lsl 2]
20090 bl rknand_print_hex
20096 bl rknand_print_hex
20101 ldr w0, [x23,x28,lsl 2]
20105 bl IDBlockWriteData
20107 add x0, x0, :lo12:.LC129
20121 ldp x19, x20, [sp,16]
20122 ldp x21, x22, [sp,32]
20123 ldp x23, x24, [sp,48]
20124 ldp x25, x26, [sp,64]
20125 ldp x27, x28, [sp,80]
20126 ldp x29, x30, [sp], 112
20128 .size write_idblock, .-write_idblock
20131 .type CRC_32, %function
20135 adrp x5, :got:gTable_Crc32
20142 ldr x6, [x5, #:got_lo12:gTable_Crc32]
20143 eor w3, w3, w0, lsr 24
20144 ldr w3, [x6,w3,uxtw 2]
20145 eor w0, w3, w0, lsl 8
20149 .size CRC_32, .-CRC_32
20151 .type rknand_sys_storage_ioctl, %function
20152 rknand_sys_storage_ioctl:
20154 stp x29, x30, [sp, -48]!
20156 stp x19, x20, [sp,16]
20157 stp x21, x22, [sp,32]
20162 movk w0, 0x4004, lsl 16
20166 movk w0, 0x4004, lsl 16
20170 movk w0, 0x4004, lsl 16
20174 movk w0, 0x4004, lsl 16
20178 movk w0, 0x4004, lsl 16
20182 movk w0, 0x4004, lsl 16
20186 movk w0, 0x4004, lsl 16
20189 bl rknand_dev_flush
20193 movk w0, 0x4004, lsl 16
20197 movk w0, 0x4004, lsl 16
20203 movk w0, 0x4004, lsl 16
20207 movk w0, 0x4004, lsl 16
20211 movk w0, 0x4004, lsl 16
20217 movk w0, 0x4004, lsl 16
20221 movk w0, 0x4004, lsl 16
20227 movk w0, 0x4004, lsl 16
20231 movk w0, 0x4004, lsl 16
20235 movk w0, 0x4004, lsl 16
20239 movk w0, 0x4004, lsl 16
20243 movk w0, 0x4004, lsl 16
20247 movk w0, 0x4004, lsl 16
20253 movk w0, 0x4004, lsl 16
20257 movk w0, 0x4004, lsl 16
20261 movk w0, 0x4004, lsl 16
20265 movk w0, 0x4004, lsl 16
20271 movk w0, 0x4004, lsl 16
20275 movk w0, 0x4004, lsl 16
20281 add x0, x0, :lo12:.LC130
20288 // 257 "./arch/arm64/include/asm/uaccess.h" 1
20289 adds x0, x0, 512; ccmp x0, x2, #2, cc; cset x1, ls
20296 bl __copy_from_user
20305 add x0, x0, :lo12:.LC131
20311 add x0, x0, :lo12:.LC132
20316 bl rknand_device_unlock
20321 bl rknand_device_unlock
20324 ubfiz x2, x21, 9, 23
20328 // 266 "./arch/arm64/include/asm/uaccess.h" 1
20329 adds x0, x0, x2; ccmp x0, x1, #2, cc; cset x3, ls
20340 add x0, x0, :lo12:.LC133
20348 add x0, x0, :lo12:.LC134
20355 // 257 "./arch/arm64/include/asm/uaccess.h" 1
20356 adds x0, x0, 4096; ccmp x0, x2, #2, cc; cset x1, ls
20363 bl __copy_from_user
20373 add x0, x0, :lo12:.LC135
20375 adrp x0, :got:g_idb_buffer
20377 ldr x21, [x0, #:got_lo12:g_idb_buffer]
20388 movk w1, 0x240, lsl 16
20390 bl kmalloc_order_trace
20397 movk w1, 0x3, lsl 16
20400 ldr x19, [x19, #:got_lo12:g_idb_buffer]
20403 add x0, x1, x0, uxtw
20409 add x0, x0, :lo12:.LC136
20416 // 257 "./arch/arm64/include/asm/uaccess.h" 1
20417 adds x1, x1, 28; ccmp x1, x2, #2, cc; cset x0, ls
20424 bl __copy_from_user
20428 stp xzr, xzr, [x20]
20436 add x0, x0, :lo12:.LC137
20440 movk w0, 0x3, lsl 16
20443 adrp x21, :got:g_idb_buffer
20444 ldr x21, [x21, #:got_lo12:g_idb_buffer]
20452 bl rknand_device_unlock
20457 bl rknand_device_unlock
20464 add x0, x0, :lo12:.LC138
20473 // 266 "./arch/arm64/include/asm/uaccess.h" 1
20474 adds x0, x0, 11; ccmp x0, x1, #2, cc; cset x2, ls
20484 add x0, x0, :lo12:.LC139
20486 bl rknand_device_unlock
20487 bl FtlReInitForSDUpdata
20489 bl rknand_device_unlock
20491 bl nand_blk_add_whole_disk
20492 bl rknand_device_unlock
20496 bl FlashReadFacBbtData
20497 bl rknand_device_unlock
20500 add x0, x0, :lo12:.LC140
20503 bl rknand_print_hex
20509 // 266 "./arch/arm64/include/asm/uaccess.h" 1
20510 adds x0, x0, 64; ccmp x0, x1, #2, cc; cset x2, ls
20520 add x0, x0, :lo12:.LC141
20522 adrp x0, :got:gpDrmKeyInfo
20523 ldr x0, [x0, #:got_lo12:gpDrmKeyInfo]
20532 // 266 "./arch/arm64/include/asm/uaccess.h" 1
20533 adds x0, x0, 4; ccmp x0, x1, #2, cc; cset x2, ls
20543 add x0, x0, :lo12:.LC142
20545 bl rknand_device_unlock
20551 bl rknand_device_unlock
20557 // 266 "./arch/arm64/include/asm/uaccess.h" 1
20558 adds x0, x0, 1024; ccmp x0, x1, #2, cc; cset x2, ls
20568 add x0, x0, :lo12:.LC143
20575 // 257 "./arch/arm64/include/asm/uaccess.h" 1
20576 adds x0, x0, 520; ccmp x0, x1, #2, cc; cset x2, ls
20584 bl __copy_from_user
20589 add x0, x0, :lo12:.LC144
20596 // 257 "./arch/arm64/include/asm/uaccess.h" 1
20597 adds x0, x0, 520; ccmp x0, x1, #2, cc; cset x2, ls
20609 movk w0, 0x4b4d, lsl 16
20619 adrp x1, :got:gpDrmKeyInfo
20622 ldr x1, [x1, #:got_lo12:gpDrmKeyInfo]
20625 adrp x0, :got:SecureBootCheckOK
20626 ldr x0, [x0, #:got_lo12:SecureBootCheckOK]
20629 movk w0, 0xc059, lsl 16
20650 bl __copy_from_user
20654 movk w0, 0x4b4d, lsl 16
20660 adrp x0, :got:SecureBootCheckOK
20662 ldr x0, [x0, #:got_lo12:SecureBootCheckOK]
20665 movk w0, 0xc059, lsl 16
20673 adrp x0, :got:gpDrmKeyInfo
20674 ldr x0, [x0, #:got_lo12:gpDrmKeyInfo]
20686 add x0, x0, :lo12:.LC145
20693 // 257 "./arch/arm64/include/asm/uaccess.h" 1
20694 adds x0, x0, 520; ccmp x0, x1, #2, cc; cset x2, ls
20702 bl __copy_from_user
20706 movk w0, 0x4253, lsl 16
20712 adrp x19, :got:SecureBootEn
20713 ldr x0, [x19, #:got_lo12:SecureBootEn]
20720 adrp x0, :got:gpBootConfig
20722 movk w3, 0x4453, lsl 16
20723 ldr x1, [x0, #:got_lo12:gpBootConfig]
20729 movk w3, 0x4453, lsl 16
20738 ldr x0, [x0, #:got_lo12:gpBootConfig]
20742 bl StorageSysDataStore
20743 adrp x0, :got:gpDrmKeyInfo
20745 movk w3, 0x4b4d, lsl 16
20746 ldr x1, [x0, #:got_lo12:gpDrmKeyInfo]
20752 movk w3, 0x4b4d, lsl 16
20760 ldr x0, [x0, #:got_lo12:gpDrmKeyInfo]
20769 bl StorageSysDataStore
20770 ldr x19, [x19, #:got_lo12:SecureBootEn]
20771 adrp x0, :got:SecureBootCheckOK
20773 ldr x0, [x0, #:got_lo12:SecureBootCheckOK]
20778 add x0, x0, :lo12:.LC146
20785 // 257 "./arch/arm64/include/asm/uaccess.h" 1
20786 adds x0, x0, 520; ccmp x0, x1, #2, cc; cset x2, ls
20794 bl __copy_from_user
20798 movk w1, 0x4253, lsl 16
20804 adrp x19, :got:SecureBootEn
20805 ldr x1, [x19, #:got_lo12:SecureBootEn]
20809 adrp x1, :got:gpBootConfig
20811 movk w4, 0x4453, lsl 16
20812 ldr x2, [x1, #:got_lo12:gpBootConfig]
20818 movk w4, 0x4453, lsl 16
20827 ldr x1, [x1, #:got_lo12:gpBootConfig]
20832 bl StorageSysDataStore
20833 adrp x0, :got:gpDrmKeyInfo
20835 movk w3, 0x4b4d, lsl 16
20836 ldr x1, [x0, #:got_lo12:gpDrmKeyInfo]
20842 movk w3, 0x4b4d, lsl 16
20850 ldr x0, [x0, #:got_lo12:gpDrmKeyInfo]
20859 bl StorageSysDataStore
20860 ldr x19, [x19, #:got_lo12:SecureBootEn]
20866 add x0, x0, :lo12:.LC147
20873 // 257 "./arch/arm64/include/asm/uaccess.h" 1
20874 adds x0, x0, 520; ccmp x0, x1, #2, cc; cset x2, ls
20882 bl __copy_from_user
20886 movk w0, 0x4144, lsl 16
20892 adrp x1, :got:gSnSectorData
20895 ldr x1, [x1, #:got_lo12:gSnSectorData]
20899 movk w0, 0x4004, lsl 16
20903 add x0, x0, :lo12:.LC148
20907 movk w0, 0x4004, lsl 16
20911 add x0, x0, :lo12:.LC149
20915 add x0, x0, :lo12:.LC150
20923 // 257 "./arch/arm64/include/asm/uaccess.h" 1
20924 adds x0, x0, 520; ccmp x0, x1, #2, cc; cset x2, ls
20932 bl __copy_from_user
20936 movk w0, 0x4c4f, lsl 16
20940 movk w0, 0x4004, lsl 16
20943 adrp x0, :got:gpDrmKeyInfo
20944 ldr x0, [x0, #:got_lo12:gpDrmKeyInfo]
20954 // 266 "./arch/arm64/include/asm/uaccess.h" 1
20955 adds x0, x0, 16; ccmp x0, x1, #2, cc; cset x2, ls
20966 adrp x2, :got:SecureBootUnlockTryCount
20968 ldr x19, [x2, #:got_lo12:SecureBootUnlockTryCount]
20972 adrp x0, :got:gpDrmKeyInfo
20974 ldr x0, [x0, #:got_lo12:gpDrmKeyInfo]
20981 add x0, x0, :lo12:.LC151
20988 ldr x3, [x3, #:got_lo12:SecureBootUnlockTryCount]
20990 movk w0, 0x4004, lsl 16
21005 bl StorageSysDataStore
21011 add x0, x0, :lo12:.LC152
21018 // 257 "./arch/arm64/include/asm/uaccess.h" 1
21019 adds x0, x0, 520; ccmp x0, x1, #2, cc; cset x2, ls
21027 bl __copy_from_user
21031 movk w0, 0x444e, lsl 16
21039 movk w0, 0x4004, lsl 16
21043 adrp x1, :got:gpVendor0Info
21044 ldr x1, [x1, #:got_lo12:gpVendor0Info]
21047 adrp x1, :got:gpVendor1Info
21048 ldr x1, [x1, #:got_lo12:gpVendor1Info]
21060 // 266 "./arch/arm64/include/asm/uaccess.h" 1
21061 adds x0, x0, 520; ccmp x0, x1, #2, cc; cset x2, ls
21074 add x0, x0, :lo12:.LC153
21081 // 257 "./arch/arm64/include/asm/uaccess.h" 1
21082 adds x0, x0, 520; ccmp x0, x1, #2, cc; cset x2, ls
21090 bl __copy_from_user
21094 movk w0, 0x444e, lsl 16
21102 movk w0, 0x4004, lsl 16
21105 adrp x19, :got:gpVendor0Info
21107 ldr x19, [x19, #:got_lo12:gpVendor0Info]
21113 adrp x19, :got:gpVendor1Info
21115 ldr x19, [x19, #:got_lo12:gpVendor1Info]
21122 bl StorageSysDataStore
21130 add x0, x0, :lo12:.LC154
21137 ldp x19, x20, [sp,16]
21138 ldp x21, x22, [sp,32]
21139 ldp x29, x30, [sp], 48
21142 .size rknand_sys_storage_ioctl, .-rknand_sys_storage_ioctl
21144 .global rk_ftl_storage_sys_init
21145 .type rk_ftl_storage_sys_init, %function
21146 rk_ftl_storage_sys_init:
21147 adrp x0, :got:g_idb_buffer
21148 stp x29, x30, [sp, -80]!
21150 ldr x0, [x0, #:got_lo12:g_idb_buffer]
21151 stp x19, x20, [sp,16]
21152 stp x21, x22, [sp,32]
21153 stp x23, x24, [sp,48]
21155 adrp x21, :got:gpBootConfig
21157 adrp x0, :got:gLoaderBootInfo
21158 adrp x20, :got:gpVendor0Info
21159 adrp x19, :got:gpVendor1Info
21160 ldr x21, [x21, #:got_lo12:gpBootConfig]
21161 ldr x0, [x0, #:got_lo12:gLoaderBootInfo]
21163 adrp x0, :got:gpDrmKeyInfo
21166 ldr x0, [x0, #:got_lo12:gpDrmKeyInfo]
21170 ldr x0, [x20, #:got_lo12:gpVendor0Info]
21173 ldr x0, [x19, #:got_lo12:gpVendor1Info]
21175 adrp x0, :got:gSnSectorData
21176 ldr x0, [x0, #:got_lo12:gSnSectorData]
21178 adrp x1, :got:SecureBootEn
21180 adrp x3, :got:SecureBootCheckOK
21183 ldr x22, [x1, #:got_lo12:SecureBootEn]
21187 ldr x2, [x3, #:got_lo12:SecureBootCheckOK]
21189 adrp x2, :got:SecureBootUnlockTryCount
21190 ldr x2, [x2, #:got_lo12:SecureBootUnlockTryCount]
21201 add x0, x0, :lo12:.LC155
21204 ldr x1, [x25, #:got_lo12:SecureBootEn]
21207 ldr x0, [x24, #:got_lo12:SecureBootCheckOK]
21209 movk w1, 0xc059, lsl 16
21212 ldr x20, [x20, #:got_lo12:gpVendor0Info]
21215 bl StorageSysDataLoad
21216 ldr x19, [x19, #:got_lo12:gpVendor1Info]
21219 bl StorageSysDataLoad
21221 add x0, x0, :lo12:.LANCHOR3
21224 ldp x19, x20, [sp,16]
21225 ldp x21, x22, [sp,32]
21226 ldp x23, x24, [sp,48]
21227 ldp x29, x30, [sp], 80
21229 .size rk_ftl_storage_sys_init, .-rk_ftl_storage_sys_init
21231 .global StorageSysDataDeInit
21232 .type StorageSysDataDeInit, %function
21233 StorageSysDataDeInit:
21234 stp x29, x30, [sp, -16]!
21237 add x0, x0, :lo12:.LANCHOR3
21240 ldp x29, x30, [sp], 16
21242 .size StorageSysDataDeInit, .-StorageSysDataDeInit
21243 .global rknand_sys_storage_fops
21244 .global gTable_Crc32
21245 .global SecureBootUnlockTryCount
21246 .global SecureBootCheckOK
21247 .global SecureBootEn
21248 .global gpVendor1Info
21249 .global gpVendor0Info
21250 .global g_idb_buffer
21251 .global gSnSectorData
21252 .global gpDrmKeyInfo
21253 .global gpBootConfig
21254 .global gLoaderBootInfo
21255 .global RK29_NANDC1_REG_BASE
21256 .global RK29_NANDC_REG_BASE
21257 .global gc_ink_free_return_value
21258 .global FtlUpdateVaildLpnCount
21259 .global g_ect_tbl_power_up_flush
21260 .global last_cache_match_count
21261 .global power_up_flag
21262 .global g_LowFormat
21263 .global gFtlInitStatus
21264 .global DeviceCapacity
21265 .global ToshibaRefValue
21266 .global Toshiba15RefValue
21267 .global ToshibaA19RefValue
21268 .global SamsungRefValue
21269 .global refValueDefault
21271 .global random_seed
21272 .global gSlcNandParaInfo
21273 .global gNandParaInfo
21274 .global NandFlashParaTbl
21275 .global g_power_lost_recovery_flag
21276 .global c_mlc_erase_count_value
21277 .global g_recovery_ppa_tbl
21278 .global g_recovery_page_min_ver
21279 .global g_recovery_page_num
21280 .global g_cur_erase_blk
21281 .global g_gc_skip_write_count
21282 .global g_gc_head_data_block_count
21283 .global g_gc_head_data_block
21284 .global g_ftl_nand_free_count
21285 .global g_in_swl_replace
21286 .global g_in_gc_progress
21287 .global g_all_blk_used_slc_mode
21288 .global g_max_erase_count
21289 .global g_totle_sys_slc_erase_count
21290 .global g_totle_slc_erase_count
21291 .global g_min_erase_count
21292 .global g_totle_avg_erase_count
21293 .global g_totle_mlc_erase_count
21294 .global g_totle_l2p_write_count
21295 .global g_totle_cache_write_count
21296 .global g_tmp_data_superblock_id
21297 .global g_totle_read_page_count
21298 .global g_totle_discard_page_count
21299 .global g_totle_read_sector
21300 .global g_totle_write_sector
21301 .global g_totle_write_page_count
21302 .global g_totle_gc_page_count
21303 .global g_gc_blk_index
21304 .global g_gc_merge_free_blk_threshold
21305 .global g_gc_free_blk_threshold
21306 .global g_gc_bad_block_temp_tbl
21307 .global g_gc_bad_block_gc_index
21308 .global g_gc_bad_block_temp_num
21309 .global g_gc_next_blk_1
21310 .global g_gc_next_blk
21311 .global g_gc_cur_blk_max_valid_pages
21312 .global g_gc_cur_blk_valid_pages
21313 .global g_gc_page_offset
21314 .global g_gc_blk_num
21315 .global p_gc_blk_tbl
21316 .global p_gc_page_info
21317 .global g_sys_ext_data
21318 .global g_sys_save_data
21319 .global gp_last_act_superblock
21320 .global g_gc_superblock
21321 .global g_gc_temp_superblock
21322 .global g_buffer_superblock
21323 .global g_active_superblock
21324 .global g_num_data_superblocks
21325 .global g_num_free_superblocks
21326 .global p_data_block_list_tail
21327 .global p_data_block_list_head
21328 .global p_free_data_block_list_head
21329 .global p_data_block_list_table
21330 .global g_l2p_last_update_region_id
21331 .global p_l2p_map_buf
21332 .global p_l2p_ram_map
21333 .global g_totle_vendor_block
21334 .global p_vendor_region_ppn_table
21335 .global p_vendor_block_ver_table
21336 .global p_vendor_block_valid_page_count
21337 .global p_vendor_block_table
21338 .global g_totle_map_block
21339 .global p_map_region_ppn_table
21340 .global p_map_block_ver_table
21341 .global p_map_block_valid_page_count
21342 .global p_map_block_table
21343 .global p_valid_page_count_check_table
21344 .global p_valid_page_count_table
21345 .global g_totle_swl_count
21346 .global p_swl_mul_table
21347 .global p_erase_count_table
21348 .global g_ect_tbl_info_size
21349 .global gp_ect_tbl_info
21350 .global g_gc_num_req
21351 .global c_gc_page_buf_num
21352 .global gp_gc_page_buf_info
21353 .global p_gc_data_buf
21354 .global p_gc_spare_buf
21355 .global p_io_spare_buf
21356 .global p_io_data_buf_1
21357 .global p_io_data_buf_0
21358 .global p_sys_spare_buf
21359 .global p_vendor_data_buf
21360 .global p_sys_data_buf_1
21361 .global p_sys_data_buf
21362 .global g_wr_page_num
21364 .global c_wr_page_buf_num
21365 .global p_wr_io_data_buf
21366 .global p_wr_io_spare_buf
21367 .global p_plane_order_table
21368 .global g_req_cache
21375 .global gVendorBlkInfo
21376 .global gL2pMapInfo
21377 .global gSysFreeQueue
21380 .global g_inkDie_check_enable
21381 .global g_SlcPartLbaEndSector
21385 .global g_MaxLbaSector
21386 .global g_GlobalDataVersion
21387 .global g_GlobalSysVersion
21388 .global ftl_gc_temp_power_lost_recovery_flag
21389 .global c_ftl_nand_max_data_blks
21390 .global c_ftl_nand_data_op_blks_per_plane
21391 .global c_ftl_nand_data_blks_per_plane
21392 .global c_ftl_nand_max_sys_blks
21393 .global c_ftl_nand_init_sys_blks_per_plane
21394 .global c_ftl_nand_sys_blks_per_plane
21395 .global c_ftl_vendor_part_size
21396 .global c_ftl_nand_max_vendor_blks
21397 .global c_ftl_nand_max_map_blks
21398 .global c_ftl_nand_map_blks_per_plane
21399 .global c_ftl_nand_vendor_region_num
21400 .global c_ftl_nand_l2pmap_ram_region_num
21401 .global c_ftl_nand_map_region_num
21402 .global c_ftl_nand_totle_phy_blks
21403 .global c_ftl_nand_reserved_blks
21404 .global c_ftl_nand_byte_pre_oob
21405 .global c_ftl_nand_byte_pre_page
21406 .global c_ftl_nand_sec_pre_page_shift
21407 .global c_ftl_nand_sec_pre_page
21408 .global c_ftl_nand_page_pre_super_blk
21409 .global c_ftl_nand_page_pre_slc_blk
21410 .global c_ftl_nand_page_pre_blk
21411 .global c_ftl_nand_bbm_buf_size
21412 .global c_ftl_nand_ext_blk_pre_plane
21413 .global c_ftl_nand_blk_pre_plane
21414 .global c_ftl_nand_planes_num
21415 .global c_ftl_nand_blks_per_die_shift
21416 .global c_ftl_nand_blks_per_die
21417 .global c_ftl_nand_planes_per_die
21418 .global c_ftl_nand_die_num
21419 .global c_ftl_nand_type
21420 .global gMasterTempBuf
21421 .global gMasterInfo
21422 .global gNandcDumpWriteEn
21423 .global gToggleModeClkDiv
21424 .global gBootDdrMode
21425 .global gNandcEccBits
21429 .global gNandChipMap
21430 .global gNandIDataBuf
21431 .global FlashDdrTunningReadCount
21432 .global gNandPhyInfo
21433 .global gFlashProgCheckSpareBuffer
21434 .global gFlashProgCheckBuffer
21435 .global gFlashSpareBuffer
21436 .global gFlashPageBuffer1
21437 .global gFlashPageBuffer0
21438 .global gpFlashSaveInfo
21439 .global gReadRetryInfo
21440 .global gpNandParaInfo
21441 .global gNandOptPara
21442 .global g_slc2KBNand
21443 .global g_maxRetryCount
21444 .global g_maxRegNum
21445 .global g_retryMode
21446 .global gNandIDBResBlkNumSaveInFlash
21447 .global gNandIDBResBlkNum
21448 .global gNandFlashResEndPageAddr
21449 .global gNandFlashInfoBlockAddr
21450 .global gNandFlashIdbBlockAddr
21451 .global gNandFlashInfoBlockEcc
21452 .global gNandFlashIDBEccBits
21453 .global gNandFlashEccBits
21454 .global gNandRandomizer
21455 .global gBlockPageAlignSize
21456 .global gTotleBlock
21457 .global gNandMaxChip
21458 .global gNandMaxDie
21459 .global gFlashInterfaceMode
21460 .global gFlashOnfiModeEn
21461 .global gFlashToggleModeEn
21462 .global gFlashSdrModeEn
21463 .global gMultiPageProgEn
21464 .global gMultiPageReadEn
21465 .global gpReadRetrial
21466 .global mlcPageToSlcPageTbl
21467 .global slcPageToMlcPageTbl
21472 .global read_retry_cur_offset
21476 .type __func__.18703, %object
21477 .size __func__.18703, 11
21479 .string "FtlMemInit"
21481 .type __func__.19557, %object
21482 .size __func__.19557, 21
21484 .string "FtlVpcCheckAndModify"
21485 .section .data.rel.local,"aw",%progbits
21487 .type rknand_sys_storage_fops, %object
21488 .size rknand_sys_storage_fops, 216
21489 rknand_sys_storage_fops:
21491 .xword rknand_sys_storage_ioctl
21492 .xword rknand_sys_storage_ioctl
21494 .xword rknand_sys_storage_open
21496 .xword rknand_sys_storage_release
21501 .type NandOptPara, %object
21502 .size NandOptPara, 128
21580 .type ftl_gc_temp_block_bops_scan_page_addr, %object
21581 .size ftl_gc_temp_block_bops_scan_page_addr, 2
21582 ftl_gc_temp_block_bops_scan_page_addr:
21585 .type gTable_Crc32, %object
21586 .size gTable_Crc32, 1024
21844 .type power_up_flag, %object
21845 .size power_up_flag, 4
21848 .type gFtlInitStatus, %object
21849 .size gFtlInitStatus, 4
21852 .type ToshibaRefValue, %object
21853 .size ToshibaRefValue, 8
21863 .type Toshiba15RefValue, %object
21864 .size Toshiba15RefValue, 95
21962 .type ToshibaA19RefValue, %object
21963 .size ToshibaA19RefValue, 45
21964 ToshibaA19RefValue:
22011 .type SamsungRefValue, %object
22012 .size SamsungRefValue, 64
22078 .type refValueDefault, %object
22079 .size refValueDefault, 28
22110 .type random_seed, %object
22111 .size random_seed, 256
22241 .type gSlcNandParaInfo, %object
22242 .size gSlcNandParaInfo, 32
22269 .type gNandParaInfo, %object
22270 .size gNandParaInfo, 32
22293 .type NandFlashParaTbl, %object
22294 .size NandFlashParaTbl, 2112
23946 .section .rodata.str1.1,"aMS",%progbits,1
23948 .string "Context allocation failed\n"
23950 .string "phyBlk = 0x%x die = %d block_in_die = 0x%x 0x%8x\n"
23952 .string "FLASH INFO:\n"
23954 .string "FLASH ID: %x\n"
23956 .string "Device Capacity: %d MB\n"
23958 .string "FMWAIT: %x %x %x %x\n"
23960 .string "FTL INFO:\n"
23962 .string "g_MaxLpn = 0x%x\n"
23964 .string "g_VaildLpn = 0x%x\n"
23966 .string "read_page_count = 0x%x\n"
23968 .string "discard_page_count = 0x%x\n"
23970 .string "write_page_count = 0x%x\n"
23972 .string "cache_write_count = 0x%x\n"
23974 .string "l2p_write_count = 0x%x\n"
23976 .string "gc_page_count = 0x%x\n"
23978 .string "totle_write = %d MB\n"
23980 .string "totle_read = %d MB\n"
23982 .string "GSV = 0x%x\n"
23984 .string "GDV = 0x%x\n"
23986 .string "bad blk num = %d %d\n"
23988 .string "free_superblocks = 0x%x\n"
23990 .string "mlc_EC = 0x%x\n"
23992 .string "slc_EC = 0x%x\n"
23994 .string "avg_EC = 0x%x\n"
23996 .string "sys_EC = 0x%x\n"
23998 .string "max_EC = 0x%x\n"
24000 .string "min_EC = 0x%x\n"
24002 .string "PLT = 0x%x\n"
24004 .string "POT = 0x%x\n"
24006 .string "MaxSector = 0x%x\n"
24008 .string "init_sys_blks_pp = 0x%x\n"
24010 .string "sys_blks_pp = 0x%x\n"
24012 .string "free sysblock = 0x%x\n"
24014 .string "data_blks_pp = 0x%x\n"
24016 .string "data_op_blks_pp = 0x%x\n"
24018 .string "max_data_blks = 0x%x\n"
24020 .string "Sys.id = 0x%x\n"
24022 .string "Bbt.id = 0x%x\n"
24024 .string "ACT.page = 0x%x\n"
24026 .string "ACT.plane = 0x%x\n"
24028 .string "ACT.id = 0x%x\n"
24030 .string "ACT.mode = 0x%x\n"
24032 .string "ACT.a_pages = 0x%x\n"
24034 .string "ACT VPC = 0x%x\n"
24036 .string "BUF.page = 0x%x\n"
24038 .string "BUF.plane = 0x%x\n"
24040 .string "BUF.id = 0x%x\n"
24042 .string "BUF.mode = 0x%x\n"
24044 .string "BUF.a_pages = 0x%x\n"
24046 .string "BUF VPC = 0x%x\n"
24048 .string "TMP.page = 0x%x\n"
24050 .string "TMP.plane = 0x%x\n"
24052 .string "TMP.id = 0x%x\n"
24054 .string "TMP.mode = 0x%x\n"
24056 .string "TMP.a_pages = 0x%x\n"
24058 .string "GC.page = 0x%x\n"
24060 .string "GC.plane = 0x%x\n"
24062 .string "GC.id = 0x%x\n"
24064 .string "GC.mode = 0x%x\n"
24066 .string "GC.a_pages = 0x%x\n"
24068 .string "WR_CHK = 0x%x %x %x %x\n"
24070 .string "Read Err Cnt = 0x%x\n"
24072 .string "Prog Err Cnt = 0x%x\n"
24074 .string "gc_free_blk_th= 0x%x\n"
24076 .string "gc_merge_free_blk_th= 0x%x\n"
24078 .string "gc_skip_write_count= 0x%x\n"
24080 .string "gc_blk_index= 0x%x\n"
24082 .string "free min EC= 0x%x\n"
24084 .string "free max EC= 0x%x\n"
24086 .string "GC__SB VPC = 0x%x\n"
24088 .string "%d. [0x%x]=0x%x 0x%x 0x%x\n"
24090 .string "free %d. [0x%x] 0x%x 0x%x\n"
24094 .string "FTL version: 5.0.31 20160315"
24096 .string "GetSwlReplaceBlock min_ec_id =%x %x\n"
24098 .string "swblk %x ,avg = %x max= %x vpc= %x,ec=%x ,max ec=%x\n"
24100 .string "FtlGcRefreshBlock 0x%x \n"
24102 .string "FtlGcMarkBadPhyBlk %d 0x%x\n"
24104 .string "%s error allocating memory. return -1\n"
24112 .string "%d statReg->V6.mtrans_cnt=%d flReg.V6.page_num=%d\n"
24116 .string "%d flReg.d32=%x %x\n"
24118 .string "sync para %d\n"
24120 .string "TOG mode Read error %x %x\n"
24122 .string "read retry status %x %x %x\n"
24126 .string "No.%d FLASH ID:%x %x %x %x %x %x\n"
24128 .string "FlashLoadPhyInfo fail %x!!\n"
24130 .string "ReadRetry pageadd=%x ecc=%x err=%x\n"
24132 .string "Read pageadd=%x ecc=%x err=%x\n"
24136 .string "FLFB:%d %d\n"
24142 .string "prog error: = %x\n"
24144 .string "prog read error: = %x\n"
24146 .string "prog read s error: = %x %x %x\n"
24148 .string "prog read d error: = %x %x %x\n"
24150 .string "FlashMakeFactorBbt %d\n"
24152 .string "bad block:%d %d\n"
24154 .string "FMFB:%d %d\n"
24156 .string "E:bad block:%d\n"
24158 .string "FMFB:Save %d %d\n"
24160 .string "FtlBbmTblFlush id=%x,page=%x,previd=%x cnt=%d\n"
24162 .string "FtlBbmTblFlush error:%x\n"
24164 .string "FtlGcFreeBadSuperBlk 0x%x\n"
24166 .string "decrement_vpc_count %x = %d\n"
24168 .string "spuer block %x vpn is 0\n "
24170 .string "...%s enter...\n"
24172 .string "FtlCheckVpc %x = %x %x\n"
24174 .string "Ftlwrite decrement_vpc_count %x = %d\n"
24176 .string "FtlInit %x\n"
24178 .string "%d GC datablk = %x vpc %x %x\n"
24180 .string "SWL %x, FSB = %x vpc= %x,ec=%x th=%x\n"
24182 .string "FtlWrite: lpa error:%x %x\n"
24186 .string "IdBlockReadData %x %x\n"
24188 .string "IdBlockReadData %x %x ret= %x\n"
24190 .string "IDBlockWriteData %x %x\n"
24192 .string "IDBlockWriteData %x %x ret= %x\n"
24196 .string "idb reverse %x %x\n"
24198 .string "write_idblock totle_sec %x %x\n"
24200 .string "write and check error:%d idb=%x,offset=%x,r=%x,w=%x \n"
24206 .string "write_idblock error\n"
24208 .string "READ_SECTOR_IO\n"
24210 .string "copy_from_user error \n"
24212 .string "READ_SECTOR_IO %x %x\n"
24214 .string "copy_to_user error\n"
24216 .string "WRITE_SECTOR_IO\n"
24218 .string "WRITE_SECTOR_IO %x %x\n"
24220 .string "END_WRITE_SECTOR_IO\n"
24222 .string "END_WRITE_SECTOR_IO %x %x\n"
24224 .string "GET_FLASH_INFO_IO\n"
24226 .string "GET_BAD_BLOCK_IO\n"
24230 .string "GET_LOCK_FLAG_IO\n"
24232 .string "GET_PUBLIC_KEY_IO\n"
24234 .string "RKNAND_GET_DRM_KEY\n"
24236 .string "RKNAND_STORE_DRM_KEY\n"
24238 .string "RKNAND_DIASBLE_SECURE_BOOT\n"
24240 .string "RKNAND_ENASBLE_SECURE_BOOT\n"
24242 .string "RKNAND_GET_SN_SECTOR\n"
24244 .string "RKNAND_LOADER_UNLOCK\n"
24246 .string "RKNAND_LOADER_STATUS\n"
24248 .string "RKNAND_LOADER_LOCK\n"
24250 .string "LockKey not match %d\n"
24252 .string "RKNAND_GET_VENDOR_SECTOR\n"
24254 .string "RKNAND_STORE_VENDOR_SECTOR\n"
24256 .string "return ret = %lx\n"
24258 .string "secureBootEn check error\n"
24260 .string "rknand_sys_storage"
24264 .type NANDC_FMCTL, %object
24265 .size NANDC_FMCTL, 4
24268 .type NANDC_FMWAIT, %object
24269 .size NANDC_FMWAIT, 4
24272 .type NANDC_FLCTL, %object
24273 .size NANDC_FLCTL, 4
24276 .type NANDC_BCHCTL, %object
24277 .size NANDC_BCHCTL, 4
24280 .type NANDC_DLL_CTL_REG0, %object
24281 .size NANDC_DLL_CTL_REG0, 4
24282 NANDC_DLL_CTL_REG0:
24284 .type NANDC_DLL_CTL_REG1, %object
24285 .size NANDC_DLL_CTL_REG1, 4
24286 NANDC_DLL_CTL_REG1:
24288 .type NANDC_RANDMZ_CFG, %object
24289 .size NANDC_RANDMZ_CFG, 4
24292 .type NANDC_FMWAIT_SYN, %object
24293 .size NANDC_FMWAIT_SYN, 4
24296 .type gc_discard_updated, %object
24297 .size gc_discard_updated, 4
24298 gc_discard_updated:
24300 .type SecureBootUnlockTryCount, %object
24301 .size SecureBootUnlockTryCount, 4
24302 SecureBootUnlockTryCount:
24304 .type SecureBootCheckOK, %object
24305 .size SecureBootCheckOK, 4
24308 .type SecureBootEn, %object
24309 .size SecureBootEn, 4
24312 .type gpVendor1Info, %object
24313 .size gpVendor1Info, 8
24316 .type gpVendor0Info, %object
24317 .size gpVendor0Info, 8
24320 .type g_idb_buffer, %object
24321 .size g_idb_buffer, 8
24324 .type gSnSectorData, %object
24325 .size gSnSectorData, 512
24328 .type gpDrmKeyInfo, %object
24329 .size gpDrmKeyInfo, 8
24332 .type gpBootConfig, %object
24333 .size gpBootConfig, 8
24336 .type gLoaderBootInfo, %object
24337 .size gLoaderBootInfo, 8
24340 .type RK29_NANDC1_REG_BASE, %object
24341 .size RK29_NANDC1_REG_BASE, 8
24342 RK29_NANDC1_REG_BASE:
24344 .type RK29_NANDC_REG_BASE, %object
24345 .size RK29_NANDC_REG_BASE, 8
24346 RK29_NANDC_REG_BASE:
24348 .type gc_ink_free_return_value, %object
24349 .size gc_ink_free_return_value, 2
24350 gc_ink_free_return_value:
24352 .type FtlUpdateVaildLpnCount, %object
24353 .size FtlUpdateVaildLpnCount, 2
24354 FtlUpdateVaildLpnCount:
24356 .type g_ect_tbl_power_up_flush, %object
24357 .size g_ect_tbl_power_up_flush, 2
24358 g_ect_tbl_power_up_flush:
24361 .type last_cache_match_count, %object
24362 .size last_cache_match_count, 4
24363 last_cache_match_count:
24365 .type g_LowFormat, %object
24366 .size g_LowFormat, 4
24369 .type DeviceCapacity, %object
24370 .size DeviceCapacity, 4
24374 .type FbbtBlk, %object
24378 .type g_power_lost_recovery_flag, %object
24379 .size g_power_lost_recovery_flag, 2
24380 g_power_lost_recovery_flag:
24382 .type c_mlc_erase_count_value, %object
24383 .size c_mlc_erase_count_value, 2
24384 c_mlc_erase_count_value:
24387 .type g_recovery_ppa_tbl, %object
24388 .size g_recovery_ppa_tbl, 128
24389 g_recovery_ppa_tbl:
24391 .type g_recovery_page_min_ver, %object
24392 .size g_recovery_page_min_ver, 4
24393 g_recovery_page_min_ver:
24395 .type g_recovery_page_num, %object
24396 .size g_recovery_page_num, 4
24397 g_recovery_page_num:
24399 .type g_cur_erase_blk, %object
24400 .size g_cur_erase_blk, 4
24403 .type g_gc_skip_write_count, %object
24404 .size g_gc_skip_write_count, 4
24405 g_gc_skip_write_count:
24407 .type g_gc_head_data_block_count, %object
24408 .size g_gc_head_data_block_count, 4
24409 g_gc_head_data_block_count:
24411 .type g_gc_head_data_block, %object
24412 .size g_gc_head_data_block, 4
24413 g_gc_head_data_block:
24415 .type g_ftl_nand_free_count, %object
24416 .size g_ftl_nand_free_count, 4
24417 g_ftl_nand_free_count:
24419 .type g_in_swl_replace, %object
24420 .size g_in_swl_replace, 4
24423 .type g_in_gc_progress, %object
24424 .size g_in_gc_progress, 4
24427 .type g_all_blk_used_slc_mode, %object
24428 .size g_all_blk_used_slc_mode, 4
24429 g_all_blk_used_slc_mode:
24431 .type g_max_erase_count, %object
24432 .size g_max_erase_count, 4
24435 .type g_totle_sys_slc_erase_count, %object
24436 .size g_totle_sys_slc_erase_count, 4
24437 g_totle_sys_slc_erase_count:
24439 .type g_totle_slc_erase_count, %object
24440 .size g_totle_slc_erase_count, 4
24441 g_totle_slc_erase_count:
24443 .type g_min_erase_count, %object
24444 .size g_min_erase_count, 4
24447 .type g_totle_avg_erase_count, %object
24448 .size g_totle_avg_erase_count, 4
24449 g_totle_avg_erase_count:
24451 .type g_totle_mlc_erase_count, %object
24452 .size g_totle_mlc_erase_count, 4
24453 g_totle_mlc_erase_count:
24455 .type g_totle_l2p_write_count, %object
24456 .size g_totle_l2p_write_count, 4
24457 g_totle_l2p_write_count:
24459 .type g_totle_cache_write_count, %object
24460 .size g_totle_cache_write_count, 4
24461 g_totle_cache_write_count:
24463 .type g_tmp_data_superblock_id, %object
24464 .size g_tmp_data_superblock_id, 2
24465 g_tmp_data_superblock_id:
24468 .type g_totle_read_page_count, %object
24469 .size g_totle_read_page_count, 4
24470 g_totle_read_page_count:
24472 .type g_totle_discard_page_count, %object
24473 .size g_totle_discard_page_count, 4
24474 g_totle_discard_page_count:
24476 .type g_totle_read_sector, %object
24477 .size g_totle_read_sector, 4
24478 g_totle_read_sector:
24480 .type g_totle_write_sector, %object
24481 .size g_totle_write_sector, 4
24482 g_totle_write_sector:
24484 .type g_totle_write_page_count, %object
24485 .size g_totle_write_page_count, 4
24486 g_totle_write_page_count:
24488 .type g_totle_gc_page_count, %object
24489 .size g_totle_gc_page_count, 4
24490 g_totle_gc_page_count:
24492 .type g_gc_blk_index, %object
24493 .size g_gc_blk_index, 2
24496 .type g_gc_merge_free_blk_threshold, %object
24497 .size g_gc_merge_free_blk_threshold, 2
24498 g_gc_merge_free_blk_threshold:
24500 .type g_gc_free_blk_threshold, %object
24501 .size g_gc_free_blk_threshold, 2
24502 g_gc_free_blk_threshold:
24505 .type g_gc_bad_block_temp_tbl, %object
24506 .size g_gc_bad_block_temp_tbl, 34
24507 g_gc_bad_block_temp_tbl:
24509 .type g_gc_bad_block_gc_index, %object
24510 .size g_gc_bad_block_gc_index, 2
24511 g_gc_bad_block_gc_index:
24513 .type g_gc_bad_block_temp_num, %object
24514 .size g_gc_bad_block_temp_num, 2
24515 g_gc_bad_block_temp_num:
24517 .type g_gc_next_blk_1, %object
24518 .size g_gc_next_blk_1, 2
24521 .type g_gc_next_blk, %object
24522 .size g_gc_next_blk, 2
24525 .type g_gc_cur_blk_max_valid_pages, %object
24526 .size g_gc_cur_blk_max_valid_pages, 2
24527 g_gc_cur_blk_max_valid_pages:
24529 .type g_gc_cur_blk_valid_pages, %object
24530 .size g_gc_cur_blk_valid_pages, 2
24531 g_gc_cur_blk_valid_pages:
24533 .type g_gc_page_offset, %object
24534 .size g_gc_page_offset, 2
24537 .type g_gc_blk_num, %object
24538 .size g_gc_blk_num, 2
24542 .type p_gc_blk_tbl, %object
24543 .size p_gc_blk_tbl, 8
24546 .type p_gc_page_info, %object
24547 .size p_gc_page_info, 8
24550 .type g_sys_ext_data, %object
24551 .size g_sys_ext_data, 512
24554 .type g_sys_save_data, %object
24555 .size g_sys_save_data, 48
24558 .type gp_last_act_superblock, %object
24559 .size gp_last_act_superblock, 8
24560 gp_last_act_superblock:
24562 .type g_gc_superblock, %object
24563 .size g_gc_superblock, 48
24566 .type g_gc_temp_superblock, %object
24567 .size g_gc_temp_superblock, 48
24568 g_gc_temp_superblock:
24570 .type g_buffer_superblock, %object
24571 .size g_buffer_superblock, 48
24572 g_buffer_superblock:
24574 .type g_active_superblock, %object
24575 .size g_active_superblock, 48
24576 g_active_superblock:
24578 .type g_num_data_superblocks, %object
24579 .size g_num_data_superblocks, 2
24580 g_num_data_superblocks:
24582 .type g_num_free_superblocks, %object
24583 .size g_num_free_superblocks, 2
24584 g_num_free_superblocks:
24587 .type p_data_block_list_tail, %object
24588 .size p_data_block_list_tail, 8
24589 p_data_block_list_tail:
24591 .type p_data_block_list_head, %object
24592 .size p_data_block_list_head, 8
24593 p_data_block_list_head:
24595 .type p_free_data_block_list_head, %object
24596 .size p_free_data_block_list_head, 8
24597 p_free_data_block_list_head:
24599 .type p_data_block_list_table, %object
24600 .size p_data_block_list_table, 8
24601 p_data_block_list_table:
24603 .type g_l2p_last_update_region_id, %object
24604 .size g_l2p_last_update_region_id, 2
24605 g_l2p_last_update_region_id:
24608 .type p_l2p_map_buf, %object
24609 .size p_l2p_map_buf, 8
24612 .type p_l2p_ram_map, %object
24613 .size p_l2p_ram_map, 8
24616 .type g_totle_vendor_block, %object
24617 .size g_totle_vendor_block, 2
24618 g_totle_vendor_block:
24621 .type p_vendor_region_ppn_table, %object
24622 .size p_vendor_region_ppn_table, 8
24623 p_vendor_region_ppn_table:
24625 .type p_vendor_block_ver_table, %object
24626 .size p_vendor_block_ver_table, 8
24627 p_vendor_block_ver_table:
24629 .type p_vendor_block_valid_page_count, %object
24630 .size p_vendor_block_valid_page_count, 8
24631 p_vendor_block_valid_page_count:
24633 .type p_vendor_block_table, %object
24634 .size p_vendor_block_table, 8
24635 p_vendor_block_table:
24637 .type g_totle_map_block, %object
24638 .size g_totle_map_block, 2
24642 .type p_map_region_ppn_table, %object
24643 .size p_map_region_ppn_table, 8
24644 p_map_region_ppn_table:
24646 .type p_map_block_ver_table, %object
24647 .size p_map_block_ver_table, 8
24648 p_map_block_ver_table:
24650 .type p_map_block_valid_page_count, %object
24651 .size p_map_block_valid_page_count, 8
24652 p_map_block_valid_page_count:
24654 .type p_map_block_table, %object
24655 .size p_map_block_table, 8
24658 .type p_valid_page_count_check_table, %object
24659 .size p_valid_page_count_check_table, 8
24660 p_valid_page_count_check_table:
24662 .type p_valid_page_count_table, %object
24663 .size p_valid_page_count_table, 8
24664 p_valid_page_count_table:
24666 .type g_totle_swl_count, %object
24667 .size g_totle_swl_count, 4
24671 .type p_swl_mul_table, %object
24672 .size p_swl_mul_table, 8
24675 .type p_erase_count_table, %object
24676 .size p_erase_count_table, 8
24677 p_erase_count_table:
24679 .type g_ect_tbl_info_size, %object
24680 .size g_ect_tbl_info_size, 2
24681 g_ect_tbl_info_size:
24684 .type gp_ect_tbl_info, %object
24685 .size gp_ect_tbl_info, 8
24688 .type g_gc_num_req, %object
24689 .size g_gc_num_req, 4
24692 .type c_gc_page_buf_num, %object
24693 .size c_gc_page_buf_num, 4
24696 .type gp_gc_page_buf_info, %object
24697 .size gp_gc_page_buf_info, 8
24698 gp_gc_page_buf_info:
24700 .type p_gc_data_buf, %object
24701 .size p_gc_data_buf, 8
24704 .type p_gc_spare_buf, %object
24705 .size p_gc_spare_buf, 8
24708 .type p_io_spare_buf, %object
24709 .size p_io_spare_buf, 8
24712 .type p_io_data_buf_1, %object
24713 .size p_io_data_buf_1, 8
24716 .type p_io_data_buf_0, %object
24717 .size p_io_data_buf_0, 8
24720 .type p_sys_spare_buf, %object
24721 .size p_sys_spare_buf, 8
24724 .type p_vendor_data_buf, %object
24725 .size p_vendor_data_buf, 8
24728 .type p_sys_data_buf_1, %object
24729 .size p_sys_data_buf_1, 8
24732 .type p_sys_data_buf, %object
24733 .size p_sys_data_buf, 8
24736 .type g_wr_page_num, %object
24737 .size g_wr_page_num, 4
24741 .type req_wr_io, %object
24745 .type c_wr_page_buf_num, %object
24746 .size c_wr_page_buf_num, 4
24750 .type p_wr_io_data_buf, %object
24751 .size p_wr_io_data_buf, 8
24754 .type p_wr_io_spare_buf, %object
24755 .size p_wr_io_spare_buf, 8
24758 .type p_plane_order_table, %object
24759 .size p_plane_order_table, 32
24760 p_plane_order_table:
24762 .type g_req_cache, %object
24763 .size g_req_cache, 8
24766 .type req_gc_dst, %object
24767 .size req_gc_dst, 8
24770 .type req_gc, %object
24774 .type req_erase, %object
24778 .type req_prgm, %object
24782 .type req_read, %object
24786 .type req_sys, %object
24790 .type gVendorBlkInfo, %object
24791 .size gVendorBlkInfo, 64
24794 .type gL2pMapInfo, %object
24795 .size gL2pMapInfo, 64
24798 .type gSysFreeQueue, %object
24799 .size gSysFreeQueue, 2056
24802 .type gSysInfo, %object
24807 .type gBbtInfo, %object
24811 .type g_inkDie_check_enable, %object
24812 .size g_inkDie_check_enable, 4
24813 g_inkDie_check_enable:
24815 .type g_SlcPartLbaEndSector, %object
24816 .size g_SlcPartLbaEndSector, 4
24817 g_SlcPartLbaEndSector:
24819 .type g_MaxLbn, %object
24823 .type g_VaildLpn, %object
24824 .size g_VaildLpn, 4
24827 .type g_MaxLpn, %object
24831 .type g_MaxLbaSector, %object
24832 .size g_MaxLbaSector, 4
24835 .type g_GlobalDataVersion, %object
24836 .size g_GlobalDataVersion, 4
24837 g_GlobalDataVersion:
24839 .type g_GlobalSysVersion, %object
24840 .size g_GlobalSysVersion, 4
24841 g_GlobalSysVersion:
24843 .type ftl_gc_temp_power_lost_recovery_flag, %object
24844 .size ftl_gc_temp_power_lost_recovery_flag, 4
24845 ftl_gc_temp_power_lost_recovery_flag:
24847 .type c_ftl_nand_max_data_blks, %object
24848 .size c_ftl_nand_max_data_blks, 4
24849 c_ftl_nand_max_data_blks:
24851 .type c_ftl_nand_data_op_blks_per_plane, %object
24852 .size c_ftl_nand_data_op_blks_per_plane, 2
24853 c_ftl_nand_data_op_blks_per_plane:
24855 .type c_ftl_nand_data_blks_per_plane, %object
24856 .size c_ftl_nand_data_blks_per_plane, 2
24857 c_ftl_nand_data_blks_per_plane:
24859 .type c_ftl_nand_max_sys_blks, %object
24860 .size c_ftl_nand_max_sys_blks, 4
24861 c_ftl_nand_max_sys_blks:
24863 .type c_ftl_nand_init_sys_blks_per_plane, %object
24864 .size c_ftl_nand_init_sys_blks_per_plane, 4
24865 c_ftl_nand_init_sys_blks_per_plane:
24867 .type c_ftl_nand_sys_blks_per_plane, %object
24868 .size c_ftl_nand_sys_blks_per_plane, 4
24869 c_ftl_nand_sys_blks_per_plane:
24871 .type c_ftl_vendor_part_size, %object
24872 .size c_ftl_vendor_part_size, 2
24873 c_ftl_vendor_part_size:
24875 .type c_ftl_nand_max_vendor_blks, %object
24876 .size c_ftl_nand_max_vendor_blks, 2
24877 c_ftl_nand_max_vendor_blks:
24879 .type c_ftl_nand_max_map_blks, %object
24880 .size c_ftl_nand_max_map_blks, 4
24881 c_ftl_nand_max_map_blks:
24883 .type c_ftl_nand_map_blks_per_plane, %object
24884 .size c_ftl_nand_map_blks_per_plane, 2
24885 c_ftl_nand_map_blks_per_plane:
24887 .type c_ftl_nand_vendor_region_num, %object
24888 .size c_ftl_nand_vendor_region_num, 2
24889 c_ftl_nand_vendor_region_num:
24891 .type c_ftl_nand_l2pmap_ram_region_num, %object
24892 .size c_ftl_nand_l2pmap_ram_region_num, 2
24893 c_ftl_nand_l2pmap_ram_region_num:
24895 .type c_ftl_nand_map_region_num, %object
24896 .size c_ftl_nand_map_region_num, 2
24897 c_ftl_nand_map_region_num:
24899 .type c_ftl_nand_totle_phy_blks, %object
24900 .size c_ftl_nand_totle_phy_blks, 4
24901 c_ftl_nand_totle_phy_blks:
24903 .type c_ftl_nand_reserved_blks, %object
24904 .size c_ftl_nand_reserved_blks, 2
24905 c_ftl_nand_reserved_blks:
24907 .type c_ftl_nand_byte_pre_oob, %object
24908 .size c_ftl_nand_byte_pre_oob, 2
24909 c_ftl_nand_byte_pre_oob:
24911 .type c_ftl_nand_byte_pre_page, %object
24912 .size c_ftl_nand_byte_pre_page, 2
24913 c_ftl_nand_byte_pre_page:
24915 .type c_ftl_nand_sec_pre_page_shift, %object
24916 .size c_ftl_nand_sec_pre_page_shift, 2
24917 c_ftl_nand_sec_pre_page_shift:
24919 .type c_ftl_nand_sec_pre_page, %object
24920 .size c_ftl_nand_sec_pre_page, 2
24921 c_ftl_nand_sec_pre_page:
24923 .type c_ftl_nand_page_pre_super_blk, %object
24924 .size c_ftl_nand_page_pre_super_blk, 2
24925 c_ftl_nand_page_pre_super_blk:
24927 .type c_ftl_nand_page_pre_slc_blk, %object
24928 .size c_ftl_nand_page_pre_slc_blk, 2
24929 c_ftl_nand_page_pre_slc_blk:
24931 .type c_ftl_nand_page_pre_blk, %object
24932 .size c_ftl_nand_page_pre_blk, 2
24933 c_ftl_nand_page_pre_blk:
24935 .type c_ftl_nand_bbm_buf_size, %object
24936 .size c_ftl_nand_bbm_buf_size, 2
24937 c_ftl_nand_bbm_buf_size:
24939 .type c_ftl_nand_ext_blk_pre_plane, %object
24940 .size c_ftl_nand_ext_blk_pre_plane, 2
24941 c_ftl_nand_ext_blk_pre_plane:
24943 .type c_ftl_nand_blk_pre_plane, %object
24944 .size c_ftl_nand_blk_pre_plane, 2
24945 c_ftl_nand_blk_pre_plane:
24947 .type c_ftl_nand_planes_num, %object
24948 .size c_ftl_nand_planes_num, 2
24949 c_ftl_nand_planes_num:
24951 .type c_ftl_nand_blks_per_die_shift, %object
24952 .size c_ftl_nand_blks_per_die_shift, 2
24953 c_ftl_nand_blks_per_die_shift:
24955 .type c_ftl_nand_blks_per_die, %object
24956 .size c_ftl_nand_blks_per_die, 2
24957 c_ftl_nand_blks_per_die:
24959 .type c_ftl_nand_planes_per_die, %object
24960 .size c_ftl_nand_planes_per_die, 2
24961 c_ftl_nand_planes_per_die:
24963 .type c_ftl_nand_die_num, %object
24964 .size c_ftl_nand_die_num, 2
24965 c_ftl_nand_die_num:
24967 .type c_ftl_nand_type, %object
24968 .size c_ftl_nand_type, 2
24972 .type gMasterTempBuf, %object
24973 .size gMasterTempBuf, 8
24976 .type gMasterInfo, %object
24977 .size gMasterInfo, 48
24980 .type gNandcDumpWriteEn, %object
24981 .size gNandcDumpWriteEn, 4
24984 .type gToggleModeClkDiv, %object
24985 .size gToggleModeClkDiv, 4
24988 .type gBootDdrMode, %object
24989 .size gBootDdrMode, 4
24992 .type gNandcEccBits, %object
24993 .size gNandcEccBits, 4
24996 .type gpNandc1, %object
25000 .type gpNandc, %object
25004 .type gNandcVer, %object
25009 .type gNandChipMap, %object
25010 .size gNandChipMap, 64
25013 .type gNandIDataBuf, %object
25014 .size gNandIDataBuf, 2048
25017 .type FlashDdrTunningReadCount, %object
25018 .size FlashDdrTunningReadCount, 4
25019 FlashDdrTunningReadCount:
25022 .type gNandPhyInfo, %object
25023 .size gNandPhyInfo, 28
25027 .type gFlashProgCheckSpareBuffer, %object
25028 .size gFlashProgCheckSpareBuffer, 8
25029 gFlashProgCheckSpareBuffer:
25031 .type gFlashProgCheckBuffer, %object
25032 .size gFlashProgCheckBuffer, 8
25033 gFlashProgCheckBuffer:
25035 .type gFlashSpareBuffer, %object
25036 .size gFlashSpareBuffer, 8
25039 .type gFlashPageBuffer1, %object
25040 .size gFlashPageBuffer1, 8
25043 .type gFlashPageBuffer0, %object
25044 .size gFlashPageBuffer0, 8
25047 .type gpFlashSaveInfo, %object
25048 .size gpFlashSaveInfo, 8
25051 .type gReadRetryInfo, %object
25052 .size gReadRetryInfo, 852
25056 .type gpNandParaInfo, %object
25057 .size gpNandParaInfo, 8
25060 .type gNandOptPara, %object
25061 .size gNandOptPara, 32
25064 .type g_slc2KBNand, %object
25065 .size g_slc2KBNand, 1
25068 .type g_maxRetryCount, %object
25069 .size g_maxRetryCount, 1
25072 .type g_maxRegNum, %object
25073 .size g_maxRegNum, 1
25076 .type g_retryMode, %object
25077 .size g_retryMode, 1
25080 .type gNandIDBResBlkNumSaveInFlash, %object
25081 .size gNandIDBResBlkNumSaveInFlash, 1
25082 gNandIDBResBlkNumSaveInFlash:
25084 .type gNandIDBResBlkNum, %object
25085 .size gNandIDBResBlkNum, 1
25089 .type gNandFlashResEndPageAddr, %object
25090 .size gNandFlashResEndPageAddr, 4
25091 gNandFlashResEndPageAddr:
25093 .type gNandFlashInfoBlockAddr, %object
25094 .size gNandFlashInfoBlockAddr, 4
25095 gNandFlashInfoBlockAddr:
25097 .type gNandFlashIdbBlockAddr, %object
25098 .size gNandFlashIdbBlockAddr, 4
25099 gNandFlashIdbBlockAddr:
25101 .type gNandFlashInfoBlockEcc, %object
25102 .size gNandFlashInfoBlockEcc, 1
25103 gNandFlashInfoBlockEcc:
25105 .type gNandFlashIDBEccBits, %object
25106 .size gNandFlashIDBEccBits, 1
25107 gNandFlashIDBEccBits:
25109 .type gNandFlashEccBits, %object
25110 .size gNandFlashEccBits, 1
25113 .type gNandRandomizer, %object
25114 .size gNandRandomizer, 1
25117 .type gBlockPageAlignSize, %object
25118 .size gBlockPageAlignSize, 4
25119 gBlockPageAlignSize:
25121 .type gTotleBlock, %object
25122 .size gTotleBlock, 2
25125 .type gNandMaxChip, %object
25126 .size gNandMaxChip, 1
25129 .type gNandMaxDie, %object
25130 .size gNandMaxDie, 1
25133 .type gFlashInterfaceMode, %object
25134 .size gFlashInterfaceMode, 1
25135 gFlashInterfaceMode:
25137 .type gFlashOnfiModeEn, %object
25138 .size gFlashOnfiModeEn, 1
25141 .type gFlashToggleModeEn, %object
25142 .size gFlashToggleModeEn, 1
25143 gFlashToggleModeEn:
25145 .type gFlashSdrModeEn, %object
25146 .size gFlashSdrModeEn, 1
25149 .type gMultiPageProgEn, %object
25150 .size gMultiPageProgEn, 1
25153 .type gMultiPageReadEn, %object
25154 .size gMultiPageReadEn, 1
25158 .type gpReadRetrial, %object
25159 .size gpReadRetrial, 8
25162 .type mlcPageToSlcPageTbl, %object
25163 .size mlcPageToSlcPageTbl, 1024
25164 mlcPageToSlcPageTbl:
25166 .type slcPageToMlcPageTbl, %object
25167 .size slcPageToMlcPageTbl, 512
25168 slcPageToMlcPageTbl:
25170 .type DieAddrs, %object
25174 .type gDieOp, %object
25178 .type DieCsIndex, %object
25179 .size DieCsIndex, 8
25182 .type IDByte, %object
25186 .type read_retry_cur_offset, %object
25187 .size read_retry_cur_offset, 4
25188 read_retry_cur_offset:
25190 .section .data.rel,"aw",%progbits
25193 .type rknand_sys_storage_dev, %object
25194 .size rknand_sys_storage_dev, 80
25195 rknand_sys_storage_dev:
25199 .xword rknand_sys_storage_fops