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
32 stp x29, x30, [sp, -32]!
34 ldr x0, [x0, #:got_lo12:kmalloc_caches]
39 movk w1, 0x240, lsl 16
44 add x0, x0, :lo12:.LC0
53 ldp x29, x30, [sp], 32
55 .size rknand_sys_storage_open, .-rknand_sys_storage_open
57 .type rknand_sys_storage_release, %function
58 rknand_sys_storage_release:
59 stp x29, x30, [sp, -16]!
67 ldp x29, x30, [sp], 16
69 .size rknand_sys_storage_release, .-rknand_sys_storage_release
72 .type FlashMemCmp8, %function
91 .size FlashMemCmp8, .-FlashMemCmp8
93 .global FlashRsvdBlkChk
94 .type FlashRsvdBlkChk, %function
96 adrp x2, :got:gNandIDBResBlkNum
97 adrp x3, :got:gBlockPageAlignSize
99 ldr x2, [x2, #:got_lo12:gNandIDBResBlkNum]
100 ldr x3, [x3, #:got_lo12:gBlockPageAlignSize]
111 .size FlashRsvdBlkChk, .-FlashRsvdBlkChk
113 .global FlashGetRandomizer
114 .type FlashGetRandomizer, %function
116 adrp x2, :got:random_seed
118 stp x29, x30, [sp, -32]!
121 ldr x2, [x2, #:got_lo12:random_seed]
123 ldrh w19, [x2,w3,uxtw 1]
124 adrp x2, :got:gNandRandomizer
125 ldr x2, [x2, #:got_lo12:gNandRandomizer]
130 orr w1, w19, -1073741824
131 csel w19, w1, w19, ne
135 ldp x29, x30, [sp], 32
137 .size FlashGetRandomizer, .-FlashGetRandomizer
140 .type JSHash, %function
145 movk w0, 0x47c6, lsl 16
151 add w3, w3, w0, lsr 2
158 .size JSHash, .-JSHash
160 .global FlashLoadIdbInfo
161 .type FlashLoadIdbInfo, %function
165 .size FlashLoadIdbInfo, .-FlashLoadIdbInfo
167 .global FlashPrintInfo
168 .type FlashPrintInfo, %function
171 .size FlashPrintInfo, .-FlashPrintInfo
174 .type FlashSuspend, %function
176 adrp x0, :got:gpNandc
178 add x1, x2, :lo12:.LANCHOR0
179 ldr x0, [x0, #:got_lo12:gpNandc]
182 str w3, [x2,#:lo12:.LANCHOR0]
199 .size FlashSuspend, .-FlashSuspend
201 .global LogAddr2PhyAddr
202 .type LogAddr2PhyAddr, %function
204 adrp x6, :got:gNandPhyInfo
207 ldr x6, [x6, #:got_lo12:gNandPhyInfo]
211 adrp x6, :got:gBlockPageAlignSize
213 ldr x6, [x6, #:got_lo12:gBlockPageAlignSize]
222 adrp x1, :got:slcPageToMlcPageTbl
223 ldr x1, [x1, #:got_lo12:slcPageToMlcPageTbl]
224 ldrh w6, [x1,w6,sxtw 1]
226 adrp x1, :got:DieAddrs
229 ldr x1, [x1, #:got_lo12:DieAddrs]
230 ldr w1, [x1,w7,uxtw 2]
245 .size LogAddr2PhyAddr, .-LogAddr2PhyAddr
247 .global FlashGetPageSize
248 .type FlashGetPageSize, %function
250 adrp x0, :got:gpNandParaInfo
251 ldr x0, [x0, #:got_lo12:gpNandParaInfo]
255 .size FlashGetPageSize, .-FlashGetPageSize
257 .global NandcReadDontCaseBusyEn
258 .type NandcReadDontCaseBusyEn, %function
259 NandcReadDontCaseBusyEn:
261 .size NandcReadDontCaseBusyEn, .-NandcReadDontCaseBusyEn
263 .global NandcGetChipIf
264 .type NandcGetChipIf, %function
266 adrp x1, :got:gNandChipMap
268 ldr x1, [x1, #:got_lo12:gNandChipMap]
273 add x0, x0, x2, lsl 8
275 .size NandcGetChipIf, .-NandcGetChipIf
277 .global FlashEraseCmd
278 .type FlashEraseCmd, %function
280 stp x29, x30, [sp, -32]!
296 adrp x2, :got:gBlockPageAlignSize
297 ldr x2, [x2, #:got_lo12:gBlockPageAlignSize]
311 ldp x29, x30, [sp], 32
313 .size FlashEraseCmd, .-FlashEraseCmd
315 .global FlashProgSecondCmd
316 .type FlashProgSecondCmd, %function
318 stp x29, x30, [sp, -16]!
323 ldp x29, x30, [sp], 16
325 .size FlashProgSecondCmd, .-FlashProgSecondCmd
327 .global FlashProgDpFirstCmd
328 .type FlashProgDpFirstCmd, %function
330 stp x29, x30, [sp, -16]!
333 adrp x1, :got:gNandOptPara
334 ldr x1, [x1, #:got_lo12:gNandOptPara]
337 ldp x29, x30, [sp], 16
339 .size FlashProgDpFirstCmd, .-FlashProgDpFirstCmd
341 .global NandcSetDdrPara
342 .type NandcSetDdrPara, %function
344 adrp x1, :got:gpNandc
347 orr w0, w2, w0, lsl 16
348 ldr x1, [x1, #:got_lo12:gpNandc]
352 adrp x0, :got:gpNandc1
353 ldr x0, [x0, #:got_lo12:gpNandc1]
360 .size NandcSetDdrPara, .-NandcSetDdrPara
362 .global NandcSetDdrMode
363 .type NandcSetDdrMode, %function
365 adrp x1, :got:gpNandc
367 adrp x0, :got:gpNandc1
368 ldr x2, [x1, #:got_lo12:gpNandc]
375 ldr x0, [x0, #:got_lo12:gpNandc1]
378 ldr x1, [x1, #:got_lo12:gpNandc]
384 .size NandcSetDdrMode, .-NandcSetDdrMode
387 .type NandcSetMode, %function
389 stp x29, x30, [sp, -48]!
392 stp x19, x20, [sp,16]
393 adrp x20, :got:gpNandc
395 stp x21, x22, [sp,32]
396 adrp x22, :got:gpNandc1
397 ldr x21, [x20, #:got_lo12:gpNandc]
408 csel w19, w1, w19, ne
409 bl rknand_get_clk_rate
411 movk w1, 0x900, lsl 16
413 adrp x0, :got:gToggleModeClkDiv
415 ldr x0, [x0, #:got_lo12:gToggleModeClkDiv]
424 ldr x0, [x0, #:got_lo12:gToggleModeClkDiv]
431 ldr x0, [x20, #:got_lo12:gpNandc]
433 movk w2, 0x10, lsl 16
440 ldr x0, [x22, #:got_lo12:gpNandc1]
453 ldr x20, [x20, #:got_lo12:gpNandc]
456 ldr x0, [x22, #:got_lo12:gpNandc1]
464 ldp x19, x20, [sp,16]
465 ldp x21, x22, [sp,32]
466 ldp x29, x30, [sp], 48
468 .size NandcSetMode, .-NandcSetMode
470 .global NandcFlashCsDebug
471 .type NandcFlashCsDebug, %function
473 adrp x1, :got:gNandChipMap
475 ldr x1, [x1, #:got_lo12:gNandChipMap]
481 .size NandcFlashCsDebug, .-NandcFlashCsDebug
484 .type NandcFlashCs, %function
486 adrp x1, :got:gNandChipMap
488 ldr x1, [x1, #:got_lo12:gNandChipMap]
498 .size NandcFlashCs, .-NandcFlashCs
500 .global NandcFlashDeCs
501 .type NandcFlashDeCs, %function
503 adrp x1, :got:gNandChipMap
505 ldr x1, [x1, #:got_lo12:gNandChipMap]
512 .size NandcFlashDeCs, .-NandcFlashDeCs
515 .type NandcDelayns, %function
527 .size NandcDelayns, .-NandcDelayns
529 .global FlashReadStatus
530 .type FlashReadStatus, %function
532 stp x29, x30, [sp, -32]!
543 ldp x29, x30, [sp], 32
545 .size FlashReadStatus, .-FlashReadStatus
547 .global ToshibaSetRRPara
548 .type ToshibaSetRRPara, %function
550 stp x29, x30, [sp, -96]!
551 adrp x2, :got:Toshiba15RefValue
553 stp x23, x24, [sp,48]
555 ldr x2, [x2, #:got_lo12:Toshiba15RefValue]
556 stp x19, x20, [sp,16]
557 stp x21, x22, [sp,32]
562 stp x25, x26, [sp,64]
564 adrp x0, :got:ToshibaA19RefValue
565 adrp x25, :got:g_maxRegNum
566 stp x27, x28, [sp,80]
569 ldr x24, [x0, #:got_lo12:ToshibaA19RefValue]
570 adrp x27, :got:g_retryMode
571 adrp x28, :got:ToshibaRefValue
575 ldr x0, [x25, #:got_lo12:g_maxRegNum]
580 ldr x0, [x22, #:got_lo12:ToshibaA19RefValue]
585 ldr x0, [x27, #:got_lo12:g_retryMode]
597 ldr x0, [x28, #:got_lo12:ToshibaRefValue]
604 ldp x19, x20, [sp,16]
605 ldp x21, x22, [sp,32]
606 ldp x23, x24, [sp,48]
607 ldp x25, x26, [sp,64]
608 ldp x27, x28, [sp,80]
609 ldp x29, x30, [sp], 96
611 .size ToshibaSetRRPara, .-ToshibaSetRRPara
613 .global SamsungSetRRPara
614 .type SamsungSetRRPara, %function
616 stp x29, x30, [sp, -64]!
619 stp x21, x22, [sp,32]
621 adrp x0, :got:SamsungRefValue
622 stp x19, x20, [sp,16]
625 ldr x20, [x0, #:got_lo12:SamsungRefValue]
627 stp x23, x24, [sp,48]
628 add x20, x20, x1, lsl 2
629 adrp x23, :got:g_maxRegNum
632 ldr x0, [x23, #:got_lo12:g_maxRegNum]
638 ldr x0, [x22, #:got_lo12:SamsungRefValue]
648 ldp x19, x20, [sp,16]
649 ldp x21, x22, [sp,32]
650 ldp x23, x24, [sp,48]
651 ldp x29, x30, [sp], 64
653 .size SamsungSetRRPara, .-SamsungSetRRPara
655 .global HynixSetRRPara
656 .type HynixSetRRPara, %function
658 stp x29, x30, [sp, -80]!
659 adrp x4, :got:gReadRetryInfo
661 stp x21, x22, [sp,32]
663 adrp x0, :got:gpNandParaInfo
664 stp x23, x24, [sp,48]
665 stp x19, x20, [sp,16]
666 ldr x0, [x0, #:got_lo12:gpNandParaInfo]
668 stp x25, x26, [sp,64]
676 ldr x4, [x4, #:got_lo12:gReadRetryInfo]
678 add x4, x4, x22, lsl 6
680 add x19, x4, x19, sxtw
683 ldr x4, [x4, #:got_lo12:gReadRetryInfo]
685 add x19, x19, x23, sxtw
686 add x4, x4, x19, lsl 3
714 adrp x0, :got:read_retry_cur_offset
715 ldr x0, [x0, #:got_lo12:read_retry_cur_offset]
717 ldp x19, x20, [sp,16]
718 ldp x21, x22, [sp,32]
719 ldp x23, x24, [sp,48]
720 ldp x25, x26, [sp,64]
721 ldp x29, x30, [sp], 80
723 .size HynixSetRRPara, .-HynixSetRRPara
725 .global FlashSetReadRetryDefault
726 .type FlashSetReadRetryDefault, %function
727 FlashSetReadRetryDefault:
728 adrp x0, :got:gpNandParaInfo
729 stp x29, x30, [sp, -48]!
731 ldr x0, [x0, #:got_lo12:gpNandParaInfo]
732 stp x19, x20, [sp,16]
741 adrp x20, :got:IDByte
742 adrp x21, :got:gReadRetryInfo
745 ldr x2, [x20, #:got_lo12:IDByte]
750 ldr x2, [x21, #:got_lo12:gReadRetryInfo]
760 ldp x19, x20, [sp,16]
762 ldp x29, x30, [sp], 48
764 .size FlashSetReadRetryDefault, .-FlashSetReadRetryDefault
766 .global FlashReadStatusEN
767 .type FlashReadStatusEN, %function
769 stp x29, x30, [sp, -48]!
771 stp x19, x20, [sp,16]
776 adrp x0, :got:gpNandParaInfo
778 ldr x0, [x0, #:got_lo12:gpNandParaInfo]
783 adrp x3, :got:gNandOptPara
784 ldr x0, [x3, #:got_lo12:gNandOptPara]
793 ldr x0, [x3, #:got_lo12:gNandOptPara]
797 ldr x0, [x3, #:got_lo12:gNandOptPara]
814 ldp x19, x20, [sp,16]
815 ldp x29, x30, [sp], 48
818 .size FlashReadStatusEN, .-FlashReadStatusEN
820 .global FlashWaitReadyEN
821 .type FlashWaitReadyEN, %function
823 stp x29, x30, [sp, -48]!
825 stp x19, x20, [sp,16]
839 ldp x19, x20, [sp,16]
841 ldp x29, x30, [sp], 48
843 .size FlashWaitReadyEN, .-FlashWaitReadyEN
845 .global FlashWaitCmdDone
846 .type FlashWaitCmdDone, %function
848 stp x29, x30, [sp, -48]!
853 stp x19, x20, [sp,16]
854 ldr x2, [x2, #:got_lo12:gDieOp]
864 adrp x1, :got:DieAddrs
865 ldr x1, [x1, #:got_lo12:DieAddrs]
866 ldr w0, [x1,w20,sxtw 2]
886 ldp x19, x20, [sp,16]
887 ldp x29, x30, [sp], 48
889 .size FlashWaitCmdDone, .-FlashWaitCmdDone
891 .global NandcWaitFlashReady
892 .type NandcWaitFlashReady, %function
894 adrp x1, :got:gNandChipMap
896 stp x29, x30, [sp, -48]!
898 ldr x1, [x1, #:got_lo12:gNandChipMap]
899 stp x19, x20, [sp,16]
902 movk w19, 0x1, lsl 16
917 ldp x19, x20, [sp,16]
918 ldp x29, x30, [sp], 48
920 .size NandcWaitFlashReady, .-NandcWaitFlashReady
923 .type FlashReset, %function
925 stp x29, x30, [sp, -32]!
927 stp x19, x20, [sp,16]
937 bl NandcWaitFlashReady
940 ldp x19, x20, [sp,16]
941 ldp x29, x30, [sp], 32
943 .size FlashReset, .-FlashReset
945 .global FlashEraseBlock
946 .type FlashEraseBlock, %function
948 stp x29, x30, [sp, -48]!
950 stp x19, x20, [sp,16]
955 bl NandcWaitFlashReady
963 bl NandcWaitFlashReady
971 ldp x19, x20, [sp,16]
972 ldp x29, x30, [sp], 48
974 .size FlashEraseBlock, .-FlashEraseBlock
976 .global FlashSetInterfaceMode
977 .type FlashSetInterfaceMode, %function
978 FlashSetInterfaceMode:
979 stp x29, x30, [sp, -80]!
981 stp x19, x20, [sp,16]
982 adrp x19, :got:IDByte
984 stp x21, x22, [sp,32]
985 stp x23, x24, [sp,48]
986 ldr x19, [x19, #:got_lo12:IDByte]
988 stp x25, x26, [sp,64]
989 adrp x22, :got:gFlashInterfaceMode
1007 ldr x1, [x22, #:got_lo12:gFlashInterfaceMode]
1046 bl NandcWaitFlashReady
1048 ldp x19, x20, [sp,16]
1049 ldp x21, x22, [sp,32]
1050 ldp x23, x24, [sp,48]
1051 ldp x25, x26, [sp,64]
1052 ldp x29, x30, [sp], 80
1054 .size FlashSetInterfaceMode, .-FlashSetInterfaceMode
1056 .global FlashReadSpare
1057 .type FlashReadSpare, %function
1059 adrp x3, :got:gNandParaInfo
1060 stp x29, x30, [sp, -64]!
1062 ldr x3, [x3, #:got_lo12:gNandParaInfo]
1063 stp x19, x20, [sp,16]
1087 bl NandcWaitFlashReady
1091 ldp x19, x20, [sp,16]
1093 ldp x29, x30, [sp], 64
1095 .size FlashReadSpare, .-FlashReadSpare
1097 .global SandiskProgTestBadBlock
1098 .type SandiskProgTestBadBlock, %function
1099 SandiskProgTestBadBlock:
1100 stp x29, x30, [sp, -48]!
1102 stp x19, x20, [sp,16]
1124 bl NandcWaitFlashReady
1130 ldp x19, x20, [sp,16]
1132 ldp x29, x30, [sp], 48
1134 .size SandiskProgTestBadBlock, .-SandiskProgTestBadBlock
1136 .global SandiskSetRRPara
1137 .type SandiskSetRRPara, %function
1139 stp x29, x30, [sp, -32]!
1141 stp x19, x20, [sp,16]
1151 adrp x3, :got:ToshibaA19RefValue
1152 adrp x2, :got:Toshiba15RefValue
1154 adrp x4, :got:g_maxRegNum
1155 adrp x5, :got:g_retryMode
1157 ldr x2, [x2, #:got_lo12:Toshiba15RefValue]
1158 ldr x3, [x3, #:got_lo12:ToshibaA19RefValue]
1163 ldr x0, [x4, #:got_lo12:g_maxRegNum]
1167 ldr x0, [x5, #:got_lo12:g_retryMode]
1181 bl NandcWaitFlashReady
1182 ldp x19, x20, [sp,16]
1183 ldp x29, x30, [sp], 32
1185 .size SandiskSetRRPara, .-SandiskSetRRPara
1187 .global NandcRandmzSel
1188 .type NandcRandmzSel, %function
1190 adrp x2, :got:gNandChipMap
1192 ldr x2, [x2, #:got_lo12:gNandChipMap]
1196 .size NandcRandmzSel, .-NandcRandmzSel
1198 .global FlashSetRandomizer
1199 .type FlashSetRandomizer, %function
1201 stp x29, x30, [sp, -48]!
1205 adrp x0, :got:gNandcVer
1206 stp x19, x20, [sp,16]
1208 ldr x0, [x0, #:got_lo12:gNandcVer]
1212 adrp x0, :got:random_seed
1214 ldr x0, [x0, #:got_lo12:random_seed]
1215 ldrh w19, [x0,w19,uxtw 1]
1216 adrp x0, :got:gNandRandomizer
1217 ldr x0, [x0, #:got_lo12:gNandRandomizer]
1223 orr w1, w19, -1073741824
1224 csel w19, w1, w19, ne
1232 adrp x0, :got:random_seed
1234 ldr x0, [x0, #:got_lo12:random_seed]
1235 ldrh w20, [x0,w2,uxtw 1]
1240 adrp x0, :got:gNandRandomizer
1241 ldr x0, [x0, #:got_lo12:gNandRandomizer]
1244 ubfiz w19, w19, 1, 7
1253 ldp x19, x20, [sp,16]
1255 ldp x29, x30, [sp], 48
1257 .size FlashSetRandomizer, .-FlashSetRandomizer
1259 .global FlashReadCmd
1260 .type FlashReadCmd, %function
1262 stp x29, x30, [sp, -48]!
1282 bl FlashSetRandomizer
1284 ldp x29, x30, [sp], 48
1286 .size FlashReadCmd, .-FlashReadCmd
1288 .global HynixGetReadRetryDefault
1289 .type HynixGetReadRetryDefault, %function
1290 HynixGetReadRetryDefault:
1291 stp x29, x30, [sp, -144]!
1295 stp x19, x20, [sp,16]
1296 adrp x19, :got:gReadRetryInfo
1297 stp x27, x28, [sp,80]
1298 stp x21, x22, [sp,32]
1299 ldr x1, [x19, #:got_lo12:gReadRetryInfo]
1301 stp x23, x24, [sp,48]
1302 stp x25, x26, [sp,64]
1314 adrp x0, :got:refValueDefault
1316 ldr x0, [x0, #:got_lo12:refValueDefault]
1393 adrp x23, :got:gNandMaxDie
1394 adrp x24, :got:DieCsIndex
1396 adrp x26, :got:refValueDefault
1398 ldr x0, [x23, #:got_lo12:gNandMaxDie]
1402 ldr x0, [x24, #:got_lo12:DieCsIndex]
1404 ldr x22, [x19, #:got_lo12:gReadRetryInfo]
1405 ldrb w0, [x0,w27,sxtw]
1414 ldr x0, [x19, #:got_lo12:gReadRetryInfo]
1431 ldr x3, [x26, #:got_lo12:refValueDefault]
1439 strb w3, [x22,w2,sxtw]
1477 adrp x0, :got:gNandMaxDie
1478 ldr x0, [x0, #:got_lo12:gNandMaxDie]
1483 ldr x19, [x19, #:got_lo12:gReadRetryInfo]
1486 ldp x19, x20, [sp,16]
1487 ldp x21, x22, [sp,32]
1488 ldp x23, x24, [sp,48]
1489 ldp x25, x26, [sp,64]
1490 ldp x27, x28, [sp,80]
1491 ldp x29, x30, [sp], 144
1494 adrp x0, :got:DieCsIndex
1495 ldr x3, [x19, #:got_lo12:gReadRetryInfo]
1497 ldr x0, [x0, #:got_lo12:DieCsIndex]
1498 ldrb w23, [x0,w22,sxtw]
1500 sbfiz x26, x23, 6, 32
1509 bl NandcWaitFlashReady
1564 bl NandcWaitFlashReady
1576 adrp x4, :got:gFlashPageBuffer0
1577 ldr x0, [x4, #:got_lo12:gFlashPageBuffer0]
1589 ldr x0, [x4, #:got_lo12:gFlashPageBuffer0]
1611 ldr x0, [x4, #:got_lo12:gFlashPageBuffer0]
1621 ldr w11, [x12,w10,sxtw 2]
1625 csinc w9, w9, w9, ne
1634 str w3, [x12,x5,lsl 2]
1646 strb w6, [x26,w5,sxtw]
1658 bl NandcWaitFlashReady
1664 ldr x0, [x19, #:got_lo12:gReadRetryInfo]
1679 bl NandcWaitFlashReady
1682 .size HynixGetReadRetryDefault, .-HynixGetReadRetryDefault
1684 .global FlashReadDpDataOutCmd
1685 .type FlashReadDpDataOutCmd, %function
1686 FlashReadDpDataOutCmd:
1687 stp x29, x30, [sp, -48]!
1694 adrp x2, :got:gNandOptPara
1698 ldr x2, [x2, #:got_lo12:gNandOptPara]
1726 bl FlashSetRandomizer
1728 ldp x29, x30, [sp], 48
1730 .size FlashReadDpDataOutCmd, .-FlashReadDpDataOutCmd
1732 .global FlashReadDpCmd
1733 .type FlashReadDpCmd, %function
1735 stp x29, x30, [sp, -80]!
1737 stp x21, x22, [sp,32]
1742 stp x19, x20, [sp,16]
1745 adrp x3, :got:gNandOptPara
1749 ldr x3, [x3, #:got_lo12:gNandOptPara]
1770 bl NandcWaitFlashReady
1796 bl FlashSetRandomizer
1798 ldp x19, x20, [sp,16]
1799 ldp x21, x22, [sp,32]
1800 ldp x29, x30, [sp], 80
1802 .size FlashReadDpCmd, .-FlashReadDpCmd
1804 .global FlashProgFirstCmd
1805 .type FlashProgFirstCmd, %function
1807 stp x29, x30, [sp, -48]!
1826 bl FlashSetRandomizer
1828 ldp x29, x30, [sp], 48
1830 .size FlashProgFirstCmd, .-FlashProgFirstCmd
1832 .global FlashProgDpSecondCmd
1833 .type FlashProgDpSecondCmd, %function
1834 FlashProgDpSecondCmd:
1835 stp x29, x30, [sp, -48]!
1842 adrp x2, :got:gNandOptPara
1844 ldr x2, [x2, #:got_lo12:gNandOptPara]
1856 bl FlashSetRandomizer
1858 ldp x29, x30, [sp], 48
1860 .size FlashProgDpSecondCmd, .-FlashProgDpSecondCmd
1863 .type FlashDeInit, %function
1865 stp x29, x30, [sp, -32]!
1869 adrp x19, :got:gFlashToggleModeEn
1870 bl NandcWaitFlashReady
1871 bl FlashSetReadRetryDefault
1872 ldr x19, [x19, #:got_lo12:gFlashToggleModeEn]
1875 adrp x0, :got:gFlashInterfaceMode
1876 ldr x0, [x0, #:got_lo12:gFlashInterfaceMode]
1880 bl FlashSetInterfaceMode
1890 ldp x29, x30, [sp], 32
1892 .size FlashDeInit, .-FlashDeInit
1894 .global NandcTimeCfg
1895 .type NandcTimeCfg, %function
1897 stp x29, x30, [sp, -32]!
1902 bl rknand_get_clk_rate
1904 adrp x1, :got:gpNandc
1905 movk w2, 0xf, lsl 16
1909 ldr x0, [x1, #:got_lo12:gpNandc]
1916 ldr x0, [x1, #:got_lo12:gpNandc]
1922 ldr x0, [x1, #:got_lo12:gpNandc]
1928 ldr x0, [x1, #:got_lo12:gpNandc]
1944 adrp x0, :got:gpNandc1
1945 ldr x0, [x0, #:got_lo12:gpNandc1]
1948 ldr x1, [x1, #:got_lo12:gpNandc]
1954 ldp x29, x30, [sp], 32
1956 .size NandcTimeCfg, .-NandcTimeCfg
1958 .global FlashTimingCfg
1959 .type FlashTimingCfg, %function
1963 stp x29, x30, [sp, -16]!
1972 adrp x1, :got:gpNandc
1973 ldr x1, [x1, #:got_lo12:gpNandc]
1976 adrp x0, :got:gpNandc1
1977 ldr x0, [x0, #:got_lo12:gpNandc1]
1984 adrp x0, :got:gNandParaInfo
1985 ldr x0, [x0, #:got_lo12:gNandParaInfo]
1988 ldp x29, x30, [sp], 16
1990 .size FlashTimingCfg, .-FlashTimingCfg
1992 .global NandcGetTimeCfg
1993 .type NandcGetTimeCfg, %function
1995 adrp x4, :got:gpNandc
1996 ldr x4, [x4, #:got_lo12:gpNandc]
2010 orr w0, w0, w1, lsl 16
2013 .size NandcGetTimeCfg, .-NandcGetTimeCfg
2016 .type NandcBchSel, %function
2018 adrp x1, :got:gpNandc
2022 ldr x1, [x1, #:got_lo12:gpNandc]
2024 adrp x1, :got:gNandcEccBits
2026 ldr x1, [x1, #:got_lo12:gNandcEccBits]
2044 adrp x0, :got:gpNandc1
2047 ldr x0, [x0, #:got_lo12:gpNandc1]
2054 .size NandcBchSel, .-NandcBchSel
2057 .type FlashBchSel, %function
2059 adrp x1, :got:gNandFlashEccBits
2061 stp x29, x30, [sp, -16]!
2063 ldr x1, [x1, #:got_lo12:gNandFlashEccBits]
2066 ldp x29, x30, [sp], 16
2068 .size FlashBchSel, .-FlashBchSel
2071 .type FlashResume, %function
2073 adrp x1, :got:gpNandc
2074 stp x29, x30, [sp, -48]!
2076 ldr x1, [x1, #:got_lo12:gpNandc]
2077 stp x19, x20, [sp,16]
2080 add x0, x19, :lo12:.LANCHOR0
2082 ldr w9, [x19,#:lo12:.LANCHOR0]
2094 adrp x0, :got:gpNandc1
2101 ldr x0, [x0, #:got_lo12:gpNandc1]
2116 adrp x21, :got:IDByte
2119 ldr x1, [x21, #:got_lo12:IDByte]
2131 adrp x0, :got:gFlashToggleModeEn
2132 ldr x0, [x0, #:got_lo12:gFlashToggleModeEn]
2135 adrp x20, :got:gFlashInterfaceMode
2137 add x19, x19, :lo12:.LANCHOR0
2139 ldr x20, [x20, #:got_lo12:gFlashInterfaceMode]
2141 bl FlashSetInterfaceMode
2148 adrp x0, :got:gpNandParaInfo
2149 ldr x0, [x0, #:got_lo12:gpNandParaInfo]
2155 ldp x19, x20, [sp,16]
2156 ldp x29, x30, [sp], 48
2158 .size FlashResume, .-FlashResume
2160 .global NandCIrqEnable
2161 .type NandCIrqEnable, %function
2172 .size NandCIrqEnable, .-NandCIrqEnable
2174 .global NandCIrqDisable
2175 .type NandCIrqDisable, %function
2186 .size NandCIrqDisable, .-NandCIrqDisable
2188 .global rk_nandc_get_irq_status
2189 .type rk_nandc_get_irq_status, %function
2190 rk_nandc_get_irq_status:
2193 .size rk_nandc_get_irq_status, .-rk_nandc_get_irq_status
2195 .global rk_nandc_flash_ready
2196 .type rk_nandc_flash_ready, %function
2197 rk_nandc_flash_ready:
2198 stp x29, x30, [sp, -16]!
2202 ldp x29, x30, [sp], 16
2204 .size rk_nandc_flash_ready, .-rk_nandc_flash_ready
2206 .global NandcIqrWaitFlashReady
2207 .type NandcIqrWaitFlashReady, %function
2208 NandcIqrWaitFlashReady:
2209 stp x29, x30, [sp, -32]!
2213 bl rk_nandc_rb_irq_flag_init
2220 bl wait_for_nand_flash_ready
2228 ldp x29, x30, [sp], 32
2230 .size NandcIqrWaitFlashReady, .-NandcIqrWaitFlashReady
2232 .global FlashEraseBlocks
2233 .type FlashEraseBlocks, %function
2235 stp x29, x30, [sp, -128]!
2237 stp x19, x20, [sp,16]
2238 stp x21, x22, [sp,32]
2239 stp x25, x26, [sp,64]
2240 stp x27, x28, [sp,80]
2241 stp x23, x24, [sp,48]
2248 adrp x27, :got:gMultiPageProgEn
2249 adrp x28, :got:gDieOp
2252 adrp x23, :got:gNandMaxDie
2264 adrp x1, :got:gNandMaxDie
2267 ldr x1, [x1, #:got_lo12:gNandMaxDie]
2275 ldr x1, [x27, #:got_lo12:gMultiPageProgEn]
2277 ldr x4, [x28, #:got_lo12:gDieOp]
2281 csel w24, w24, wzr, ne
2283 adrp x4, :got:gDieOp
2290 ldr x2, [x4, #:got_lo12:gDieOp]
2304 adrp x1, :got:DieCsIndex
2305 ldr x4, [x4, #:got_lo12:gDieOp]
2307 ldr x1, [x1, #:got_lo12:DieCsIndex]
2314 adrp x0, :got:DieAddrs
2316 ldr x0, [x0, #:got_lo12:DieAddrs]
2317 ldr w0, [x0,x1,lsl 2]
2333 adrp x0, :got:gpNandc
2334 ldr x0, [x0, #:got_lo12:gpNandc]
2336 bl NandcIqrWaitFlashReady
2337 adrp x0, :got:gpNandc1
2338 ldr x0, [x0, #:got_lo12:gpNandc1]
2341 adrp x1, :got:gNandc1_enable
2342 ldr x1, [x1, #:got_lo12:gNandc1_enable]
2345 bl NandcIqrWaitFlashReady
2349 ldr x0, [x23, #:got_lo12:gNandMaxDie]
2359 ldp x19, x20, [sp,16]
2360 ldp x21, x22, [sp,32]
2361 ldp x23, x24, [sp,48]
2362 ldp x25, x26, [sp,64]
2363 ldp x27, x28, [sp,80]
2364 ldp x29, x30, [sp], 128
2366 .size FlashEraseBlocks, .-FlashEraseBlocks
2368 .global rk_nandc_flash_xfer_completed
2369 .type rk_nandc_flash_xfer_completed, %function
2370 rk_nandc_flash_xfer_completed:
2371 stp x29, x30, [sp, -16]!
2375 ldp x29, x30, [sp], 16
2377 .size rk_nandc_flash_xfer_completed, .-rk_nandc_flash_xfer_completed
2379 .global NandcSendDumpDataStart
2380 .type NandcSendDumpDataStart, %function
2381 NandcSendDumpDataStart:
2388 orr w1, w1, 536870912
2401 .size NandcSendDumpDataStart, .-NandcSendDumpDataStart
2403 .global NandcSendDumpDataDone
2404 .type NandcSendDumpDataDone, %function
2405 NandcSendDumpDataDone:
2414 .size NandcSendDumpDataDone, .-NandcSendDumpDataDone
2416 .global NandcXferStart
2417 .type NandcXferStart, %function
2419 stp x29, x30, [sp, -96]!
2425 adrp x1, :got:gNandChipMap
2426 stp x19, x20, [sp,16]
2427 stp x21, x22, [sp,32]
2428 ldr x1, [x1, #:got_lo12:gNandChipMap]
2429 ubfiz w19, w25, 1, 1
2430 stp x23, x24, [sp,48]
2444 adrp x0, :got:gNandcVer
2445 orr w19, w19, 536870912
2447 ldr x0, [x0, #:got_lo12:gNandcVer]
2462 adrp x20, :got:gMasterInfo
2468 bl rk_nandc_xfer_irq_flag_init
2475 ldr x0, [x20, #:got_lo12:gMasterInfo]
2479 adrp x0, :got:gNandcEccBits
2485 ldr x0, [x0, #:got_lo12:gNandcEccBits]
2494 ldr x4, [x20, #:got_lo12:gMasterInfo]
2500 orr w4, w10, w4, lsl 16
2511 ldr x20, [x20, #:got_lo12:gMasterInfo]
2512 ubfx x23, x19, 22, 5
2519 bl rknand_dma_map_single
2524 bl rknand_dma_map_single
2565 ldp x19, x20, [sp,16]
2566 ldp x21, x22, [sp,32]
2567 ldp x23, x24, [sp,48]
2569 ldp x29, x30, [sp], 96
2571 .size NandcXferStart, .-NandcXferStart
2574 .type Ftl_log2, %function
2588 .size Ftl_log2, .-Ftl_log2
2590 .global FtlPrintInfo
2591 .type FtlPrintInfo, %function
2594 .size FtlPrintInfo, .-FtlPrintInfo
2596 .global FtlSysBlkNumInit
2597 .type FtlSysBlkNumInit, %function
2602 adrp x2, :got:c_ftl_nand_max_sys_blks
2604 adrp x1, :got:c_ftl_nand_sys_blks_per_plane
2605 adrp x3, :got:c_ftl_nand_blk_pre_plane
2606 ldr x1, [x1, #:got_lo12:c_ftl_nand_sys_blks_per_plane]
2608 adrp x1, :got:c_ftl_nand_planes_num
2609 ldr x2, [x2, #:got_lo12:c_ftl_nand_max_sys_blks]
2610 ldr x1, [x1, #:got_lo12:c_ftl_nand_planes_num]
2614 adrp x2, :got:c_ftl_nand_data_blks_per_plane
2615 ldr x3, [x3, #:got_lo12:c_ftl_nand_blk_pre_plane]
2616 ldr x2, [x2, #:got_lo12:c_ftl_nand_data_blks_per_plane]
2620 adrp x2, :got:c_ftl_nand_totle_phy_blks
2621 adrp x0, :got:c_ftl_nand_max_data_blks
2622 ldr x2, [x2, #:got_lo12:c_ftl_nand_totle_phy_blks]
2623 ldr x0, [x0, #:got_lo12:c_ftl_nand_max_data_blks]
2629 .size FtlSysBlkNumInit, .-FtlSysBlkNumInit
2631 .global FtlConstantsInit
2632 .type FtlConstantsInit, %function
2634 stp x29, x30, [sp, -96]!
2635 adrp x3, :got:c_ftl_nand_planes_per_die
2636 adrp x6, :got:p_plane_order_table
2638 stp x19, x20, [sp,16]
2639 stp x21, x22, [sp,32]
2640 stp x23, x24, [sp,48]
2641 stp x25, x26, [sp,64]
2644 adrp x20, :got:c_ftl_nand_blk_pre_plane
2646 adrp x0, :got:c_ftl_nand_type
2649 ldr x0, [x0, #:got_lo12:c_ftl_nand_type]
2651 adrp x0, :got:c_ftl_nand_die_num
2652 ldr x1, [x0, #:got_lo12:c_ftl_nand_die_num]
2655 ldr x3, [x3, #:got_lo12:c_ftl_nand_planes_per_die]
2657 ldr x3, [x20, #:got_lo12:c_ftl_nand_blk_pre_plane]
2661 ldr x4, [x6, #:got_lo12:p_plane_order_table]
2662 adrp x13, :got:p_plane_order_table
2684 ldr x9, [x13, #:got_lo12:p_plane_order_table]
2688 strb w3, [x9,w6,uxtw]
2698 ldr x3, [x0, #:got_lo12:c_ftl_nand_die_num]
2702 ldr x2, [x20, #:got_lo12:c_ftl_nand_blk_pre_plane]
2705 adrp x2, :got:c_mlc_erase_count_value
2706 adrp x21, :got:c_ftl_nand_ext_blk_pre_plane
2709 ldr x2, [x2, #:got_lo12:c_mlc_erase_count_value]
2711 ldr x3, [x21, #:got_lo12:c_ftl_nand_ext_blk_pre_plane]
2716 ldr x0, [x0, #:got_lo12:c_ftl_nand_die_num]
2717 adrp x23, :got:c_ftl_nand_planes_num
2718 adrp x26, :got:c_ftl_nand_page_pre_blk
2719 adrp x25, :got:c_ftl_nand_page_pre_slc_blk
2720 adrp x27, :got:c_ftl_nand_sec_pre_page
2721 adrp x22, :got:c_ftl_nand_sec_pre_page_shift
2723 ldr x23, [x23, #:got_lo12:c_ftl_nand_planes_num]
2726 ldr x20, [x20, #:got_lo12:c_ftl_nand_blk_pre_plane]
2729 adrp x0, :got:c_ftl_nand_blks_per_die
2731 ldr x0, [x0, #:got_lo12:c_ftl_nand_blks_per_die]
2735 adrp x1, :got:c_ftl_nand_blks_per_die_shift
2737 adrp x3, :got:c_ftl_nand_page_pre_super_blk
2738 ldr x1, [x1, #:got_lo12:c_ftl_nand_blks_per_die_shift]
2741 ldr x1, [x26, #:got_lo12:c_ftl_nand_page_pre_blk]
2743 ldr x1, [x25, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
2746 ldr x3, [x3, #:got_lo12:c_ftl_nand_page_pre_super_blk]
2750 ldr x24, [x27, #:got_lo12:c_ftl_nand_sec_pre_page]
2753 ldr x1, [x22, #:got_lo12:c_ftl_nand_sec_pre_page_shift]
2756 adrp x6, :got:c_ftl_nand_totle_phy_blks
2759 adrp x0, :got:c_ftl_nand_byte_pre_page
2763 ldr x0, [x0, #:got_lo12:c_ftl_nand_byte_pre_page]
2765 adrp x0, :got:c_ftl_nand_byte_pre_oob
2768 ldr x0, [x0, #:got_lo12:c_ftl_nand_byte_pre_oob]
2770 adrp x0, :got:c_ftl_nand_reserved_blks
2772 ldr x0, [x0, #:got_lo12:c_ftl_nand_reserved_blks]
2776 ldr x6, [x6, #:got_lo12:c_ftl_nand_totle_phy_blks]
2781 ldr x1, [x21, #:got_lo12:c_ftl_nand_ext_blk_pre_plane]
2785 ldr x21, [x21, #:got_lo12:c_ftl_nand_ext_blk_pre_plane]
2786 adrp x6, :got:DeviceCapacity
2787 ldr x7, [x19, #:got_lo12:c_ftl_nand_page_pre_blk]
2791 ldr x6, [x6, #:got_lo12:DeviceCapacity]
2797 ldr x1, [x2, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
2802 adrp x1, :got:c_ftl_nand_max_vendor_blks
2804 ldr x2, [x1, #:got_lo12:c_ftl_nand_max_vendor_blks]
2809 adrp x4, :got:c_ftl_nand_vendor_region_num
2814 ldr x4, [x4, #:got_lo12:c_ftl_nand_vendor_region_num]
2819 adrp x2, :got:c_ftl_nand_map_blks_per_plane
2820 ldr x2, [x2, #:got_lo12:c_ftl_nand_map_blks_per_plane]
2822 adrp x2, :got:c_ftl_nand_max_map_blks
2824 ldr x2, [x2, #:got_lo12:c_ftl_nand_max_map_blks]
2828 ldr x1, [x1, #:got_lo12:c_ftl_nand_max_vendor_blks]
2832 adrp x1, :got:c_ftl_nand_sys_blks_per_plane
2833 ldr x2, [x1, #:got_lo12:c_ftl_nand_sys_blks_per_plane]
2838 ldr x21, [x1, #:got_lo12:c_ftl_nand_sys_blks_per_plane]
2841 adrp x0, :got:c_ftl_nand_init_sys_blks_per_plane
2843 adrp x2, :got:c_ftl_nand_map_region_num
2844 ldr x0, [x0, #:got_lo12:c_ftl_nand_init_sys_blks_per_plane]
2846 adrp x0, :got:c_ftl_nand_max_data_blks
2847 ldr x19, [x19, #:got_lo12:c_ftl_nand_page_pre_blk]
2848 ldr x0, [x0, #:got_lo12:c_ftl_nand_max_data_blks]
2849 ldr x22, [x22, #:got_lo12:c_ftl_nand_sec_pre_page_shift]
2852 ldr x2, [x2, #:got_lo12:c_ftl_nand_map_region_num]
2861 adrp x0, :got:c_ftl_nand_l2pmap_ram_region_num
2862 ldr x20, [x20, #:got_lo12:c_ftl_nand_sec_pre_page]
2863 ldr x0, [x0, #:got_lo12:c_ftl_nand_l2pmap_ram_region_num]
2867 adrp x0, :got:g_MaxLbaSector
2868 ldr x0, [x0, #:got_lo12:g_MaxLbaSector]
2871 ldp x19, x20, [sp,16]
2872 ldp x21, x22, [sp,32]
2873 ldp x23, x24, [sp,48]
2874 ldp x25, x26, [sp,64]
2876 ldp x29, x30, [sp], 96
2878 .size FtlConstantsInit, .-FtlConstantsInit
2880 .global IsBlkInVendorPart
2881 .type IsBlkInVendorPart, %function
2883 adrp x1, :got:g_totle_vendor_block
2886 ldr x1, [x1, #:got_lo12:g_totle_vendor_block]
2889 adrp x1, :got:c_ftl_nand_max_vendor_blks
2890 ldr x1, [x1, #:got_lo12:c_ftl_nand_max_vendor_blks]
2892 adrp x1, :got:p_vendor_block_table
2893 ldr x1, [x1, #:got_lo12:p_vendor_block_table]
2900 add x0, x3, x1, lsl 1
2910 .size IsBlkInVendorPart, .-IsBlkInVendorPart
2912 .global FtlCacheMetchLpa
2913 .type FtlCacheMetchLpa, %function
2915 adrp x2, :got:g_wr_page_num
2918 ldr x2, [x2, #:got_lo12:g_wr_page_num]
2921 adrp x2, :got:req_wr_io
2923 ldr x2, [x2, #:got_lo12:req_wr_io]
2942 .size FtlCacheMetchLpa, .-FtlCacheMetchLpa
2945 .type FtlGetCap, %function
2947 adrp x0, :got:g_MaxLbaSector
2948 ldr x0, [x0, #:got_lo12:g_MaxLbaSector]
2951 .size FtlGetCap, .-FtlGetCap
2953 .global FtlGetCapacity
2954 .type FtlGetCapacity, %function
2956 adrp x0, :got:g_MaxLbaSector
2957 ldr x0, [x0, #:got_lo12:g_MaxLbaSector]
2960 .size FtlGetCapacity, .-FtlGetCapacity
2963 .type FtlGetLpn, %function
2965 adrp x0, :got:g_MaxLpn
2966 ldr x0, [x0, #:got_lo12:g_MaxLpn]
2969 .size FtlGetLpn, .-FtlGetLpn
2971 .global FtlGetCurEraseBlock
2972 .type FtlGetCurEraseBlock, %function
2973 FtlGetCurEraseBlock:
2974 adrp x0, :got:c_ftl_nand_planes_num
2975 adrp x1, :got:g_cur_erase_blk
2976 ldr x0, [x0, #:got_lo12:c_ftl_nand_planes_num]
2977 ldr x1, [x1, #:got_lo12:g_cur_erase_blk]
2982 .size FtlGetCurEraseBlock, .-FtlGetCurEraseBlock
2984 .global FtlGetAllBlockNum
2985 .type FtlGetAllBlockNum, %function
2987 adrp x0, :got:c_ftl_nand_blk_pre_plane
2988 adrp x1, :got:c_ftl_nand_planes_num
2989 ldr x0, [x0, #:got_lo12:c_ftl_nand_blk_pre_plane]
2990 ldr x1, [x1, #:got_lo12:c_ftl_nand_planes_num]
2995 .size FtlGetAllBlockNum, .-FtlGetAllBlockNum
2997 .global FtlBbmMapBadBlock
2998 .type FtlBbmMapBadBlock, %function
3001 adrp x0, :got:c_ftl_nand_blks_per_die
3002 stp x29, x30, [sp, -32]!
3005 ldr x0, [x0, #:got_lo12:c_ftl_nand_blks_per_die]
3007 adrp x19, :got:gBbtInfo
3009 ldr x19, [x19, #:got_lo12:gBbtInfo]
3011 add x0, x19, x2, uxth 3
3022 add x0, x0, :lo12:.LC1
3029 ldp x29, x30, [sp], 32
3031 .size FtlBbmMapBadBlock, .-FtlBbmMapBadBlock
3033 .global FtlBbmIsBadBlock
3034 .type FtlBbmIsBadBlock, %function
3036 adrp x2, :got:c_ftl_nand_blks_per_die
3038 ldr x2, [x2, #:got_lo12:c_ftl_nand_blks_per_die]
3042 adrp x1, :got:gBbtInfo
3044 ldr x1, [x1, #:got_lo12:gBbtInfo]
3046 add x2, x1, x2, uxth 3
3048 ldr w1, [x1,x3,lsl 2]
3052 .size FtlBbmIsBadBlock, .-FtlBbmIsBadBlock
3054 .global FtlBbtInfoPrint
3055 .type FtlBbtInfoPrint, %function
3058 .size FtlBbtInfoPrint, .-FtlBbtInfoPrint
3060 .global FtlBbtCalcTotleCnt
3061 .type FtlBbtCalcTotleCnt, %function
3063 stp x29, x30, [sp, -48]!
3065 stp x19, x20, [sp,16]
3067 stp x21, x22, [sp,32]
3069 adrp x22, :got:c_ftl_nand_blks_per_die
3070 adrp x21, :got:c_ftl_nand_die_num
3072 ldr x0, [x22, #:got_lo12:c_ftl_nand_blks_per_die]
3073 ldr x1, [x21, #:got_lo12:c_ftl_nand_die_num]
3090 ldp x19, x20, [sp,16]
3091 ldp x21, x22, [sp,32]
3092 ldp x29, x30, [sp], 48
3094 .size FtlBbtCalcTotleCnt, .-FtlBbtCalcTotleCnt
3097 .type V2P_block, %function
3099 adrp x2, :got:c_ftl_nand_planes_per_die
3102 ldr x2, [x2, #:got_lo12:c_ftl_nand_planes_per_die]
3107 adrp x1, :got:c_ftl_nand_blks_per_die
3108 ldr x1, [x1, #:got_lo12:c_ftl_nand_blks_per_die]
3112 .size V2P_block, .-V2P_block
3115 .type P2V_plane, %function
3117 adrp x1, :got:c_ftl_nand_planes_per_die
3118 adrp x2, :got:c_ftl_nand_blks_per_die
3120 ldr x1, [x1, #:got_lo12:c_ftl_nand_planes_per_die]
3121 ldr x2, [x2, #:got_lo12:c_ftl_nand_blks_per_die]
3129 .size P2V_plane, .-P2V_plane
3131 .global P2V_block_in_plane
3132 .type P2V_block_in_plane, %function
3134 adrp x1, :got:c_ftl_nand_blks_per_die
3136 ldr x1, [x1, #:got_lo12:c_ftl_nand_blks_per_die]
3140 adrp x1, :got:c_ftl_nand_planes_per_die
3142 ldr x1, [x1, #:got_lo12:c_ftl_nand_planes_per_die]
3146 .size P2V_block_in_plane, .-P2V_block_in_plane
3148 .global ftl_cmp_data_ver
3149 .type ftl_cmp_data_ver, %function
3164 .size ftl_cmp_data_ver, .-ftl_cmp_data_ver
3166 .global FtlFreeSysBlkQueueEmpty
3167 .type FtlFreeSysBlkQueueEmpty, %function
3168 FtlFreeSysBlkQueueEmpty:
3169 adrp x0, :got:gSysFreeQueue
3170 ldr x0, [x0, #:got_lo12:gSysFreeQueue]
3175 .size FtlFreeSysBlkQueueEmpty, .-FtlFreeSysBlkQueueEmpty
3177 .global FtlFreeSysBlkQueueFull
3178 .type FtlFreeSysBlkQueueFull, %function
3179 FtlFreeSysBlkQueueFull:
3180 adrp x0, :got:gSysFreeQueue
3181 ldr x0, [x0, #:got_lo12:gSysFreeQueue]
3186 .size FtlFreeSysBlkQueueFull, .-FtlFreeSysBlkQueueFull
3188 .global FtlFreeSysBlkQueueIn
3189 .type FtlFreeSysBlkQueueIn, %function
3190 FtlFreeSysBlkQueueIn:
3191 stp x29, x30, [sp, -32]!
3193 stp x19, x20, [sp,16]
3196 bl FtlFreeSysBlkQueueFull
3201 bl P2V_block_in_plane
3203 adrp x1, :got:req_erase
3205 ldr x1, [x1, #:got_lo12:req_erase]
3211 adrp x0, :got:p_erase_count_table
3212 ubfiz x1, x19, 1, 16
3213 ldr x0, [x0, #:got_lo12:p_erase_count_table]
3218 adrp x1, :got:g_totle_sys_slc_erase_count
3219 ldr x1, [x1, #:got_lo12:g_totle_sys_slc_erase_count]
3224 adrp x1, :got:gSysFreeQueue
3225 ldr x1, [x1, #:got_lo12:gSysFreeQueue]
3230 add x0, x1, x2, sxtw 1
3236 ldp x19, x20, [sp,16]
3237 ldp x29, x30, [sp], 32
3239 .size FtlFreeSysBlkQueueIn, .-FtlFreeSysBlkQueueIn
3241 .global FtlFreeSysBLkSort
3242 .type FtlFreeSysBLkSort, %function
3244 stp x29, x30, [sp, -48]!
3246 stp x19, x20, [sp,16]
3247 stp x21, x22, [sp,32]
3249 adrp x20, :got:gSysFreeQueue
3250 adrp x21, :got:p_sys_data_buf
3251 adrp x22, :got:p_erase_count_table
3253 ldr x1, [x20, #:got_lo12:gSysFreeQueue]
3254 adrp x6, :got:gSysFreeQueue
3260 add x0, x1, x0, sxtw 1
3262 bl P2V_block_in_plane
3264 ldr x3, [x22, #:got_lo12:p_erase_count_table]
3265 ubfiz x1, x19, 2, 16
3266 ldr x2, [x21, #:got_lo12:p_sys_data_buf]
3276 adrp x7, :got:p_sys_data_buf
3278 ldr x1, [x6, #:got_lo12:gSysFreeQueue]
3283 ldr x1, [x7, #:got_lo12:p_sys_data_buf]
3293 ldr w9, [x3,w1,uxtw 2]
3308 adrp x2, :got:p_sys_data_buf
3309 ldr x2, [x2, #:got_lo12:p_sys_data_buf]
3312 ldr x2, [x6, #:got_lo12:gSysFreeQueue]
3316 add x1, x2, x1, sxtw 1
3317 add x0, x2, x0, sxtw 1
3326 ldp x19, x20, [sp,16]
3327 ldp x21, x22, [sp,32]
3328 ldp x29, x30, [sp], 48
3330 .size FtlFreeSysBLkSort, .-FtlFreeSysBLkSort
3332 .global IsInFreeQueue
3333 .type IsInFreeQueue, %function
3335 stp x29, x30, [sp, -32]!
3339 bl FtlFreeSysBlkQueueFull
3343 adrp x2, :got:gSysFreeQueue
3345 ldr x3, [x2, #:got_lo12:gSysFreeQueue]
3351 ldr x5, [x2, #:got_lo12:gSysFreeQueue]
3367 ldp x29, x30, [sp], 32
3369 .size IsInFreeQueue, .-IsInFreeQueue
3371 .global FtlFreeSysBlkQueueOut
3372 .type FtlFreeSysBlkQueueOut, %function
3373 FtlFreeSysBlkQueueOut:
3374 stp x29, x30, [sp, -16]!
3376 bl FtlFreeSysBlkQueueEmpty
3380 adrp x1, :got:gSysFreeQueue
3381 ldr x1, [x1, #:got_lo12:gSysFreeQueue]
3383 add x0, x1, x2, sxtw 1
3392 ldp x29, x30, [sp], 16
3394 .size FtlFreeSysBlkQueueOut, .-FtlFreeSysBlkQueueOut
3396 .global insert_data_list
3397 .type insert_data_list, %function
3403 adrp x3, :got:p_data_block_list_table
3406 adrp x2, :got:p_data_block_list_head
3408 ldr x8, [x3, #:got_lo12:p_data_block_list_table]
3415 ldr x7, [x2, #:got_lo12:p_data_block_list_head]
3421 adrp x2, :got:p_valid_page_count_table
3424 mov x8, -6148914691236517206
3425 ldr x2, [x2, #:got_lo12:p_valid_page_count_table]
3433 csinv w3, w3, wzr, ne
3435 adrp x8, :got:p_erase_count_table
3437 ldr x8, [x8, #:got_lo12:p_erase_count_table]
3442 ubfiz x16, x2, 1, 16
3447 csinv w4, w4, wzr, ne
3463 adrp x0, :got:p_data_block_list_tail
3464 ldr x0, [x0, #:got_lo12:p_data_block_list_tail]
3476 ldr x2, [x5, #:got_lo12:p_data_block_list_head]
3487 ldr x3, [x10, #:got_lo12:p_data_block_list_table]
3494 .size insert_data_list, .-insert_data_list
3496 .global INSERT_DATA_LIST
3497 .type INSERT_DATA_LIST, %function
3499 stp x29, x30, [sp, -16]!
3502 adrp x0, :got:g_num_data_superblocks
3503 ldr x0, [x0, #:got_lo12:g_num_data_superblocks]
3507 ldp x29, x30, [sp], 16
3509 .size INSERT_DATA_LIST, .-INSERT_DATA_LIST
3511 .global insert_free_list
3512 .type insert_free_list, %function
3518 adrp x3, :got:p_data_block_list_table
3521 adrp x2, :got:p_free_data_block_list_head
3523 ldr x9, [x3, #:got_lo12:p_data_block_list_table]
3530 ldr x10, [x2, #:got_lo12:p_free_data_block_list_head]
3536 adrp x2, :got:p_erase_count_table
3538 mov x9, -6148914691236517206
3539 ldr x2, [x2, #:got_lo12:p_erase_count_table]
3567 ldr x2, [x3, #:got_lo12:p_free_data_block_list_head]
3578 ldr x3, [x12, #:got_lo12:p_data_block_list_table]
3585 .size insert_free_list, .-insert_free_list
3587 .global INSERT_FREE_LIST
3588 .type INSERT_FREE_LIST, %function
3590 stp x29, x30, [sp, -16]!
3593 adrp x0, :got:g_num_free_superblocks
3594 ldr x0, [x0, #:got_lo12:g_num_free_superblocks]
3598 ldp x29, x30, [sp], 16
3600 .size INSERT_FREE_LIST, .-INSERT_FREE_LIST
3602 .global List_remove_node
3603 .type List_remove_node, %function
3605 adrp x6, :got:p_data_block_list_table
3610 ldr x6, [x6, #:got_lo12:p_data_block_list_table]
3652 .size List_remove_node, .-List_remove_node
3654 .global List_pop_index_node
3655 .type List_pop_index_node, %function
3656 List_pop_index_node:
3657 stp x29, x30, [sp, -32]!
3664 adrp x3, :got:p_data_block_list_table
3667 ldr x3, [x3, #:got_lo12:p_data_block_list_table]
3673 mov x1, -6148914691236517206
3692 ldp x29, x30, [sp], 32
3694 .size List_pop_index_node, .-List_pop_index_node
3696 .global List_pop_head_node
3697 .type List_pop_head_node, %function
3699 stp x29, x30, [sp, -16]!
3702 bl List_pop_index_node
3703 ldp x29, x30, [sp], 16
3705 .size List_pop_head_node, .-List_pop_head_node
3707 .global List_get_gc_head_node
3708 .type List_get_gc_head_node, %function
3709 List_get_gc_head_node:
3711 adrp x0, :got:p_data_block_list_head
3712 ldr x0, [x0, #:got_lo12:p_data_block_list_head]
3716 adrp x0, :got:p_data_block_list_table
3719 ldr x0, [x0, #:got_lo12:p_data_block_list_table]
3725 mov x0, -6148914691236517206
3741 .size List_get_gc_head_node, .-List_get_gc_head_node
3743 .global List_update_data_list
3744 .type List_update_data_list, %function
3745 List_update_data_list:
3746 stp x29, x30, [sp, -32]!
3750 adrp x0, :got:g_active_superblock
3751 ldr x0, [x0, #:got_lo12:g_active_superblock]
3755 adrp x0, :got:g_buffer_superblock
3756 ldr x0, [x0, #:got_lo12:g_buffer_superblock]
3760 adrp x0, :got:g_gc_temp_superblock
3761 ldr x0, [x0, #:got_lo12:g_gc_temp_superblock]
3765 adrp x0, :got:p_data_block_list_table
3768 ldr x0, [x0, #:got_lo12:p_data_block_list_table]
3770 adrp x0, :got:p_data_block_list_head
3772 ldr x0, [x0, #:got_lo12:p_data_block_list_head]
3776 adrp x1, :got:p_valid_page_count_table
3778 ldr x1, [x1, #:got_lo12:p_valid_page_count_table]
3780 ubfiz x1, x19, 1, 16
3784 mov x4, -6148914691236517206
3786 csinv w2, w2, wzr, ne
3792 ldrh w1, [x6,x1,lsl 1]
3795 csinv w1, w1, wzr, ne
3800 adrp x0, :got:g_num_data_superblocks
3801 ldr x0, [x0, #:got_lo12:g_num_data_superblocks]
3810 ldp x29, x30, [sp], 32
3812 .size List_update_data_list, .-List_update_data_list
3814 .global ftl_map_blk_alloc_new_blk
3815 .type ftl_map_blk_alloc_new_blk, %function
3816 ftl_map_blk_alloc_new_blk:
3817 stp x29, x30, [sp, -48]!
3819 stp x19, x20, [sp,16]
3820 stp x21, x22, [sp,32]
3831 bl FtlFreeSysBlkQueueOut
3850 ldp x19, x20, [sp,16]
3851 ldp x21, x22, [sp,32]
3852 ldp x29, x30, [sp], 48
3854 .size ftl_map_blk_alloc_new_blk, .-ftl_map_blk_alloc_new_blk
3856 .global select_l2p_ram_region
3857 .type select_l2p_ram_region, %function
3858 select_l2p_ram_region:
3859 adrp x0, :got:c_ftl_nand_l2pmap_ram_region_num
3862 ldr x0, [x0, #:got_lo12:c_ftl_nand_l2pmap_ram_region_num]
3864 adrp x0, :got:p_l2p_ram_map
3865 ldr x0, [x0, #:got_lo12:p_l2p_ram_map]
3872 add x5, x1, x3, lsl 4
3885 add x4, x1, x3, lsl 4
3901 adrp x0, :got:g_l2p_last_update_region_id
3905 ldr x0, [x0, #:got_lo12:g_l2p_last_update_region_id]
3926 .size select_l2p_ram_region, .-select_l2p_ram_region
3928 .global FtlUpdateVaildLpn
3929 .type FtlUpdateVaildLpn, %function
3931 adrp x1, :got:FtlUpdateVaildLpnCount
3932 ldr x3, [x1, #:got_lo12:FtlUpdateVaildLpnCount]
3941 ldr x1, [x1, #:got_lo12:FtlUpdateVaildLpnCount]
3944 adrp x1, :got:g_VaildLpn
3945 ldr x0, [x1, #:got_lo12:g_VaildLpn]
3947 adrp x0, :got:c_ftl_nand_data_blks_per_plane
3948 ldr x0, [x0, #:got_lo12:c_ftl_nand_data_blks_per_plane]
3950 adrp x0, :got:p_valid_page_count_table
3951 ldr x0, [x0, #:got_lo12:p_valid_page_count_table]
3957 ldrh w4, [x6,x0,lsl 1]
3960 ldr x3, [x1, #:got_lo12:g_VaildLpn]
3969 .size FtlUpdateVaildLpn, .-FtlUpdateVaildLpn
3971 .global ftl_sb_update_avl_pages
3972 .type ftl_sb_update_avl_pages, %function
3973 ftl_sb_update_avl_pages:
3974 adrp x3, :got:c_ftl_nand_planes_num
3979 ldr x3, [x3, #:got_lo12:c_ftl_nand_planes_num]
3984 add x4, x0, x2, sxtw 1
3996 adrp x2, :got:c_ftl_nand_page_pre_blk
3999 add x3, x0, x3, uxth 1
4000 ldr x2, [x2, #:got_lo12:c_ftl_nand_page_pre_blk]
4018 .size ftl_sb_update_avl_pages, .-ftl_sb_update_avl_pages
4020 .global make_superblock
4021 .type make_superblock, %function
4023 stp x29, x30, [sp, -80]!
4025 stp x19, x20, [sp,16]
4026 stp x23, x24, [sp,48]
4027 stp x21, x22, [sp,32]
4033 adrp x22, :got:c_ftl_nand_planes_num
4034 adrp x24, :got:p_plane_order_table
4037 ldr x0, [x22, #:got_lo12:c_ftl_nand_planes_num]
4041 ldr x0, [x24, #:got_lo12:p_plane_order_table]
4042 add x21, x19, x20, uxth 1
4044 ldrb w0, [x0,w20,sxtw]
4059 adrp x1, :got:c_ftl_nand_page_pre_blk
4061 ldr x1, [x1, #:got_lo12:c_ftl_nand_page_pre_blk]
4066 adrp x0, :got:g_inkDie_check_enable
4067 ldr x0, [x0, #:got_lo12:g_inkDie_check_enable]
4070 adrp x0, :got:p_erase_count_table
4072 ldr x0, [x0, #:got_lo12:p_erase_count_table]
4074 ldrh w0, [x0,x1,lsl 1]
4082 ldp x19, x20, [sp,16]
4083 ldp x21, x22, [sp,32]
4084 ldp x23, x24, [sp,48]
4085 ldp x29, x30, [sp], 80
4087 .size make_superblock, .-make_superblock
4089 .global update_multiplier_value
4090 .type update_multiplier_value, %function
4091 update_multiplier_value:
4092 stp x29, x30, [sp, -64]!
4094 stp x19, x20, [sp,16]
4097 stp x21, x22, [sp,32]
4098 stp x23, x24, [sp,48]
4100 adrp x22, :got:c_ftl_nand_planes_num
4101 adrp x23, :got:p_plane_order_table
4102 adrp x24, :got:c_ftl_nand_page_pre_blk
4104 ldr x0, [x22, #:got_lo12:c_ftl_nand_planes_num]
4108 ldr x0, [x23, #:got_lo12:p_plane_order_table]
4110 ldrb w0, [x0,w21,sxtw]
4114 ldr x0, [x24, #:got_lo12:c_ftl_nand_page_pre_blk]
4129 adrp x0, :got:p_data_block_list_table
4130 ldr x0, [x0, #:got_lo12:p_data_block_list_table]
4135 ldp x19, x20, [sp,16]
4136 ldp x21, x22, [sp,32]
4137 ldp x23, x24, [sp,48]
4138 ldp x29, x30, [sp], 64
4140 .size update_multiplier_value, .-update_multiplier_value
4142 .global GetFreeBlockMinEraseCount
4143 .type GetFreeBlockMinEraseCount, %function
4144 GetFreeBlockMinEraseCount:
4145 adrp x0, :got:p_free_data_block_list_head
4146 ldr x0, [x0, #:got_lo12:p_free_data_block_list_head]
4150 adrp x0, :got:p_data_block_list_table
4151 ldr x0, [x0, #:got_lo12:p_data_block_list_table]
4154 mov x0, -6148914691236517206
4157 adrp x0, :got:p_erase_count_table
4159 ldr x0, [x0, #:got_lo12:p_erase_count_table]
4161 ldrh w0, [x0,x1,lsl 1]
4164 .size GetFreeBlockMinEraseCount, .-GetFreeBlockMinEraseCount
4166 .global GetFreeBlockMaxEraseCount
4167 .type GetFreeBlockMaxEraseCount, %function
4168 GetFreeBlockMaxEraseCount:
4169 adrp x0, :got:p_free_data_block_list_head
4170 ldr x0, [x0, #:got_lo12:p_free_data_block_list_head]
4174 adrp x0, :got:g_num_free_superblocks
4178 ldr x0, [x0, #:got_lo12:g_num_free_superblocks]
4181 adrp x0, :got:p_data_block_list_table
4183 ldr x0, [x0, #:got_lo12:p_data_block_list_table]
4186 mov x1, -6148914691236517206
4199 adrp x1, :got:p_erase_count_table
4201 ldr x1, [x1, #:got_lo12:p_erase_count_table]
4212 .size GetFreeBlockMaxEraseCount, .-GetFreeBlockMaxEraseCount
4214 .global FtlPrintInfo2buf
4215 .type FtlPrintInfo2buf, %function
4217 stp x29, x30, [sp, -128]!
4220 add x1, x1, :lo12:.LC2
4221 stp x19, x20, [sp,16]
4222 stp x21, x22, [sp,32]
4223 stp x23, x24, [sp,48]
4225 stp x25, x26, [sp,64]
4226 stp x27, x28, [sp,80]
4229 adrp x2, :got:gNandPhyInfo
4232 add x1, x1, :lo12:.LC3
4233 ldr x2, [x2, #:got_lo12:gNandPhyInfo]
4236 add x20, x20, x0, sxtw
4237 adrp x2, :got:DeviceCapacity
4240 add x1, x1, :lo12:.LC4
4241 ldr x2, [x2, #:got_lo12:DeviceCapacity]
4244 add x20, x20, x0, sxtw
4245 adrp x0, :got:gFtlInitStatus
4246 ldr x0, [x0, #:got_lo12:gFtlInitStatus]
4257 adrp x19, :got:gBbtInfo
4258 adrp x23, :got:p_valid_page_count_table
4260 adrp x25, :got:g_sys_ext_data
4266 add x1, x1, :lo12:.LC5
4269 add x21, x20, x0, sxtw
4272 add x1, x1, :lo12:.LC6
4274 adrp x20, :got:g_sys_save_data
4276 adrp x2, :got:g_MaxLpn
4279 add x1, x1, :lo12:.LC7
4280 ldr x2, [x2, #:got_lo12:g_MaxLpn]
4283 add x21, x21, x0, sxtw
4284 adrp x2, :got:g_VaildLpn
4287 add x1, x1, :lo12:.LC8
4288 ldr x2, [x2, #:got_lo12:g_VaildLpn]
4291 add x21, x21, x0, sxtw
4292 adrp x2, :got:g_totle_read_page_count
4295 add x1, x1, :lo12:.LC9
4296 ldr x2, [x2, #:got_lo12:g_totle_read_page_count]
4299 add x21, x21, x0, sxtw
4300 adrp x2, :got:g_totle_discard_page_count
4303 add x1, x1, :lo12:.LC10
4304 ldr x2, [x2, #:got_lo12:g_totle_discard_page_count]
4307 add x21, x21, x0, sxtw
4308 adrp x2, :got:g_totle_write_page_count
4311 add x1, x1, :lo12:.LC11
4312 ldr x2, [x2, #:got_lo12:g_totle_write_page_count]
4315 add x21, x21, x0, sxtw
4316 adrp x2, :got:g_totle_cache_write_count
4319 add x1, x1, :lo12:.LC12
4320 ldr x2, [x2, #:got_lo12:g_totle_cache_write_count]
4323 add x21, x21, x0, sxtw
4324 adrp x2, :got:g_totle_l2p_write_count
4327 add x1, x1, :lo12:.LC13
4328 ldr x2, [x2, #:got_lo12:g_totle_l2p_write_count]
4331 add x21, x21, x0, sxtw
4332 adrp x2, :got:g_totle_gc_page_count
4335 add x1, x1, :lo12:.LC14
4336 ldr x2, [x2, #:got_lo12:g_totle_gc_page_count]
4339 add x21, x21, x0, sxtw
4340 adrp x0, :got:g_totle_write_sector
4342 add x1, x1, :lo12:.LC15
4343 ldr x0, [x0, #:got_lo12:g_totle_write_sector]
4348 add x21, x21, x0, sxtw
4349 adrp x0, :got:g_totle_read_sector
4351 add x1, x1, :lo12:.LC16
4352 ldr x0, [x0, #:got_lo12:g_totle_read_sector]
4357 add x21, x21, x0, sxtw
4358 adrp x2, :got:g_GlobalSysVersion
4361 add x1, x1, :lo12:.LC17
4362 ldr x2, [x2, #:got_lo12:g_GlobalSysVersion]
4365 add x21, x21, x0, sxtw
4366 adrp x2, :got:g_GlobalDataVersion
4368 add x1, x1, :lo12:.LC18
4370 ldr x2, [x2, #:got_lo12:g_GlobalDataVersion]
4373 ldr x19, [x19, #:got_lo12:gBbtInfo]
4374 add x21, x21, x0, sxtw
4377 bl FtlBbtCalcTotleCnt
4382 add x1, x1, :lo12:.LC19
4384 add x21, x21, x0, sxtw
4385 adrp x2, :got:g_num_free_superblocks
4388 add x1, x1, :lo12:.LC20
4389 ldr x2, [x2, #:got_lo12:g_num_free_superblocks]
4392 add x21, x21, x0, sxtw
4393 adrp x2, :got:g_totle_mlc_erase_count
4396 add x1, x1, :lo12:.LC21
4397 ldr x2, [x2, #:got_lo12:g_totle_mlc_erase_count]
4400 add x21, x21, x0, sxtw
4401 adrp x2, :got:g_totle_slc_erase_count
4404 add x1, x1, :lo12:.LC22
4405 ldr x2, [x2, #:got_lo12:g_totle_slc_erase_count]
4408 add x21, x21, x0, sxtw
4409 adrp x2, :got:g_totle_avg_erase_count
4412 add x1, x1, :lo12:.LC23
4413 ldr x2, [x2, #:got_lo12:g_totle_avg_erase_count]
4416 add x21, x21, x0, sxtw
4417 adrp x2, :got:g_totle_sys_slc_erase_count
4420 add x1, x1, :lo12:.LC24
4421 ldr x2, [x2, #:got_lo12:g_totle_sys_slc_erase_count]
4424 add x21, x21, x0, sxtw
4425 adrp x2, :got:g_max_erase_count
4428 add x1, x1, :lo12:.LC25
4429 ldr x2, [x2, #:got_lo12:g_max_erase_count]
4432 add x21, x21, x0, sxtw
4433 adrp x2, :got:g_min_erase_count
4436 add x1, x1, :lo12:.LC26
4437 ldr x2, [x2, #:got_lo12:g_min_erase_count]
4440 ldr x20, [x20, #:got_lo12:g_sys_save_data]
4442 add x21, x21, x0, sxtw
4443 add x1, x1, :lo12:.LC27
4447 add x21, x21, x0, sxtw
4451 add x1, x1, :lo12:.LC28
4452 adrp x20, :got:g_gc_superblock
4454 add x21, x21, x0, sxtw
4455 adrp x2, :got:g_MaxLbaSector
4458 add x1, x1, :lo12:.LC29
4459 ldr x2, [x2, #:got_lo12:g_MaxLbaSector]
4462 add x21, x21, x0, sxtw
4463 adrp x2, :got:c_ftl_nand_init_sys_blks_per_plane
4466 add x1, x1, :lo12:.LC30
4467 ldr x2, [x2, #:got_lo12:c_ftl_nand_init_sys_blks_per_plane]
4470 add x21, x21, x0, sxtw
4471 adrp x2, :got:c_ftl_nand_sys_blks_per_plane
4474 add x1, x1, :lo12:.LC31
4475 ldr x2, [x2, #:got_lo12:c_ftl_nand_sys_blks_per_plane]
4478 add x21, x21, x0, sxtw
4479 adrp x2, :got:gSysFreeQueue
4482 add x1, x1, :lo12:.LC32
4483 ldr x2, [x2, #:got_lo12:gSysFreeQueue]
4486 add x21, x21, x0, sxtw
4487 adrp x2, :got:c_ftl_nand_data_blks_per_plane
4490 add x1, x1, :lo12:.LC33
4491 ldr x2, [x2, #:got_lo12:c_ftl_nand_data_blks_per_plane]
4494 add x21, x21, x0, sxtw
4495 adrp x2, :got:c_ftl_nand_data_op_blks_per_plane
4498 add x1, x1, :lo12:.LC34
4499 ldr x2, [x2, #:got_lo12:c_ftl_nand_data_op_blks_per_plane]
4502 add x21, x21, x0, sxtw
4503 adrp x2, :got:c_ftl_nand_max_data_blks
4506 add x1, x1, :lo12:.LC35
4507 ldr x2, [x2, #:got_lo12:c_ftl_nand_max_data_blks]
4510 add x21, x21, x0, sxtw
4511 adrp x2, :got:gSysInfo
4514 add x1, x1, :lo12:.LC36
4515 ldr x2, [x2, #:got_lo12:gSysInfo]
4518 add x21, x21, x0, sxtw
4521 adrp x19, :got:g_active_superblock
4523 add x1, x1, :lo12:.LC37
4525 ldr x19, [x19, #:got_lo12:g_active_superblock]
4527 add x21, x21, x0, sxtw
4528 add x1, x1, :lo12:.LC38
4532 add x21, x21, x0, sxtw
4536 add x1, x1, :lo12:.LC39
4538 add x21, x21, x0, sxtw
4542 add x1, x1, :lo12:.LC40
4544 add x21, x21, x0, sxtw
4548 add x1, x1, :lo12:.LC41
4550 add x21, x21, x0, sxtw
4554 add x1, x1, :lo12:.LC42
4556 ldr x24, [x23, #:got_lo12:p_valid_page_count_table]
4559 adrp x19, :got:g_buffer_superblock
4560 add x21, x21, x0, sxtw
4563 add x1, x1, :lo12:.LC43
4564 ldrh w2, [x2,x3,lsl 1]
4566 ldr x19, [x19, #:got_lo12:g_buffer_superblock]
4568 add x21, x21, x0, sxtw
4569 add x1, x1, :lo12:.LC44
4573 add x21, x21, x0, sxtw
4577 add x1, x1, :lo12:.LC45
4579 add x21, x21, x0, sxtw
4583 add x1, x1, :lo12:.LC46
4585 add x21, x21, x0, sxtw
4589 add x1, x1, :lo12:.LC47
4591 add x21, x21, x0, sxtw
4595 add x1, x1, :lo12:.LC48
4597 add x21, x21, x0, sxtw
4601 adrp x19, :got:g_gc_temp_superblock
4603 add x1, x1, :lo12:.LC49
4604 ldrh w2, [x2,x3,lsl 1]
4606 ldr x19, [x19, #:got_lo12:g_gc_temp_superblock]
4608 add x21, x21, x0, sxtw
4609 add x1, x1, :lo12:.LC50
4613 add x21, x21, x0, sxtw
4617 add x1, x1, :lo12:.LC51
4619 add x21, x21, x0, sxtw
4623 add x1, x1, :lo12:.LC52
4625 add x21, x21, x0, sxtw
4629 add x1, x1, :lo12:.LC53
4631 add x21, x21, x0, sxtw
4635 add x1, x1, :lo12:.LC54
4637 ldr x20, [x20, #:got_lo12:g_gc_superblock]
4639 add x21, x21, x0, sxtw
4640 add x1, x1, :lo12:.LC55
4644 add x21, x21, x0, sxtw
4648 add x1, x1, :lo12:.LC56
4650 add x21, x21, x0, sxtw
4654 add x1, x1, :lo12:.LC57
4656 add x21, x21, x0, sxtw
4660 add x1, x1, :lo12:.LC58
4662 add x21, x21, x0, sxtw
4666 add x1, x1, :lo12:.LC59
4668 add x21, x21, x0, sxtw
4669 adrp x0, :got:g_all_blk_used_slc_mode
4670 ldr x25, [x25, #:got_lo12:g_sys_ext_data]
4672 add x1, x1, :lo12:.LC60
4673 ldr x0, [x0, #:got_lo12:g_all_blk_used_slc_mode]
4677 adrp x0, :got:g_inkDie_check_enable
4678 ldr x0, [x0, #:got_lo12:g_inkDie_check_enable]
4681 orr w2, w2, w3, lsl 8
4684 add x19, x21, x0, sxtw
4688 add x1, x1, :lo12:.LC61
4690 add x19, x19, x0, sxtw
4694 add x1, x1, :lo12:.LC62
4696 add x19, x19, x0, sxtw
4697 adrp x2, :got:g_gc_free_blk_threshold
4700 add x1, x1, :lo12:.LC63
4701 ldr x2, [x2, #:got_lo12:g_gc_free_blk_threshold]
4704 add x19, x19, x0, sxtw
4705 adrp x2, :got:g_gc_merge_free_blk_threshold
4708 add x1, x1, :lo12:.LC64
4709 ldr x2, [x2, #:got_lo12:g_gc_merge_free_blk_threshold]
4712 add x19, x19, x0, sxtw
4713 adrp x2, :got:g_gc_skip_write_count
4716 add x1, x1, :lo12:.LC65
4717 ldr x2, [x2, #:got_lo12:g_gc_skip_write_count]
4720 add x19, x19, x0, sxtw
4721 adrp x2, :got:g_gc_blk_index
4723 add x1, x1, :lo12:.LC66
4725 ldr x2, [x2, #:got_lo12:g_gc_blk_index]
4728 add x19, x19, x0, sxtw
4729 bl GetFreeBlockMinEraseCount
4733 add x1, x1, :lo12:.LC67
4735 add x19, x19, x0, sxtw
4736 bl GetFreeBlockMaxEraseCount
4740 add x1, x1, :lo12:.LC68
4742 add x19, x19, x0, sxtw
4751 add x1, x1, :lo12:.LC69
4754 add x19, x19, x0, sxtw
4759 adrp x28, :got:p_data_block_list_table
4760 bl List_get_gc_head_node
4761 add x24, x24, :lo12:.LC70
4765 adrp x27, :got:p_erase_count_table
4769 adrp x21, :got:p_data_block_list_table
4771 ldr x0, [x23, #:got_lo12:p_valid_page_count_table]
4773 ldr x26, [x28, #:got_lo12:p_data_block_list_table]
4778 ldr x0, [x27, #:got_lo12:p_erase_count_table]
4789 add x19, x19, x0, sxtw
4797 adrp x0, :got:p_free_data_block_list_head
4798 ldr x1, [x21, #:got_lo12:p_data_block_list_table]
4803 ldr x0, [x0, #:got_lo12:p_free_data_block_list_head]
4804 add x23, x23, :lo12:.LC71
4806 adrp x26, :got:p_erase_count_table
4809 mov x0, -6148914691236517206
4816 ldr x25, [x21, #:got_lo12:p_data_block_list_table]
4818 ldr x0, [x26, #:got_lo12:p_erase_count_table]
4830 add x19, x19, x0, sxtw
4838 ldp x19, x20, [sp,16]
4839 ldp x21, x22, [sp,32]
4840 ldp x23, x24, [sp,48]
4841 ldp x25, x26, [sp,64]
4842 ldp x27, x28, [sp,80]
4843 ldp x29, x30, [sp], 128
4845 .size FtlPrintInfo2buf, .-FtlPrintInfo2buf
4847 .global rknand_proc_ftlread
4848 .type rknand_proc_ftlread, %function
4849 rknand_proc_ftlread:
4850 stp x29, x30, [sp, -32]!
4854 add x1, x1, :lo12:.LC72
4855 add x2, x2, :lo12:.LC73
4856 stp x19, x20, [sp,16]
4859 add x19, x20, x0, sxtw
4862 add x0, x19, x0, sxtw
4864 ldp x19, x20, [sp,16]
4865 ldp x29, x30, [sp], 32
4867 .size rknand_proc_ftlread, .-rknand_proc_ftlread
4869 .global GetSwlReplaceBlock
4870 .type GetSwlReplaceBlock, %function
4872 adrp x1, :got:g_totle_avg_erase_count
4873 adrp x2, :got:g_min_erase_count
4874 stp x29, x30, [sp, -80]!
4876 ldr x0, [x1, #:got_lo12:g_totle_avg_erase_count]
4877 stp x23, x24, [sp,48]
4878 stp x25, x26, [sp,64]
4879 stp x19, x20, [sp,16]
4880 stp x21, x22, [sp,32]
4884 ldr x0, [x2, #:got_lo12:g_min_erase_count]
4888 adrp x0, :got:g_totle_mlc_erase_count
4889 adrp x2, :got:p_erase_count_table
4890 ldr x1, [x0, #:got_lo12:g_totle_mlc_erase_count]
4892 adrp x1, :got:c_ftl_nand_data_blks_per_plane
4893 ldr x2, [x2, #:got_lo12:p_erase_count_table]
4894 ldr x1, [x1, #:got_lo12:c_ftl_nand_data_blks_per_plane]
4901 ldr x4, [x0, #:got_lo12:g_totle_mlc_erase_count]
4902 ldrh w6, [x5,x2,lsl 1]
4909 ldr x0, [x0, #:got_lo12:g_totle_mlc_erase_count]
4910 ldr x2, [x24, #:got_lo12:g_totle_avg_erase_count]
4914 adrp x1, :got:g_totle_slc_erase_count
4915 ldr x1, [x1, #:got_lo12:g_totle_slc_erase_count]
4918 adrp x1, :got:c_mlc_erase_count_value
4919 ldr x1, [x1, #:got_lo12:c_mlc_erase_count_value]
4925 adrp x0, :got:g_max_erase_count
4926 ldr x0, [x0, #:got_lo12:g_max_erase_count]
4931 adrp x4, :got:c_ftl_nand_data_blks_per_plane
4933 adrp x5, :got:p_erase_count_table
4936 ldr x1, [x4, #:got_lo12:c_ftl_nand_data_blks_per_plane]
4940 ldr x1, [x5, #:got_lo12:p_erase_count_table]
4949 ldr x0, [x25, #:got_lo12:g_min_erase_count]
4950 ldr x1, [x24, #:got_lo12:g_totle_avg_erase_count]
4956 adrp x2, :got:g_max_erase_count
4958 ldr x2, [x2, #:got_lo12:g_max_erase_count]
4962 adrp x1, :got:g_inkDie_check_enable
4963 ldr x1, [x1, #:got_lo12:g_inkDie_check_enable]
4972 bl GetFreeBlockMaxEraseCount
4974 ldr x0, [x25, #:got_lo12:g_min_erase_count]
4982 adrp x0, :got:p_data_block_list_head
4983 ldr x0, [x0, #:got_lo12:p_data_block_list_head]
4986 adrp x0, :got:p_data_block_list_table
4987 adrp x21, :got:p_erase_count_table
4989 mov x5, -6148914691236517206
4992 ldr x0, [x0, #:got_lo12:p_data_block_list_table]
4996 ldr x0, [x21, #:got_lo12:p_erase_count_table]
5009 ldrh w0, [x6,x3,lsl 1]
5026 ubfiz x23, x19, 1, 16
5030 bl GetFreeBlockMinEraseCount
5031 ldr x2, [x25, #:got_lo12:g_min_erase_count]
5039 adrp x1, :got:g_inkDie_check_enable
5040 ldr x1, [x1, #:got_lo12:g_inkDie_check_enable]
5043 ldr x0, [x24, #:got_lo12:g_totle_avg_erase_count]
5048 adrp x1, :got:c_mlc_erase_count_value
5049 ldr x1, [x1, #:got_lo12:c_mlc_erase_count_value]
5054 adrp x1, :got:g_num_data_superblocks
5055 ldr x1, [x1, #:got_lo12:g_num_data_superblocks]
5059 ldr x21, [x21, #:got_lo12:p_erase_count_table]
5062 add x0, x0, :lo12:.LC74
5068 ldr x1, [x24, #:got_lo12:g_totle_avg_erase_count]
5077 adrp x0, :got:g_max_erase_count
5079 ldr x1, [x0, #:got_lo12:g_max_erase_count]
5085 ldr x3, [x0, #:got_lo12:g_max_erase_count]
5086 adrp x0, :got:p_valid_page_count_table
5087 ldr x21, [x21, #:got_lo12:p_erase_count_table]
5089 ldr x0, [x0, #:got_lo12:p_valid_page_count_table]
5095 add x0, x0, :lo12:.LC75
5099 adrp x0, :got:g_in_swl_replace
5101 ldr x0, [x0, #:got_lo12:g_in_swl_replace]
5105 ldp x19, x20, [sp,16]
5106 ldp x21, x22, [sp,32]
5107 ldp x23, x24, [sp,48]
5108 ldp x25, x26, [sp,64]
5109 ldp x29, x30, [sp], 80
5111 .size GetSwlReplaceBlock, .-GetSwlReplaceBlock
5113 .global free_data_superblock
5114 .type free_data_superblock, %function
5115 free_data_superblock:
5116 stp x29, x30, [sp, -16]!
5122 adrp x1, :got:p_valid_page_count_table
5124 ldr x1, [x1, #:got_lo12:p_valid_page_count_table]
5130 ldp x29, x30, [sp], 16
5132 .size free_data_superblock, .-free_data_superblock
5134 .global FtlGcBufInit
5135 .type FtlGcBufInit, %function
5137 adrp x0, :got:g_gc_num_req
5139 adrp x6, :got:c_ftl_nand_planes_num
5141 adrp x8, :got:gp_gc_page_buf_info
5143 ldr x0, [x0, #:got_lo12:g_gc_num_req]
5144 adrp x10, :got:c_ftl_nand_byte_pre_page
5146 adrp x11, :got:p_gc_data_buf
5147 adrp x12, :got:c_ftl_nand_byte_pre_oob
5148 adrp x13, :got:p_gc_spare_buf
5150 adrp x14, :got:req_gc
5153 ldr x0, [x6, #:got_lo12:c_ftl_nand_planes_num]
5157 ldr x4, [x8, #:got_lo12:gp_gc_page_buf_info]
5162 ldr x0, [x10, #:got_lo12:c_ftl_nand_byte_pre_page]
5163 ldr x16, [x11, #:got_lo12:p_gc_data_buf]
5168 add x0, x16, x0, sxtw 2
5170 ldr x0, [x12, #:got_lo12:c_ftl_nand_byte_pre_oob]
5172 ldr x16, [x13, #:got_lo12:p_gc_spare_buf]
5178 add x0, x16, x0, sxtw 2
5181 ldr x16, [x14, #:got_lo12:req_gc]
5192 adrp x6, :got:c_gc_page_buf_num
5194 adrp x8, :got:gp_gc_page_buf_info
5195 adrp x9, :got:c_ftl_nand_byte_pre_page
5197 adrp x10, :got:p_gc_data_buf
5198 adrp x11, :got:c_ftl_nand_byte_pre_oob
5199 adrp x12, :got:p_gc_spare_buf
5201 ldr x1, [x6, #:got_lo12:c_gc_page_buf_num]
5205 ldr x4, [x8, #:got_lo12:gp_gc_page_buf_info]
5210 ldr x1, [x9, #:got_lo12:c_ftl_nand_byte_pre_page]
5211 ldr x13, [x10, #:got_lo12:p_gc_data_buf]
5216 add x1, x13, x1, sxtw 2
5218 ldr x1, [x11, #:got_lo12:c_ftl_nand_byte_pre_oob]
5222 ldr x4, [x12, #:got_lo12:p_gc_spare_buf]
5228 add x1, x4, x1, sxtw 2
5233 .size FtlGcBufInit, .-FtlGcBufInit
5235 .global FtlGcBufFree
5236 .type FtlGcBufFree, %function
5238 adrp x2, :got:c_gc_page_buf_num
5242 ldr x2, [x2, #:got_lo12:c_gc_page_buf_num]
5244 adrp x2, :got:gp_gc_page_buf_info
5245 ldr x2, [x2, #:got_lo12:gp_gc_page_buf_info]
5274 .size FtlGcBufFree, .-FtlGcBufFree
5276 .global FtlGcBufAlloc
5277 .type FtlGcBufAlloc, %function
5279 adrp x2, :got:c_gc_page_buf_num
5283 ldr x2, [x2, #:got_lo12:c_gc_page_buf_num]
5285 adrp x2, :got:gp_gc_page_buf_info
5286 ldr x2, [x2, #:got_lo12:gp_gc_page_buf_info]
5318 .size FtlGcBufAlloc, .-FtlGcBufAlloc
5320 .global IsBlkInGcList
5321 .type IsBlkInGcList, %function
5323 adrp x1, :got:g_gc_blk_num
5325 ldr x1, [x1, #:got_lo12:g_gc_blk_num]
5327 adrp x1, :got:p_gc_blk_tbl
5328 ldr x1, [x1, #:got_lo12:p_gc_blk_tbl]
5335 add x4, x3, x1, lsl 1
5345 .size IsBlkInGcList, .-IsBlkInGcList
5347 .global FtlGcUpdatePage
5348 .type FtlGcUpdatePage, %function
5350 stp x29, x30, [sp, -48]!
5357 bl P2V_block_in_plane
5358 adrp x3, :got:g_gc_blk_num
5363 ldr x4, [x3, #:got_lo12:g_gc_blk_num]
5365 adrp x4, :got:p_gc_blk_tbl
5366 ldr x4, [x4, #:got_lo12:p_gc_blk_tbl]
5373 add x9, x6, x5, lsl 1
5382 ldr x3, [x3, #:got_lo12:g_gc_blk_num]
5387 adrp x3, :got:g_gc_page_offset
5388 adrp x5, :got:p_gc_page_info
5390 ldr x3, [x3, #:got_lo12:g_gc_page_offset]
5391 ldr x5, [x5, #:got_lo12:p_gc_page_info]
5405 ldp x29, x30, [sp], 48
5407 .size FtlGcUpdatePage, .-FtlGcUpdatePage
5409 .global FtlGcRefreshBlock
5410 .type FtlGcRefreshBlock, %function
5412 stp x29, x30, [sp, -32]!
5418 add x0, x0, :lo12:.LC76
5420 adrp x2, :got:g_gc_next_blk
5422 ldr x2, [x2, #:got_lo12:g_gc_next_blk]
5426 adrp x2, :got:g_gc_next_blk_1
5427 ldr x2, [x2, #:got_lo12:g_gc_next_blk_1]
5436 ldp x29, x30, [sp], 32
5438 .size FtlGcRefreshBlock, .-FtlGcRefreshBlock
5440 .global FtlGcMarkBadPhyBlk
5441 .type FtlGcMarkBadPhyBlk, %function
5443 stp x29, x30, [sp, -48]!
5445 stp x19, x20, [sp,16]
5447 adrp x19, :got:g_gc_bad_block_temp_num
5449 stp x21, x22, [sp,32]
5450 bl P2V_block_in_plane
5452 ldr x1, [x19, #:got_lo12:g_gc_bad_block_temp_num]
5455 add x0, x0, :lo12:.LC77
5459 bl FtlGcRefreshBlock
5460 adrp x0, :got:g_inkDie_check_enable
5461 ldr x0, [x0, #:got_lo12:g_inkDie_check_enable]
5464 adrp x1, :got:p_erase_count_table
5465 ubfiz x0, x21, 1, 16
5466 ldr x1, [x1, #:got_lo12:p_erase_count_table]
5474 ldr x0, [x19, #:got_lo12:g_gc_bad_block_temp_num]
5475 adrp x3, :got:g_gc_bad_block_temp_tbl
5482 ldr x2, [x3, #:got_lo12:g_gc_bad_block_temp_tbl]
5483 add x2, x2, x0, lsl 1
5491 ldr x19, [x19, #:got_lo12:g_gc_bad_block_temp_num]
5494 adrp x0, :got:g_gc_bad_block_temp_tbl
5495 ldr x0, [x0, #:got_lo12:g_gc_bad_block_temp_tbl]
5496 strh w20, [x0,w1,sxtw 1]
5499 ldp x19, x20, [sp,16]
5500 ldp x21, x22, [sp,32]
5501 ldp x29, x30, [sp], 48
5503 .size FtlGcMarkBadPhyBlk, .-FtlGcMarkBadPhyBlk
5505 .global FtlGcReFreshBadBlk
5506 .type FtlGcReFreshBadBlk, %function
5508 adrp x0, :got:g_gc_bad_block_temp_num
5509 stp x29, x30, [sp, -32]!
5511 ldr x0, [x0, #:got_lo12:g_gc_bad_block_temp_num]
5515 adrp x0, :got:g_gc_next_blk
5516 ldr x0, [x0, #:got_lo12:g_gc_next_blk]
5521 adrp x19, :got:g_gc_bad_block_gc_index
5522 ldr x0, [x19, #:got_lo12:g_gc_bad_block_gc_index]
5528 ldr x19, [x19, #:got_lo12:g_gc_bad_block_gc_index]
5529 adrp x0, :got:g_gc_bad_block_temp_tbl
5531 ldr x0, [x0, #:got_lo12:g_gc_bad_block_temp_tbl]
5532 ldrh w0, [x0,w1,sxtw 1]
5533 bl P2V_block_in_plane
5534 bl FtlGcRefreshBlock
5541 ldp x29, x30, [sp], 32
5543 .size FtlGcReFreshBadBlk, .-FtlGcReFreshBadBlk
5546 .type ftl_malloc, %function
5548 stp x29, x30, [sp, -16]!
5552 movk w1, 0x240, lsl 16
5554 ldp x29, x30, [sp], 16
5556 .size ftl_malloc, .-ftl_malloc
5559 .type NandcInit, %function
5561 adrp x4, :got:gpNandc1
5562 adrp x1, :got:RK29_NANDC1_REG_BASE
5563 stp x29, x30, [sp, -32]!
5565 ldr x3, [x4, #:got_lo12:gpNandc1]
5566 stp x19, x20, [sp,16]
5569 ldr x1, [x1, #:got_lo12:RK29_NANDC1_REG_BASE]
5571 adrp x1, :got:gNandChipMap
5575 ldr x1, [x1, #:got_lo12:gNandChipMap]
5587 adrp x19, :got:gpNandc
5588 adrp x2, :got:gToggleModeClkDiv
5589 ldr x1, [x19, #:got_lo12:gpNandc]
5597 ldr x4, [x2, #:got_lo12:gToggleModeClkDiv]
5601 ldr x1, [x1, #:got_lo12:gNandChipMap]
5610 ldr x3, [x2, #:got_lo12:gToggleModeClkDiv]
5614 ldr x2, [x2, #:got_lo12:gToggleModeClkDiv]
5620 adrp x2, :got:gBootDdrMode
5624 ldr x2, [x2, #:got_lo12:gBootDdrMode]
5626 adrp x2, :got:gNandcVer
5628 ldr x2, [x2, #:got_lo12:gNandcVer]
5632 ldr x19, [x19, #:got_lo12:gpNandc]
5640 movk w2, 0x18, lsl 16
5645 ldr x0, [x20, #:got_lo12:gpNandc1]
5667 adrp x1, :got:gMasterTempBuf
5668 ldr x1, [x1, #:got_lo12:gMasterTempBuf]
5670 adrp x1, :got:gMasterInfo
5671 ldr x1, [x1, #:got_lo12:gMasterInfo]
5675 adrp x0, :got:gNandcDumpWriteEn
5677 ldr x0, [x0, #:got_lo12:gNandcDumpWriteEn]
5679 ldp x19, x20, [sp,16]
5680 ldp x29, x30, [sp], 32
5682 .size NandcInit, .-NandcInit
5685 .type ftl_free, %function
5687 stp x29, x30, [sp, -16]!
5690 ldp x29, x30, [sp], 16
5692 .size ftl_free, .-ftl_free
5695 .type ftl_memset, %function
5697 stp x29, x30, [sp, -16]!
5701 ldp x29, x30, [sp], 16
5703 .size ftl_memset, .-ftl_memset
5705 .global BuildFlashLsbPageTable
5706 .type BuildFlashLsbPageTable, %function
5707 BuildFlashLsbPageTable:
5708 stp x29, x30, [sp, -32]!
5710 stp x19, x20, [sp,16]
5714 adrp x2, :got:slcPageToMlcPageTbl
5716 ldr x1, [x2, #:got_lo12:slcPageToMlcPageTbl]
5717 strh w0, [x1,x0,lsl 1]
5722 adrp x20, :got:mlcPageToSlcPageTbl
5726 ldr x0, [x20, #:got_lo12:mlcPageToSlcPageTbl]
5729 adrp x2, :got:slcPageToMlcPageTbl
5737 adrp x3, :got:slcPageToMlcPageTbl
5750 ldr x1, [x3, #:got_lo12:slcPageToMlcPageTbl]
5751 strh w2, [x1,x0,lsl 1]
5761 adrp x4, :got:slcPageToMlcPageTbl
5763 ldr x3, [x4, #:got_lo12:slcPageToMlcPageTbl]
5768 strh w1, [x3,x0,lsl 1]
5780 adrp x4, :got:slcPageToMlcPageTbl
5793 ldr x1, [x4, #:got_lo12:slcPageToMlcPageTbl]
5794 strh w2, [x1,x0,lsl 1]
5802 adrp x2, :got:slcPageToMlcPageTbl
5806 ldr x2, [x2, #:got_lo12:slcPageToMlcPageTbl]
5840 adrp x4, :got:slcPageToMlcPageTbl
5846 add w0, w3, w3, lsl 1
5854 ldr x1, [x4, #:got_lo12:slcPageToMlcPageTbl]
5855 strh w0, [x1,x2,lsl 1]
5863 ldr x1, [x2, #:got_lo12:slcPageToMlcPageTbl]
5864 ldr x3, [x20, #:got_lo12:mlcPageToSlcPageTbl]
5865 ldrh w1, [x1,x0,lsl 1]
5867 strh w1, [x3,w1,sxtw 1]
5870 ldp x19, x20, [sp,16]
5871 ldp x29, x30, [sp], 32
5873 .size BuildFlashLsbPageTable, .-BuildFlashLsbPageTable
5875 .global FlashDieInfoInit
5876 .type FlashDieInfoInit, %function
5878 stp x29, x30, [sp, -128]!
5880 stp x19, x20, [sp,16]
5881 adrp x19, :got:gNandMaxDie
5882 stp x21, x22, [sp,32]
5883 stp x23, x24, [sp,48]
5884 ldr x0, [x19, #:got_lo12:gNandMaxDie]
5885 adrp x23, :got:gNandMaxChip
5886 stp x25, x26, [sp,64]
5887 stp x27, x28, [sp,80]
5889 adrp x22, :got:gBlockPageAlignSize
5890 ldr x0, [x23, #:got_lo12:gNandMaxChip]
5892 adrp x0, :got:gNandParaInfo
5893 ldr x0, [x0, #:got_lo12:gNandParaInfo]
5897 ldr x0, [x22, #:got_lo12:gBlockPageAlignSize]
5903 ldr x1, [x22, #:got_lo12:gBlockPageAlignSize]
5907 ldr x0, [x22, #:got_lo12:gBlockPageAlignSize]
5912 adrp x20, :got:DieCsIndex
5915 adrp x21, :got:DieAddrs
5917 adrp x28, :got:gpNandParaInfo
5918 ldr x0, [x20, #:got_lo12:DieCsIndex]
5920 ldr x0, [x21, #:got_lo12:DieAddrs]
5924 adrp x0, :got:gDieOp
5927 ldr x0, [x0, #:got_lo12:gDieOp]
5929 adrp x0, :got:gNandc1_enable
5930 adrp x3, :got:IDByte
5932 adrp x4, :got:gpNandc1
5933 adrp x5, :got:gNandChipMap
5935 ldr x1, [x0, #:got_lo12:gNandc1_enable]
5938 ldr x0, [x28, #:got_lo12:gpNandParaInfo]
5939 adrp x25, :got:gpNandParaInfo
5940 ldr x1, [x3, #:got_lo12:IDByte]
5941 adrp x26, :got:IDByte
5944 add x1, x1, x24, lsl 3
5956 ldr x2, [x19, #:got_lo12:gNandMaxDie]
5957 ldr x7, [x21, #:got_lo12:DieAddrs]
5959 str w0, [x7,w1,sxtw 2]
5962 ldr x0, [x20, #:got_lo12:DieCsIndex]
5963 strb w24, [x0,w1,sxtw]
5964 ldr x0, [x4, #:got_lo12:gpNandc1]
5968 ldr x2, [x5, #:got_lo12:gNandChipMap]
5972 ldr x0, [x27, #:got_lo12:gNandc1_enable]
5978 ldr x0, [x19, #:got_lo12:gNandMaxDie]
5979 ldr x23, [x23, #:got_lo12:gNandMaxChip]
5982 ldr x0, [x25, #:got_lo12:gpNandParaInfo]
5988 ldr x25, [x25, #:got_lo12:gpNandParaInfo]
5989 adrp x1, :got:gTotleBlock
5990 ldr x19, [x19, #:got_lo12:gNandMaxDie]
5993 ldr x1, [x1, #:got_lo12:gTotleBlock]
5999 ldp x19, x20, [sp,16]
6000 ldp x21, x22, [sp,32]
6001 ldp x23, x24, [sp,48]
6002 ldp x25, x26, [sp,64]
6003 ldp x27, x28, [sp,80]
6004 ldp x29, x30, [sp], 128
6009 ldr x24, [x25, #:got_lo12:gpNandParaInfo]
6010 ldr x1, [x26, #:got_lo12:IDByte]
6012 add x1, x1, x23, lsl 3
6017 ldr x0, [x19, #:got_lo12:gNandMaxDie]
6019 ldr x1, [x22, #:got_lo12:gBlockPageAlignSize]
6028 ldr x1, [x21, #:got_lo12:DieAddrs]
6029 str w0, [x1,w4,sxtw 2]
6033 str w0, [x1,w4,sxtw 2]
6035 ldr x0, [x19, #:got_lo12:gNandMaxDie]
6038 ldr x0, [x20, #:got_lo12:DieCsIndex]
6045 .size FlashDieInfoInit, .-FlashDieInfoInit
6047 .global ReadFlashInfo
6048 .type ReadFlashInfo, %function
6050 stp x29, x30, [sp, -32]!
6057 adrp x2, :got:gpNandParaInfo
6058 adrp x1, :got:gBlockPageAlignSize
6059 adrp x4, :got:DieCsIndex
6061 ldr x2, [x2, #:got_lo12:gpNandParaInfo]
6062 ldr x1, [x1, #:got_lo12:gBlockPageAlignSize]
6066 adrp x1, :got:gNandFlashEccBits
6070 ldr x1, [x1, #:got_lo12:gNandFlashEccBits]
6089 adrp x0, :got:gNandMaxDie
6091 ldr x0, [x0, #:got_lo12:gNandMaxDie]
6097 ldr x1, [x4, #:got_lo12:DieCsIndex]
6107 ldp x29, x30, [sp], 32
6109 .size ReadFlashInfo, .-ReadFlashInfo
6112 .type FtlMemInit, %function
6114 adrp x0, :got:g_SlcPartLbaEndSector
6116 stp x29, x30, [sp, -224]!
6118 ldr x0, [x0, #:got_lo12:g_SlcPartLbaEndSector]
6119 stp x19, x20, [sp,16]
6120 stp x23, x24, [sp,48]
6121 stp x21, x22, [sp,32]
6122 stp x25, x26, [sp,64]
6123 stp x27, x28, [sp,80]
6125 adrp x0, :got:g_all_blk_used_slc_mode
6126 adrp x20, :got:c_ftl_nand_planes_num
6127 ldr x0, [x0, #:got_lo12:g_all_blk_used_slc_mode]
6129 adrp x0, :got:g_GlobalSysVersion
6130 ldr x0, [x0, #:got_lo12:g_GlobalSysVersion]
6132 adrp x0, :got:g_GlobalDataVersion
6133 ldr x0, [x0, #:got_lo12:g_GlobalDataVersion]
6135 adrp x0, :got:g_totle_gc_page_count
6136 ldr x0, [x0, #:got_lo12:g_totle_gc_page_count]
6138 adrp x0, :got:g_totle_write_page_count
6139 ldr x0, [x0, #:got_lo12:g_totle_write_page_count]
6141 adrp x0, :got:g_totle_discard_page_count
6142 ldr x0, [x0, #:got_lo12:g_totle_discard_page_count]
6144 adrp x0, :got:g_totle_cache_write_count
6145 ldr x0, [x0, #:got_lo12:g_totle_cache_write_count]
6147 adrp x0, :got:g_totle_l2p_write_count
6148 ldr x0, [x0, #:got_lo12:g_totle_l2p_write_count]
6150 adrp x0, :got:g_totle_read_page_count
6151 ldr x0, [x0, #:got_lo12:g_totle_read_page_count]
6153 adrp x0, :got:g_totle_mlc_erase_count
6154 ldr x0, [x0, #:got_lo12:g_totle_mlc_erase_count]
6156 adrp x0, :got:g_totle_slc_erase_count
6157 ldr x0, [x0, #:got_lo12:g_totle_slc_erase_count]
6159 adrp x0, :got:g_totle_sys_slc_erase_count
6160 ldr x0, [x0, #:got_lo12:g_totle_sys_slc_erase_count]
6162 adrp x0, :got:g_max_erase_count
6163 ldr x0, [x0, #:got_lo12:g_max_erase_count]
6165 adrp x0, :got:g_min_erase_count
6166 ldr x0, [x0, #:got_lo12:g_min_erase_count]
6168 adrp x0, :got:g_in_gc_progress
6169 ldr x0, [x0, #:got_lo12:g_in_gc_progress]
6171 adrp x0, :got:g_in_swl_replace
6172 ldr x0, [x0, #:got_lo12:g_in_swl_replace]
6174 adrp x0, :got:g_gc_head_data_block
6175 ldr x0, [x0, #:got_lo12:g_gc_head_data_block]
6177 adrp x0, :got:g_gc_head_data_block_count
6179 ldr x0, [x0, #:got_lo12:g_gc_head_data_block_count]
6181 adrp x0, :got:g_gc_skip_write_count
6182 ldr x0, [x0, #:got_lo12:g_gc_skip_write_count]
6184 adrp x0, :got:g_cur_erase_blk
6185 ldr x0, [x0, #:got_lo12:g_cur_erase_blk]
6187 adrp x0, :got:g_gc_next_blk
6188 ldr x0, [x0, #:got_lo12:g_gc_next_blk]
6190 adrp x0, :got:g_gc_next_blk_1
6191 ldr x0, [x0, #:got_lo12:g_gc_next_blk_1]
6193 adrp x0, :got:g_gc_free_blk_threshold
6195 ldr x0, [x0, #:got_lo12:g_gc_free_blk_threshold]
6197 adrp x0, :got:g_gc_merge_free_blk_threshold
6199 ldr x0, [x0, #:got_lo12:g_gc_merge_free_blk_threshold]
6201 adrp x0, :got:g_gc_blk_index
6202 adrp x1, :got:c_wr_page_buf_num
6204 ldr x0, [x0, #:got_lo12:g_gc_blk_index]
6206 adrp x0, :got:g_gc_bad_block_temp_num
6207 ldr x0, [x0, #:got_lo12:g_gc_bad_block_temp_num]
6209 adrp x0, :got:g_gc_bad_block_gc_index
6210 ldr x0, [x0, #:got_lo12:g_gc_bad_block_gc_index]
6212 adrp x0, :got:c_ftl_nand_sec_pre_page
6213 ldr x3, [x1, #:got_lo12:c_wr_page_buf_num]
6214 ldr x0, [x0, #:got_lo12:c_ftl_nand_sec_pre_page]
6219 ldr x0, [x20, #:got_lo12:c_ftl_nand_planes_num]
6226 adrp x0, :got:g_wr_page_num
6227 adrp x19, :got:c_ftl_nand_page_pre_super_blk
6229 adrp x28, :got:req_gc_dst
6230 adrp x27, :got:p_sys_data_buf
6231 adrp x26, :got:p_sys_data_buf_1
6232 ldr x0, [x0, #:got_lo12:g_wr_page_num]
6233 adrp x25, :got:p_vendor_data_buf
6234 adrp x24, :got:p_gc_data_buf
6236 ldr x19, [x19, #:got_lo12:c_ftl_nand_page_pre_super_blk]
6240 adrp x8, :got:p_gc_blk_tbl
6242 ldr x1, [x8, #:got_lo12:p_gc_blk_tbl]
6248 adrp x7, :got:p_gc_page_info
6250 ldr x1, [x7, #:got_lo12:p_gc_page_info]
6252 ldr x20, [x20, #:got_lo12:c_ftl_nand_planes_num]
6258 adrp x6, :got:req_read
6260 ldr x1, [x6, #:got_lo12:req_read]
6264 ldr x1, [x28, #:got_lo12:req_gc_dst]
6268 adrp x5, :got:req_prgm
6270 ldr x1, [x5, #:got_lo12:req_prgm]
6274 adrp x4, :got:req_erase
6276 ldr x1, [x4, #:got_lo12:req_erase]
6280 adrp x3, :got:req_gc
6282 ldr x1, [x3, #:got_lo12:req_gc]
6284 ldr x22, [x23, #:got_lo12:c_wr_page_buf_num]
6288 adrp x2, :got:req_wr_io
6289 adrp x12, :got:c_ftl_nand_byte_pre_page
6290 adrp x9, :got:c_gc_page_buf_num
6291 ldr x2, [x2, #:got_lo12:req_wr_io]
6294 ldr x12, [x12, #:got_lo12:c_ftl_nand_byte_pre_page]
6295 ldr x23, [x9, #:got_lo12:c_gc_page_buf_num]
6303 ldr x2, [x27, #:got_lo12:p_sys_data_buf]
6307 ldr x2, [x26, #:got_lo12:p_sys_data_buf_1]
6311 ldr x2, [x25, #:got_lo12:p_vendor_data_buf]
6316 ldr x2, [x24, #:got_lo12:p_gc_data_buf]
6321 adrp x2, :got:p_wr_io_data_buf
6322 ldr x2, [x2, #:got_lo12:p_wr_io_data_buf]
6326 adrp x1, :got:p_io_data_buf_0
6327 ldr x2, [x1, #:got_lo12:p_io_data_buf_0]
6331 adrp x1, :got:p_io_data_buf_1
6332 ldr x2, [x1, #:got_lo12:p_io_data_buf_1]
6339 adrp x1, :got:gp_gc_page_buf_info
6340 ldr x2, [x1, #:got_lo12:gp_gc_page_buf_info]
6342 adrp x2, :got:c_ftl_nand_byte_pre_oob
6343 ldr x21, [x2, #:got_lo12:c_ftl_nand_byte_pre_oob]
6348 adrp x1, :got:p_sys_spare_buf
6349 ldr x10, [x1, #:got_lo12:p_sys_spare_buf]
6353 adrp x1, :got:p_io_spare_buf
6354 ldr x10, [x1, #:got_lo12:p_io_spare_buf]
6358 adrp x23, :got:p_io_data_buf_0
6361 adrp x15, :got:p_gc_spare_buf
6364 adrp x21, :got:gp_gc_page_buf_info
6365 ldr x9, [x15, #:got_lo12:p_gc_spare_buf]
6368 adrp x22, :got:p_io_data_buf_1
6371 adrp x1, :got:p_wr_io_spare_buf
6372 adrp x13, :got:c_ftl_nand_blk_pre_plane
6373 ldr x1, [x1, #:got_lo12:p_wr_io_spare_buf]
6375 adrp x1, :got:g_ect_tbl_info_size
6376 ldr x19, [x13, #:got_lo12:c_ftl_nand_blk_pre_plane]
6377 ldr x20, [x1, #:got_lo12:g_ect_tbl_info_size]
6383 adrp x2, :got:p_swl_mul_table
6384 ldr x2, [x2, #:got_lo12:p_swl_mul_table]
6392 adrp x1, :got:gp_ect_tbl_info
6393 adrp x14, :got:p_erase_count_table
6395 ldr x1, [x1, #:got_lo12:gp_ect_tbl_info]
6398 ldr x1, [x14, #:got_lo12:p_erase_count_table]
6404 adrp x2, :got:p_valid_page_count_check_table
6405 ldr x2, [x2, #:got_lo12:p_valid_page_count_check_table]
6409 adrp x9, :got:p_valid_page_count_table
6410 adrp x16, :got:c_ftl_nand_max_map_blks
6412 ldr x1, [x9, #:got_lo12:p_valid_page_count_table]
6414 ldr x16, [x16, #:got_lo12:c_ftl_nand_max_map_blks]
6420 adrp x11, :got:p_map_block_table
6422 ldr x2, [x11, #:got_lo12:p_map_block_table]
6426 adrp x10, :got:p_map_block_valid_page_count
6428 ldr x1, [x10, #:got_lo12:p_map_block_valid_page_count]
6430 adrp x1, :got:c_ftl_nand_max_vendor_blks
6431 ldr x20, [x1, #:got_lo12:c_ftl_nand_max_vendor_blks]
6435 adrp x2, :got:p_vendor_block_table
6436 ldr x2, [x2, #:got_lo12:p_vendor_block_table]
6441 adrp x2, :got:p_vendor_block_valid_page_count
6442 ldr x2, [x2, #:got_lo12:p_vendor_block_valid_page_count]
6445 adrp x20, :got:p_sys_spare_buf
6448 adrp x1, :got:p_vendor_block_ver_table
6449 ldr x1, [x1, #:got_lo12:p_vendor_block_ver_table]
6451 adrp x1, :got:c_ftl_nand_vendor_region_num
6452 ldr x1, [x1, #:got_lo12:c_ftl_nand_vendor_region_num]
6457 adrp x2, :got:p_vendor_region_ppn_table
6459 ldr x2, [x2, #:got_lo12:p_vendor_region_ppn_table]
6465 adrp x0, :got:c_ftl_nand_map_region_num
6466 ldr x0, [x0, #:got_lo12:c_ftl_nand_map_region_num]
6470 adrp x2, :got:p_map_region_ppn_table
6473 ldr x1, [x2, #:got_lo12:p_map_region_ppn_table]
6478 adrp x1, :got:p_map_block_ver_table
6480 ldr x16, [x1, #:got_lo12:p_map_block_ver_table]
6482 adrp x16, :got:c_ftl_nand_l2pmap_ram_region_num
6483 ldr x16, [x16, #:got_lo12:c_ftl_nand_l2pmap_ram_region_num]
6488 adrp x17, :got:p_l2p_ram_map
6491 ldr x17, [x17, #:got_lo12:p_l2p_ram_map]
6497 adrp x12, :got:p_l2p_map_buf
6498 ldr x12, [x12, #:got_lo12:p_l2p_map_buf]
6502 adrp x19, :got:p_io_spare_buf
6505 adrp x12, :got:p_data_block_list_table
6506 adrp x16, :got:c_ftl_nand_bbm_buf_size
6507 adrp x17, :got:c_ftl_nand_die_num
6508 ldr x12, [x12, #:got_lo12:p_data_block_list_table]
6510 adrp x0, :got:c_ftl_nand_blks_per_die
6511 ldr x16, [x16, #:got_lo12:c_ftl_nand_bbm_buf_size]
6512 ldr x0, [x0, #:got_lo12:c_ftl_nand_blks_per_die]
6518 ldr x17, [x17, #:got_lo12:c_ftl_nand_die_num]
6524 adrp x13, :got:gBbtInfo
6528 ldr x12, [x13, #:got_lo12:gBbtInfo]
6553 ldr x14, [x15, #:got_lo12:gBbtInfo]
6556 add x14, x14, x16, uxtw 2
6563 ldr x12, [x13, #:got_lo12:gBbtInfo]
6564 add x12, x12, x0, uxtw 3
6569 ldr x11, [x11, #:got_lo12:p_map_block_table]
6575 add x0, x0, :lo12:.LC78
6576 add x1, x1, :lo12:.LANCHOR1
6581 ldr x10, [x10, #:got_lo12:p_map_block_valid_page_count]
6584 ldr x2, [x2, #:got_lo12:p_map_region_ppn_table]
6587 ldr x1, [x1, #:got_lo12:p_map_block_ver_table]
6590 adrp x0, :got:p_l2p_ram_map
6591 ldr x0, [x0, #:got_lo12:p_l2p_ram_map]
6594 adrp x0, :got:p_l2p_map_buf
6595 ldr x0, [x0, #:got_lo12:p_l2p_map_buf]
6598 adrp x0, :got:p_data_block_list_table
6599 ldr x0, [x0, #:got_lo12:p_data_block_list_table]
6602 adrp x0, :got:gBbtInfo
6603 ldr x0, [x0, #:got_lo12:gBbtInfo]
6606 ldr x9, [x9, #:got_lo12:p_valid_page_count_table]
6609 ldr x8, [x8, #:got_lo12:p_gc_blk_tbl]
6612 ldr x7, [x7, #:got_lo12:p_gc_page_info]
6615 ldr x6, [x6, #:got_lo12:req_read]
6618 ldr x5, [x5, #:got_lo12:req_prgm]
6621 ldr x4, [x4, #:got_lo12:req_erase]
6624 ldr x3, [x3, #:got_lo12:req_gc]
6627 ldr x28, [x28, #:got_lo12:req_gc_dst]
6630 ldr x27, [x27, #:got_lo12:p_sys_data_buf]
6633 ldr x26, [x26, #:got_lo12:p_sys_data_buf_1]
6636 ldr x25, [x25, #:got_lo12:p_vendor_data_buf]
6639 ldr x24, [x24, #:got_lo12:p_gc_data_buf]
6642 ldr x23, [x23, #:got_lo12:p_io_data_buf_0]
6645 ldr x22, [x22, #:got_lo12:p_io_data_buf_1]
6648 ldr x21, [x21, #:got_lo12:gp_gc_page_buf_info]
6651 ldr x20, [x20, #:got_lo12:p_sys_spare_buf]
6654 ldr x19, [x19, #:got_lo12:p_io_spare_buf]
6658 ldr x15, [x0, #:got_lo12:p_gc_spare_buf]
6662 ldr x14, [x0, #:got_lo12:p_erase_count_table]
6665 adrp x0, :got:p_swl_mul_table
6666 ldr x0, [x0, #:got_lo12:p_swl_mul_table]
6669 adrp x0, :got:p_vendor_block_table
6670 ldr x0, [x0, #:got_lo12:p_vendor_block_table]
6673 adrp x0, :got:p_vendor_block_valid_page_count
6674 ldr x0, [x0, #:got_lo12:p_vendor_block_valid_page_count]
6677 adrp x0, :got:p_vendor_block_ver_table
6678 ldr x0, [x0, #:got_lo12:p_vendor_block_ver_table]
6681 adrp x0, :got:p_vendor_region_ppn_table
6682 ldr x0, [x0, #:got_lo12:p_vendor_region_ppn_table]
6687 ldp x19, x20, [sp,16]
6688 ldp x21, x22, [sp,32]
6689 ldp x23, x24, [sp,48]
6690 ldp x25, x26, [sp,64]
6691 ldp x27, x28, [sp,80]
6692 ldp x29, x30, [sp], 224
6694 .size FtlMemInit, .-FtlMemInit
6696 .global FtlBbt2Bitmap
6697 .type FtlBbt2Bitmap, %function
6699 stp x29, x30, [sp, -32]!
6701 stp x19, x20, [sp,16]
6703 adrp x1, :got:c_ftl_nand_bbm_buf_size
6706 ldr x1, [x1, #:got_lo12:c_ftl_nand_bbm_buf_size]
6728 ldp x19, x20, [sp,16]
6729 ldp x29, x30, [sp], 32
6731 .size FtlBbt2Bitmap, .-FtlBbt2Bitmap
6733 .global FtlBbtMemInit
6734 .type FtlBbtMemInit, %function
6736 adrp x0, :got:gBbtInfo
6738 stp x29, x30, [sp, -16]!
6741 ldr x0, [x0, #:got_lo12:gBbtInfo]
6747 ldp x29, x30, [sp], 16
6749 .size FtlBbtMemInit, .-FtlBbtMemInit
6751 .global FtlFreeSysBlkQueueInit
6752 .type FtlFreeSysBlkQueueInit, %function
6753 FtlFreeSysBlkQueueInit:
6754 adrp x1, :got:gSysFreeQueue
6756 stp x29, x30, [sp, -16]!
6758 ldr x1, [x1, #:got_lo12:gSysFreeQueue]
6767 ldp x29, x30, [sp], 16
6769 .size FtlFreeSysBlkQueueInit, .-FtlFreeSysBlkQueueInit
6771 .global ftl_free_no_use_map_blk
6772 .type ftl_free_no_use_map_blk, %function
6773 ftl_free_no_use_map_blk:
6774 stp x29, x30, [sp, -96]!
6777 stp x19, x20, [sp,16]
6778 stp x21, x22, [sp,32]
6779 stp x23, x24, [sp,48]
6780 stp x25, x26, [sp,64]
6822 adrp x27, :got:c_ftl_nand_page_pre_slc_blk
6831 ldr x0, [x27, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
6836 strh w0, [x21,x22,lsl 1]
6849 bl FtlFreeSysBlkQueueIn
6861 ldp x19, x20, [sp,16]
6862 ldp x21, x22, [sp,32]
6863 ldp x23, x24, [sp,48]
6864 ldp x25, x26, [sp,64]
6865 ldp x29, x30, [sp], 96
6867 .size ftl_free_no_use_map_blk, .-ftl_free_no_use_map_blk
6869 .global FtlL2PDataInit
6870 .type FtlL2PDataInit, %function
6872 stp x29, x30, [sp, -64]!
6874 stp x21, x22, [sp,32]
6875 adrp x22, :got:c_ftl_nand_max_map_blks
6877 adrp x23, :got:p_map_block_valid_page_count
6878 adrp x21, :got:c_ftl_nand_byte_pre_page
6879 stp x19, x20, [sp,16]
6880 ldr x1, [x22, #:got_lo12:c_ftl_nand_max_map_blks]
6881 adrp x19, :got:c_ftl_nand_l2pmap_ram_region_num
6882 ldr x0, [x23, #:got_lo12:p_map_block_valid_page_count]
6883 adrp x20, :got:p_l2p_map_buf
6889 ldr x1, [x21, #:got_lo12:c_ftl_nand_byte_pre_page]
6890 ldr x0, [x20, #:got_lo12:p_l2p_map_buf]
6892 ldr x1, [x19, #:got_lo12:c_ftl_nand_l2pmap_ram_region_num]
6900 adrp x5, :got:p_l2p_ram_map
6903 ldr x0, [x19, #:got_lo12:c_ftl_nand_l2pmap_ram_region_num]
6907 ldr x2, [x5, #:got_lo12:p_l2p_ram_map]
6915 ldr x4, [x20, #:got_lo12:p_l2p_map_buf]
6917 ldr x0, [x21, #:got_lo12:c_ftl_nand_byte_pre_page]
6929 adrp x0, :got:gL2pMapInfo
6931 ldr x0, [x0, #:got_lo12:gL2pMapInfo]
6934 ldr x1, [x22, #:got_lo12:c_ftl_nand_max_map_blks]
6939 adrp x1, :got:g_totle_map_block
6940 ldr x1, [x1, #:got_lo12:g_totle_map_block]
6943 adrp x1, :got:c_ftl_nand_map_region_num
6944 ldr x1, [x1, #:got_lo12:c_ftl_nand_map_region_num]
6947 adrp x1, :got:p_map_block_table
6948 ldr x1, [x1, #:got_lo12:p_map_block_table]
6951 adrp x1, :got:p_map_block_ver_table
6952 ldr x1, [x1, #:got_lo12:p_map_block_ver_table]
6955 ldr x1, [x3, #:got_lo12:p_map_block_valid_page_count]
6958 adrp x1, :got:p_map_region_ppn_table
6959 ldr x1, [x1, #:got_lo12:p_map_region_ppn_table]
6962 ldp x19, x20, [sp,16]
6963 ldp x21, x22, [sp,32]
6965 ldp x29, x30, [sp], 64
6967 .size FtlL2PDataInit, .-FtlL2PDataInit
6969 .global FtlVariablesInit
6970 .type FtlVariablesInit, %function
6972 adrp x0, :got:g_req_cache
6974 stp x29, x30, [sp, -32]!
6976 ldr x0, [x0, #:got_lo12:g_req_cache]
6978 adrp x19, :got:c_ftl_nand_blk_pre_plane
6980 adrp x0, :got:g_tmp_data_superblock_id
6981 ldr x0, [x0, #:got_lo12:g_tmp_data_superblock_id]
6983 adrp x0, :got:g_totle_swl_count
6985 ldr x0, [x0, #:got_lo12:g_totle_swl_count]
6987 adrp x0, :got:ftl_gc_temp_power_lost_recovery_flag
6988 ldr x0, [x0, #:got_lo12:ftl_gc_temp_power_lost_recovery_flag]
6990 adrp x0, :got:g_recovery_page_min_ver
6991 ldr x0, [x0, #:got_lo12:g_recovery_page_min_ver]
6993 adrp x0, :got:g_inkDie_check_enable
6994 adrp x1, :got:c_ftl_nand_max_vendor_blks
6995 ldr x0, [x0, #:got_lo12:g_inkDie_check_enable]
6997 adrp x0, :got:g_totle_vendor_block
6998 ldr x0, [x0, #:got_lo12:g_totle_vendor_block]
7000 adrp x0, :got:p_vendor_block_table
7001 ldr x1, [x1, #:got_lo12:c_ftl_nand_max_vendor_blks]
7002 ldr x0, [x0, #:got_lo12:p_vendor_block_table]
7008 ldr x19, [x19, #:got_lo12:c_ftl_nand_blk_pre_plane]
7009 adrp x0, :got:p_erase_count_table
7012 ldr x0, [x0, #:got_lo12:p_erase_count_table]
7016 adrp x0, :got:p_swl_mul_table
7020 ldr x0, [x0, #:got_lo12:p_swl_mul_table]
7023 adrp x0, :got:g_sys_save_data
7026 ldr x0, [x0, #:got_lo12:g_sys_save_data]
7028 adrp x0, :got:g_sys_ext_data
7031 ldr x0, [x0, #:got_lo12:g_sys_ext_data]
7037 ldp x29, x30, [sp], 32
7039 .size FtlVariablesInit, .-FtlVariablesInit
7041 .global SupperBlkListInit
7042 .type SupperBlkListInit, %function
7044 stp x29, x30, [sp, -112]!
7045 adrp x0, :got:c_ftl_nand_blk_pre_plane
7048 stp x23, x24, [sp,48]
7049 ldr x0, [x0, #:got_lo12:c_ftl_nand_blk_pre_plane]
7050 adrp x23, :got:p_data_block_list_table
7051 stp x19, x20, [sp,16]
7052 stp x21, x22, [sp,32]
7053 stp x25, x26, [sp,64]
7054 stp x27, x28, [sp,80]
7055 ldr x1, [x23, #:got_lo12:p_data_block_list_table]
7056 adrp x21, :got:g_num_data_superblocks
7058 adrp x20, :got:g_num_free_superblocks
7060 adrp x25, :got:c_ftl_nand_planes_num
7066 adrp x26, :got:p_plane_order_table
7067 adrp x27, :got:c_ftl_nand_page_pre_blk
7070 adrp x0, :got:p_free_data_block_list_head
7071 ldr x0, [x0, #:got_lo12:p_free_data_block_list_head]
7073 adrp x0, :got:p_data_block_list_head
7074 ldr x0, [x0, #:got_lo12:p_data_block_list_head]
7076 adrp x0, :got:p_data_block_list_tail
7077 ldr x0, [x0, #:got_lo12:p_data_block_list_tail]
7079 ldr x0, [x21, #:got_lo12:g_num_data_superblocks]
7081 ldr x0, [x20, #:got_lo12:g_num_free_superblocks]
7084 adrp x0, :got:c_ftl_nand_data_blks_per_plane
7085 ldr x0, [x0, #:got_lo12:c_ftl_nand_data_blks_per_plane]
7092 ldr x0, [x25, #:got_lo12:c_ftl_nand_planes_num]
7096 ldr x0, [x26, #:got_lo12:p_plane_order_table]
7100 ldrb w0, [x0,w4,sxtw]
7106 ldr x0, [x27, #:got_lo12:c_ftl_nand_page_pre_blk]
7118 ldr x1, [x23, #:got_lo12:p_data_block_list_table]
7124 adrp x0, :got:g_active_superblock
7125 ldr x0, [x0, #:got_lo12:g_active_superblock]
7129 adrp x0, :got:g_buffer_superblock
7130 ldr x0, [x0, #:got_lo12:g_buffer_superblock]
7134 adrp x0, :got:g_gc_temp_superblock
7135 ldr x0, [x0, #:got_lo12:g_gc_temp_superblock]
7139 adrp x1, :got:p_valid_page_count_table
7140 ubfiz x0, x19, 1, 16
7141 ldr x1, [x1, #:got_lo12:p_valid_page_count_table]
7160 ldr x21, [x21, #:got_lo12:g_num_data_superblocks]
7163 ldr x20, [x20, #:got_lo12:g_num_free_superblocks]
7165 ldp x19, x20, [sp,16]
7166 ldp x21, x22, [sp,32]
7167 ldp x23, x24, [sp,48]
7168 ldp x25, x26, [sp,64]
7169 ldp x27, x28, [sp,80]
7170 ldp x29, x30, [sp], 112
7172 .size SupperBlkListInit, .-SupperBlkListInit
7174 .global FtlGcPageVarInit
7175 .type FtlGcPageVarInit, %function
7177 adrp x0, :got:g_gc_blk_num
7179 stp x29, x30, [sp, -32]!
7181 ldr x0, [x0, #:got_lo12:g_gc_blk_num]
7183 adrp x19, :got:c_ftl_nand_page_pre_super_blk
7185 adrp x0, :got:g_gc_page_offset
7186 ldr x0, [x0, #:got_lo12:g_gc_page_offset]
7188 adrp x0, :got:p_gc_blk_tbl
7189 ldr x19, [x19, #:got_lo12:c_ftl_nand_page_pre_super_blk]
7190 ldr x0, [x0, #:got_lo12:p_gc_blk_tbl]
7195 adrp x0, :got:p_gc_page_info
7199 ldr x0, [x0, #:got_lo12:p_gc_page_info]
7205 ldp x29, x30, [sp], 32
7207 .size FtlGcPageVarInit, .-FtlGcPageVarInit
7210 .type ftl_memcpy, %function
7212 stp x29, x30, [sp, -16]!
7216 ldp x29, x30, [sp], 16
7218 .size ftl_memcpy, .-ftl_memcpy
7220 .global FlashGetReadRetryDefault
7221 .type FlashGetReadRetryDefault, %function
7222 FlashGetReadRetryDefault:
7223 stp x29, x30, [sp, -16]!
7230 bl HynixGetReadRetryDefault
7235 adrp x0, :got:gReadRetryInfo
7237 ldr x0, [x0, #:got_lo12:gReadRetryInfo]
7244 adrp x1, :got:SamsungRefValue
7245 ldr x1, [x1, #:got_lo12:SamsungRefValue]
7254 adrp x0, :got:gReadRetryInfo
7255 ldr x0, [x0, #:got_lo12:gReadRetryInfo]
7265 adrp x0, :got:gReadRetryInfo
7266 ldr x0, [x0, #:got_lo12:gReadRetryInfo]
7273 adrp x1, :got:ToshibaA19RefValue
7276 ldr x1, [x1, #:got_lo12:ToshibaA19RefValue]
7284 adrp x0, :got:gReadRetryInfo
7286 ldr x0, [x0, #:got_lo12:gReadRetryInfo]
7293 adrp x1, :got:Toshiba15RefValue
7294 ldr x1, [x1, #:got_lo12:Toshiba15RefValue]
7298 ldp x29, x30, [sp], 16
7300 .size FlashGetReadRetryDefault, .-FlashGetReadRetryDefault
7302 .global FlashReadIdbData
7303 .type FlashReadIdbData, %function
7305 adrp x1, :got:gNandIDataBuf
7307 stp x29, x30, [sp, -16]!
7309 ldr x1, [x1, #:got_lo12:gNandIDataBuf]
7312 ldp x29, x30, [sp], 16
7314 .size FlashReadIdbData, .-FlashReadIdbData
7316 .global FlashLoadPhyInfoInRam
7317 .type FlashLoadPhyInfoInRam, %function
7318 FlashLoadPhyInfoInRam:
7319 stp x29, x30, [sp, -64]!
7321 stp x19, x20, [sp,16]
7322 adrp x19, :got:NandFlashParaTbl
7324 stp x21, x22, [sp,32]
7326 adrp x23, :got:IDByte
7327 ldr x22, [x19, #:got_lo12:NandFlashParaTbl]
7329 ldr x1, [x23, #:got_lo12:IDByte]
7335 ldr x19, [x19, #:got_lo12:NandFlashParaTbl]
7336 ubfiz x20, x20, 5, 32
7351 add x5, x4, :lo12:.LANCHOR2
7361 adrp x0, :got:gNandOptPara
7363 add x2, x2, :lo12:.LANCHOR2
7367 ldr x0, [x0, #:got_lo12:gNandOptPara]
7369 adrp x0, :got:gNandParaInfo
7372 ldr x0, [x0, #:got_lo12:gNandParaInfo]
7380 ldp x19, x20, [sp,16]
7381 ldp x21, x22, [sp,32]
7382 ldp x29, x30, [sp], 64
7384 .size FlashLoadPhyInfoInRam, .-FlashLoadPhyInfoInRam
7386 .global NandcCopy1KB
7387 .type NandcCopy1KB, %function
7389 stp x29, x30, [sp, -48]!
7392 stp x19, x20, [sp,16]
7416 orr w0, w0, w1, lsl 8
7420 orr w0, w0, w1, lsl 24
7421 str w0, [x21,w19,sxtw 2]
7435 ldr w0, [x21,w19,sxtw 2]
7444 ldp x19, x20, [sp,16]
7446 ldp x29, x30, [sp], 48
7448 .size NandcCopy1KB, .-NandcCopy1KB
7451 .type ftl_memcmp, %function
7453 stp x29, x30, [sp, -16]!
7457 ldp x29, x30, [sp], 16
7459 .size ftl_memcmp, .-ftl_memcmp
7461 .global FlashSramLoadStore
7462 .type FlashSramLoadStore, %function
7464 adrp x4, :got:RK29_NANDC_REG_BASE
7466 stp x29, x30, [sp, -16]!
7469 ldr x4, [x4, #:got_lo12:RK29_NANDC_REG_BASE]
7481 ldp x29, x30, [sp], 16
7483 .size FlashSramLoadStore, .-FlashSramLoadStore
7485 .global FlashCs123Init
7486 .type FlashCs123Init, %function
7489 .size FlashCs123Init, .-FlashCs123Init
7491 .global rk_nand_de_init
7492 .type rk_nand_de_init, %function
7494 stp x29, x30, [sp, -16]!
7497 ldp x29, x30, [sp], 16
7499 .size rk_nand_de_init, .-rk_nand_de_init
7501 .global rk_nand_suspend
7502 .type rk_nand_suspend, %function
7504 stp x29, x30, [sp, -16]!
7507 ldp x29, x30, [sp], 16
7509 .size rk_nand_suspend, .-rk_nand_suspend
7511 .global rk_nand_resume
7512 .type rk_nand_resume, %function
7514 stp x29, x30, [sp, -16]!
7517 ldp x29, x30, [sp], 16
7519 .size rk_nand_resume, .-rk_nand_resume
7521 .global rk_ftl_get_capacity
7522 .type rk_ftl_get_capacity, %function
7523 rk_ftl_get_capacity:
7524 stp x29, x30, [sp, -16]!
7528 ldp x29, x30, [sp], 16
7530 .size rk_ftl_get_capacity, .-rk_ftl_get_capacity
7532 .global rknand_print_hex
7533 .type rknand_print_hex, %function
7535 stp x29, x30, [sp, -96]!
7537 stp x19, x20, [sp,16]
7538 stp x21, x22, [sp,32]
7539 stp x23, x24, [sp,48]
7544 stp x25, x26, [sp,64]
7551 add x23, x23, :lo12:.LC79
7552 add x21, x21, :lo12:.LC80
7553 add x24, x24, :lo12:.LC72
7566 ldr w1, [x22,x19,lsl 2]
7571 ldrsh w1, [x22,x19,lsl 1]
7582 add x1, x1, :lo12:.LC81
7591 add x1, x1, :lo12:.LC81
7592 add x0, x0, :lo12:.LC72
7595 ldp x19, x20, [sp,16]
7596 ldp x21, x22, [sp,32]
7597 ldp x23, x24, [sp,48]
7598 ldp x25, x26, [sp,64]
7599 ldp x29, x30, [sp], 96
7601 .size rknand_print_hex, .-rknand_print_hex
7603 .global NandcXferComp
7604 .type NandcXferComp, %function
7606 stp x29, x30, [sp, -80]!
7607 adrp x1, :got:gNandChipMap
7610 stp x21, x22, [sp,32]
7611 ldr x1, [x1, #:got_lo12:gNandChipMap]
7612 adrp x21, :got:gNandcVer
7613 stp x19, x20, [sp,16]
7616 ldr x0, [x21, #:got_lo12:gNandcVer]
7623 bl wait_for_nandc_xfer_completed
7632 add x22, x22, :lo12:.LC82
7633 add x23, x23, :lo12:.LC83
7641 ldr x0, [x21, #:got_lo12:gNandcVer]
7647 and w0, w20, 16777215
7670 adrp x19, :got:gMasterInfo
7671 ldr x19, [x19, #:got_lo12:gMasterInfo]
7679 bl rknand_dma_unmap_single
7685 bl rknand_dma_unmap_single
7690 add x21, x21, :lo12:.LC84
7691 add x22, x22, :lo12:.LC83
7698 and w0, w20, 16777215
7713 adrp x0, :got:gNandcDumpWriteEn
7715 ldr x1, [x0, #:got_lo12:gNandcDumpWriteEn]
7719 bl NandcSendDumpDataStart
7721 adrp x21, :got:gMasterInfo
7722 ldr x21, [x21, #:got_lo12:gMasterInfo]
7730 bl rknand_dma_unmap_single
7736 bl rknand_dma_unmap_single
7738 ldr x0, [x20, #:got_lo12:gNandcDumpWriteEn]
7742 bl NandcSendDumpDataDone
7744 adrp x0, :got:gMasterInfo
7745 ldr x0, [x0, #:got_lo12:gMasterInfo]
7754 ldp x19, x20, [sp,16]
7755 ldp x21, x22, [sp,32]
7757 ldp x29, x30, [sp], 80
7759 .size NandcXferComp, .-NandcXferComp
7761 .global NandcXferData
7762 .type NandcXferData, %function
7764 stp x29, x30, [sp, -176]!
7766 stp x23, x24, [sp,48]
7768 adrp x0, :got:gNandChipMap
7769 stp x19, x20, [sp,16]
7771 sbfiz x1, x23, 4, 32
7772 ldr x0, [x0, #:got_lo12:gNandChipMap]
7774 stp x21, x22, [sp,32]
7775 stp x25, x26, [sp,64]
7776 stp x27, x28, [sp,80]
7803 adrp x0, :got:gNandcEccBits
7806 adrp x5, :got:gMasterInfo
7807 add x2, x21, x2, lsl 2
7808 ldr x1, [x0, #:got_lo12:gNandcEccBits]
7818 ldr x6, [x5, #:got_lo12:gMasterInfo]
7819 and x1, x1, 4294967292
7833 ldr x0, [x0, #:got_lo12:gNandcEccBits]
7836 adrp x0, :got:gNandcVer
7837 ldr x0, [x0, #:got_lo12:gNandcVer]
7847 ldr w1, [x19,x1,lsl 2]
7863 orr w2, w6, w2, lsl 5
7865 orr w1, w3, w1, lsl 5
7872 orr w3, w3, w1, lsl 5
7889 orr w2, w6, w2, lsl 5
7891 orr w1, w3, w1, lsl 5
7904 orr w3, w1, w3, lsl 5
7907 csel w22, w22, w3, cs
7925 ubfiz x0, x22, 9, 23
7930 csel w4, w27, wzr, ne
7982 orr w0, w1, w0, lsl 5
7984 csel w22, w22, w0, cs
7989 adrp x0, :got:gpNandc1
7990 ldr x0, [x0, #:got_lo12:gpNandc1]
8000 ubfiz x3, x27, 9, 23
8005 csel w4, w28, wzr, ne
8014 adrp x0, :got:gNandcVer
8015 ldr x0, [x0, #:got_lo12:gNandcVer]
8021 movk w1, 0x2, lsl 16
8030 ldp x19, x20, [sp,16]
8031 ldp x21, x22, [sp,32]
8032 ldp x23, x24, [sp,48]
8033 ldp x25, x26, [sp,64]
8034 ldp x27, x28, [sp,80]
8035 ldp x29, x30, [sp], 176
8037 .size NandcXferData, .-NandcXferData
8039 .global FlashReadRawPage
8040 .type FlashReadRawPage, %function
8042 stp x29, x30, [sp, -64]!
8045 stp x19, x20, [sp,16]
8047 adrp x0, :got:gNandParaInfo
8050 ldr x0, [x0, #:got_lo12:gNandParaInfo]
8053 adrp x0, :got:gNandIDBResBlkNum
8054 adrp x5, :got:gBlockPageAlignSize
8055 ldr x0, [x0, #:got_lo12:gNandIDBResBlkNum]
8056 ldr x5, [x5, #:got_lo12:gBlockPageAlignSize]
8062 csel w20, w20, w0, cs
8067 bl NandcWaitFlashReady
8074 bl NandcWaitFlashReady
8086 ldp x19, x20, [sp,16]
8087 ldp x29, x30, [sp], 64
8089 .size FlashReadRawPage, .-FlashReadRawPage
8091 .global FlashDdrTunningRead
8092 .type FlashDdrTunningRead, %function
8093 FlashDdrTunningRead:
8094 stp x29, x30, [sp, -112]!
8096 stp x21, x22, [sp,32]
8098 adrp x0, :got:gpNandc
8099 stp x19, x20, [sp,16]
8100 stp x23, x24, [sp,48]
8101 ldr x0, [x0, #:got_lo12:gpNandc]
8103 stp x25, x26, [sp,64]
8104 stp x27, x28, [sp,80]
8112 adrp x0, :got:gNandcVer
8113 ldr x0, [x0, #:got_lo12:gNandcVer]
8117 csel w19, w19, w0, cc
8120 bl FlashSetInterfaceMode
8126 adrp x21, :got:gFlashInterfaceMode
8131 ldr x21, [x21, #:got_lo12:gFlashInterfaceMode]
8134 bl FlashSetInterfaceMode
8145 adrp x1, :got:IDByte
8148 ldr x1, [x1, #:got_lo12:IDByte]
8152 adrp x1, :got:gNandChipMap
8154 ldr x1, [x1, #:got_lo12:gNandChipMap]
8161 adrp x3, :got:FlashDdrTunningReadCount
8162 ldr x3, [x3, #:got_lo12:FlashDdrTunningReadCount]
8223 add x0, x0, :lo12:.LC85
8231 add x0, x0, :lo12:.LC86
8239 ldp x19, x20, [sp,16]
8240 ldp x21, x22, [sp,32]
8241 ldp x23, x24, [sp,48]
8242 ldp x25, x26, [sp,64]
8243 ldp x27, x28, [sp,80]
8244 ldp x29, x30, [sp], 112
8246 .size FlashDdrTunningRead, .-FlashDdrTunningRead
8248 .global FlashReadPage
8249 .type FlashReadPage, %function
8251 stp x29, x30, [sp, -80]!
8253 stp x19, x20, [sp,16]
8257 stp x23, x24, [sp,48]
8258 stp x21, x22, [sp,32]
8266 adrp x21, :got:gNandRandomizer
8267 ldr x21, [x21, #:got_lo12:gNandRandomizer]
8279 adrp x0, :got:gpReadRetrial
8280 ldr x0, [x0, #:got_lo12:gpReadRetrial]
8293 add x0, x0, :lo12:.LC87
8300 adrp x0, :got:gFlashToggleModeEn
8301 ldr x0, [x0, #:got_lo12:gFlashToggleModeEn]
8304 adrp x0, :got:gpNandc
8309 ldr x0, [x0, #:got_lo12:gpNandc]
8313 bl FlashDdrTunningRead
8317 adrp x1, :got:gNandFlashEccBits
8318 ldr x1, [x1, #:got_lo12:gNandFlashEccBits]
8328 ldp x19, x20, [sp,16]
8329 ldp x21, x22, [sp,32]
8330 ldp x23, x24, [sp,48]
8331 ldp x29, x30, [sp], 80
8333 .size FlashReadPage, .-FlashReadPage
8335 .global FlashDdrParaScan
8336 .type FlashDdrParaScan, %function
8338 stp x29, x30, [sp, -48]!
8340 stp x19, x20, [sp,16]
8341 adrp x19, :got:gFlashInterfaceMode
8343 stp x21, x22, [sp,32]
8345 ldr x22, [x19, #:got_lo12:gFlashInterfaceMode]
8347 bl FlashSetInterfaceMode
8355 bl FlashDdrTunningRead
8364 adrp x19, :got:gFlashToggleModeEn
8369 ldr x0, [x1, #:got_lo12:gFlashInterfaceMode]
8373 bl FlashSetInterfaceMode
8376 ldr x19, [x19, #:got_lo12:gFlashToggleModeEn]
8380 ldr x19, [x19, #:got_lo12:gFlashToggleModeEn]
8385 ldp x19, x20, [sp,16]
8386 ldp x21, x22, [sp,32]
8387 ldp x29, x30, [sp], 48
8389 .size FlashDdrParaScan, .-FlashDdrParaScan
8391 .global FlashLoadPhyInfo
8392 .type FlashLoadPhyInfo, %function
8394 stp x29, x30, [sp, -144]!
8397 stp x19, x20, [sp,16]
8398 adrp x20, :got:gNandParaInfo
8406 stp x21, x22, [sp,32]
8408 adrp x22, :got:gFlashPageBuffer0
8409 ldr x0, [x20, #:got_lo12:gNandParaInfo]
8410 adrp x21, :got:gpFlashSaveInfo
8411 stp x23, x24, [sp,48]
8412 stp x25, x26, [sp,64]
8413 stp x27, x28, [sp,80]
8414 ldr x1, [x22, #:got_lo12:gFlashPageBuffer0]
8415 adrp x23, :got:gNandFlashInfoBlockAddr
8420 ldr x0, [x21, #:got_lo12:gpFlashSaveInfo]
8421 adrp x26, :got:gNandOptPara
8423 adrp x27, :got:gReadRetryInfo
8426 ldr x0, [x23, #:got_lo12:gNandFlashInfoBlockAddr]
8435 ldr x6, [x22, #:got_lo12:gFlashPageBuffer0]
8473 movk w1, 0x4e41, lsl 16
8474 ldr x28, [x0, #:got_lo12:gpFlashSaveInfo]
8480 ldr x20, [x20, #:got_lo12:gNandParaInfo]
8481 adrp x0, :got:gNandFlashIdbBlockAddr
8483 ldr x0, [x0, #:got_lo12:gNandFlashIdbBlockAddr]
8489 ldr x21, [x20, #:got_lo12:gNandParaInfo]
8497 ldr x0, [x26, #:got_lo12:gNandOptPara]
8502 ldr x0, [x27, #:got_lo12:gReadRetryInfo]
8505 adrp x1, :got:gFlashToggleModeEn
8507 ldr x1, [x1, #:got_lo12:gFlashToggleModeEn]
8511 ldr x0, [x23, #:got_lo12:gNandFlashInfoBlockAddr]
8514 adrp x0, :got:gNandFlashIdbBlockAddr
8516 ldr x0, [x0, #:got_lo12:gNandFlashIdbBlockAddr]
8524 adrp x0, :got:gNandIDBResBlkNumSaveInFlash
8527 ldr x0, [x0, #:got_lo12:gNandIDBResBlkNumSaveInFlash]
8532 ldp x19, x20, [sp,16]
8533 ldp x21, x22, [sp,32]
8534 ldp x23, x24, [sp,48]
8535 ldp x25, x26, [sp,64]
8536 ldp x27, x28, [sp,80]
8537 ldp x29, x30, [sp], 144
8539 .size FlashLoadPhyInfo, .-FlashLoadPhyInfo
8541 .global ToshibaReadRetrial
8542 .type ToshibaReadRetrial, %function
8544 stp x29, x30, [sp, -96]!
8546 stp x23, x24, [sp,48]
8549 stp x19, x20, [sp,16]
8550 stp x25, x26, [sp,64]
8551 stp x21, x22, [sp,32]
8552 stp x27, x28, [sp,80]
8556 bl NandcWaitFlashReady
8558 adrp x20, :got:g_retryMode
8562 ldr x0, [x20, #:got_lo12:g_retryMode]
8568 adrp x0, :got:gFlashToggleModeEn
8569 ldr x0, [x0, #:got_lo12:gFlashToggleModeEn]
8584 adrp x0, :got:g_maxRetryCount
8585 ldr x0, [x0, #:got_lo12:g_maxRetryCount]
8590 ldr x0, [x20, #:got_lo12:g_retryMode]
8603 ldr x0, [x20, #:got_lo12:g_retryMode]
8607 adrp x0, :got:g_maxRetryCount
8608 ldr x0, [x0, #:got_lo12:g_maxRetryCount]
8642 adrp x0, :got:gNandFlashEccBits
8644 csel w24, w24, w28, ne
8645 ldr x0, [x0, #:got_lo12:gNandFlashEccBits]
8647 add w0, w0, w0, lsl 1
8658 ldr x20, [x20, #:got_lo12:g_retryMode]
8673 adrp x0, :got:gNandFlashEccBits
8674 ldr x0, [x0, #:got_lo12:gNandFlashEccBits]
8676 add w0, w0, w0, lsl 1
8681 csel w28, w28, w0, eq
8684 bl NandcWaitFlashReady
8690 ldp x19, x20, [sp,16]
8691 ldp x21, x22, [sp,32]
8692 ldp x23, x24, [sp,48]
8693 ldp x25, x26, [sp,64]
8694 ldp x27, x28, [sp,80]
8695 ldp x29, x30, [sp], 96
8697 .size ToshibaReadRetrial, .-ToshibaReadRetrial
8699 .global SamsungReadRetrial
8700 .type SamsungReadRetrial, %function
8702 stp x29, x30, [sp, -96]!
8704 stp x21, x22, [sp,32]
8709 stp x19, x20, [sp,16]
8710 stp x23, x24, [sp,48]
8711 stp x25, x26, [sp,64]
8714 bl NandcWaitFlashReady
8718 adrp x26, :got:g_maxRetryCount
8719 adrp x27, :got:gNandFlashEccBits
8723 ldr x0, [x26, #:got_lo12:g_maxRetryCount]
8740 csel w19, w19, w0, ne
8741 ldr x0, [x27, #:got_lo12:gNandFlashEccBits]
8743 add w2, w2, w2, lsl 1
8757 adrp x0, :got:gNandFlashEccBits
8758 ldr x0, [x0, #:got_lo12:gNandFlashEccBits]
8760 add w0, w0, w0, lsl 1
8765 csel w19, w19, w0, eq
8769 ldp x19, x20, [sp,16]
8770 ldp x21, x22, [sp,32]
8771 ldp x23, x24, [sp,48]
8772 ldp x25, x26, [sp,64]
8773 ldp x29, x30, [sp], 96
8775 .size SamsungReadRetrial, .-SamsungReadRetrial
8777 .global MicronReadRetrial
8778 .type MicronReadRetrial, %function
8780 stp x29, x30, [sp, -96]!
8782 stp x21, x22, [sp,32]
8786 stp x19, x20, [sp,16]
8787 stp x23, x24, [sp,48]
8788 stp x25, x26, [sp,64]
8789 stp x27, x28, [sp,80]
8793 bl NandcWaitFlashReady
8799 adrp x28, :got:gNandFlashEccBits
8818 ldr x1, [x28, #:got_lo12:gNandFlashEccBits]
8820 csel w20, w20, w0, ne
8822 add w2, w2, w2, lsl 1
8842 adrp x0, :got:gNandFlashEccBits
8845 ldr x0, [x0, #:got_lo12:gNandFlashEccBits]
8847 add w0, w0, w0, lsl 1
8852 csel w20, w20, w0, eq
8855 ldp x19, x20, [sp,16]
8856 ldp x21, x22, [sp,32]
8857 ldp x23, x24, [sp,48]
8858 ldp x25, x26, [sp,64]
8859 ldp x27, x28, [sp,80]
8860 ldp x29, x30, [sp], 96
8862 .size MicronReadRetrial, .-MicronReadRetrial
8864 .global HynixReadRetrial
8865 .type HynixReadRetrial, %function
8867 stp x29, x30, [sp, -112]!
8869 stp x21, x22, [sp,32]
8870 adrp x21, :got:gReadRetryInfo
8872 stp x23, x24, [sp,48]
8873 stp x27, x28, [sp,80]
8874 ldr x0, [x21, #:got_lo12:gReadRetryInfo]
8876 stp x19, x20, [sp,16]
8877 stp x25, x26, [sp,64]
8885 bl NandcWaitFlashReady
8888 adrp x4, :got:gNandFlashEccBits
8893 ldr x2, [x21, #:got_lo12:gReadRetryInfo]
8900 csel w20, w20, wzr, cc
8911 ldr x1, [x4, #:got_lo12:gNandFlashEccBits]
8913 csel w19, w19, w0, ne
8915 add w1, w1, w1, lsl 1
8926 ldr x21, [x21, #:got_lo12:gReadRetryInfo]
8927 adrp x0, :got:gNandFlashEccBits
8930 ldr x0, [x0, #:got_lo12:gNandFlashEccBits]
8932 add w0, w0, w0, lsl 1
8937 csel w19, w19, w0, eq
8940 ldp x19, x20, [sp,16]
8941 ldp x21, x22, [sp,32]
8942 ldp x23, x24, [sp,48]
8943 ldp x25, x26, [sp,64]
8944 ldp x27, x28, [sp,80]
8945 ldp x29, x30, [sp], 112
8947 .size HynixReadRetrial, .-HynixReadRetrial
8949 .global FlashProgPage
8950 .type FlashProgPage, %function
8952 stp x29, x30, [sp, -64]!
8955 stp x19, x20, [sp,16]
8957 adrp x0, :got:gNandParaInfo
8958 stp x21, x22, [sp,32]
8961 ldr x0, [x0, #:got_lo12:gNandParaInfo]
8964 adrp x0, :got:gNandIDBResBlkNum
8965 adrp x1, :got:gBlockPageAlignSize
8966 ldr x0, [x0, #:got_lo12:gNandIDBResBlkNum]
8967 ldr x1, [x1, #:got_lo12:gBlockPageAlignSize]
8973 csel w21, w1, w21, cc
8977 bl NandcWaitFlashReady
8982 bl FlashProgFirstCmd
8991 bl FlashProgSecondCmd
8993 bl NandcWaitFlashReady
9001 ldp x19, x20, [sp,16]
9002 ldp x21, x22, [sp,32]
9003 ldp x29, x30, [sp], 64
9005 .size FlashProgPage, .-FlashProgPage
9007 .global FlashSavePhyInfo
9008 .type FlashSavePhyInfo, %function
9010 stp x29, x30, [sp, -112]!
9012 stp x23, x24, [sp,48]
9013 adrp x23, :got:gFlashPageBuffer0
9014 adrp x24, :got:gFlashPageBuffer1
9015 stp x21, x22, [sp,32]
9016 adrp x22, :got:gpFlashSaveInfo
9017 stp x19, x20, [sp,16]
9018 ldr x20, [x23, #:got_lo12:gFlashPageBuffer0]
9019 ldr x19, [x22, #:got_lo12:gpFlashSaveInfo]
9020 stp x25, x26, [sp,64]
9021 stp x27, x28, [sp,80]
9022 adrp x25, :got:gBlockPageAlignSize
9023 adrp x26, :got:gNandFlashIdbBlockAddr
9025 adrp x27, :got:gNandFlashInfoBlockAddr
9027 adrp x0, :got:gNandFlashIDBEccBits
9028 ldr x0, [x0, #:got_lo12:gNandFlashIDBEccBits]
9037 movk w0, 0x4e41, lsl 16
9040 adrp x1, :got:gNandMaxDie
9042 ldr x1, [x1, #:got_lo12:gNandMaxDie]
9046 adrp x1, :got:gNandIDBResBlkNum
9047 ldr x1, [x1, #:got_lo12:gNandIDBResBlkNum]
9050 adrp x1, :got:gFlashToggleModeEn
9051 ldr x1, [x1, #:got_lo12:gFlashToggleModeEn]
9054 adrp x1, :got:IDByte
9055 ldr x1, [x1, #:got_lo12:IDByte]
9057 adrp x1, :got:DieCsIndex
9061 ldr x1, [x1, #:got_lo12:DieCsIndex]
9063 adrp x1, :got:DieAddrs
9067 ldr x1, [x1, #:got_lo12:DieAddrs]
9069 adrp x1, :got:gNandParaInfo
9073 ldr x1, [x1, #:got_lo12:gNandParaInfo]
9075 adrp x1, :got:gNandOptPara
9079 ldr x1, [x1, #:got_lo12:gNandOptPara]
9081 adrp x1, :got:gReadRetryInfo
9085 ldr x1, [x1, #:got_lo12:gReadRetryInfo]
9095 ldr x0, [x24, #:got_lo12:gFlashPageBuffer1]
9101 ldr x21, [x25, #:got_lo12:gBlockPageAlignSize]
9107 ldr x28, [x23, #:got_lo12:gFlashPageBuffer0]
9124 ldr x2, [x24, #:got_lo12:gFlashPageBuffer1]
9131 ldr x0, [x22, #:got_lo12:gpFlashSaveInfo]
9133 movk w1, 0x4e41, lsl 16
9146 ldr x0, [x26, #:got_lo12:gNandFlashIdbBlockAddr]
9149 ldr x1, [x27, #:got_lo12:gNandFlashInfoBlockAddr]
9164 ldp x19, x20, [sp,16]
9165 ldp x21, x22, [sp,32]
9166 ldp x23, x24, [sp,48]
9167 ldp x25, x26, [sp,64]
9168 ldp x27, x28, [sp,80]
9169 ldp x29, x30, [sp], 112
9171 .size FlashSavePhyInfo, .-FlashSavePhyInfo
9173 .global FlashReadIdbDataRaw
9174 .type FlashReadIdbDataRaw, %function
9175 FlashReadIdbDataRaw:
9176 stp x29, x30, [sp, -128]!
9180 stp x23, x24, [sp,48]
9181 stp x25, x26, [sp,64]
9189 adrp x1, :got:gNandFlashEccBits
9190 stp x19, x20, [sp,16]
9191 stp x21, x22, [sp,32]
9192 ldr x1, [x1, #:got_lo12:gNandFlashEccBits]
9194 stp x27, x28, [sp,80]
9198 adrp x24, :got:gNandIDBResBlkNum
9200 adrp x25, :got:gBlockPageAlignSize
9201 adrp x26, :got:gFlashPageBuffer0
9202 add x21, x21, :lo12:.LC88
9206 ldr x0, [x24, #:got_lo12:gNandIDBResBlkNum]
9217 ldr x20, [x26, #:got_lo12:gFlashPageBuffer0]
9218 ldr x0, [x25, #:got_lo12:gBlockPageAlignSize]
9236 movk w0, 0xfcdc, lsl 16
9246 adrp x0, :got:gNandIDBResBlkNum
9248 ldr x0, [x0, #:got_lo12:gNandIDBResBlkNum]
9251 adrp x1, :got:gNandFlashIdbBlockAddr
9252 ldr x1, [x1, #:got_lo12:gNandFlashIdbBlockAddr]
9268 ldp x19, x20, [sp,16]
9269 ldp x21, x22, [sp,32]
9270 ldp x23, x24, [sp,48]
9271 ldp x25, x26, [sp,64]
9272 ldp x27, x28, [sp,80]
9273 ldp x29, x30, [sp], 128
9275 .size FlashReadIdbDataRaw, .-FlashReadIdbDataRaw
9278 .type FlashInit, %function
9280 stp x29, x30, [sp, -96]!
9282 stp x19, x20, [sp,16]
9285 stp x21, x22, [sp,32]
9286 stp x23, x24, [sp,48]
9287 stp x25, x26, [sp,64]
9288 stp x27, x28, [sp,80]
9290 adrp x20, :got:gNandIDBResBlkNum
9291 adrp x1, :got:gFlashPageBuffer0
9292 adrp x24, :got:gNandIDBResBlkNumSaveInFlash
9293 adrp x23, :got:gFlashToggleModeEn
9294 adrp x22, :got:gNandFlashIDBEccBits
9295 adrp x21, :got:IDByte
9297 ldr x1, [x1, #:got_lo12:gFlashPageBuffer0]
9299 add x26, x26, :lo12:.LC89
9303 adrp x1, :got:gFlashPageBuffer1
9304 ldr x1, [x1, #:got_lo12:gFlashPageBuffer1]
9308 adrp x1, :got:gFlashSpareBuffer
9309 ldr x1, [x1, #:got_lo12:gFlashSpareBuffer]
9313 adrp x1, :got:gFlashProgCheckBuffer
9314 ldr x1, [x1, #:got_lo12:gFlashProgCheckBuffer]
9318 adrp x1, :got:gFlashProgCheckSpareBuffer
9319 ldr x1, [x1, #:got_lo12:gFlashProgCheckSpareBuffer]
9322 ldr x0, [x20, #:got_lo12:gNandIDBResBlkNum]
9324 ldr x0, [x24, #:got_lo12:gNandIDBResBlkNumSaveInFlash]
9326 adrp x1, :got:gNandFlashIdbBlockAddr
9328 ldr x1, [x1, #:got_lo12:gNandFlashIdbBlockAddr]
9330 adrp x1, :got:gBlockPageAlignSize
9331 ldr x1, [x1, #:got_lo12:gBlockPageAlignSize]
9333 adrp x1, :got:FlashDdrTunningReadCount
9334 ldr x0, [x23, #:got_lo12:gFlashToggleModeEn]
9336 ldr x1, [x1, #:got_lo12:FlashDdrTunningReadCount]
9338 adrp x1, :got:g_slc2KBNand
9339 ldr x1, [x1, #:got_lo12:g_slc2KBNand]
9342 ldr x0, [x22, #:got_lo12:gNandFlashIDBEccBits]
9346 ldr x19, [x21, #:got_lo12:IDByte]
9394 ldr x0, [x21, #:got_lo12:IDByte]
9406 ldr x0, [x21, #:got_lo12:IDByte]
9410 adrp x0, :got:gBootDdrMode
9411 ldr x0, [x0, #:got_lo12:gBootDdrMode]
9415 adrp x25, :got:gReadRetryInfo
9418 adrp x19, :got:gpNandParaInfo
9419 adrp x26, :got:gNandRandomizer
9420 ldr x0, [x25, #:got_lo12:gReadRetryInfo]
9422 ldr x27, [x19, #:got_lo12:gpNandParaInfo]
9423 adrp x0, :got:gNandParaInfo
9424 ldr x0, [x0, #:got_lo12:gNandParaInfo]
9426 ldr x0, [x26, #:got_lo12:gNandRandomizer]
9428 bl FlashLoadPhyInfoInRam
9431 adrp x27, :got:gFlashInterfaceMode
9432 ldr x27, [x27, #:got_lo12:gFlashInterfaceMode]
9437 ldr x1, [x23, #:got_lo12:gFlashToggleModeEn]
9440 bl FlashSetInterfaceMode
9446 adrp x0, :got:gBootDdrMode
9447 ldr x0, [x0, #:got_lo12:gBootDdrMode]
9451 bl FlashSetInterfaceMode
9455 adrp x27, :got:gFlashInterfaceMode
9456 ldr x27, [x27, #:got_lo12:gFlashInterfaceMode]
9458 bl FlashSetInterfaceMode
9465 bl FlashSetInterfaceMode
9468 ldr x27, [x19, #:got_lo12:gpNandParaInfo]
9470 add x0, x0, :lo12:.LC90
9474 bl FlashLoadPhyInfoInRam
9480 bl FlashGetReadRetryDefault
9481 adrp x1, :got:gTotleBlock
9483 ldr x1, [x1, #:got_lo12:gTotleBlock]
9498 adrp x0, :got:gFlashInterfaceMode
9499 ldr x0, [x0, #:got_lo12:gFlashInterfaceMode]
9503 adrp x0, :got:gNandcVer
9505 ldr x1, [x0, #:got_lo12:gNandcVer]
9509 ldr x0, [x22, #:got_lo12:gNandFlashIDBEccBits]
9514 adrp x1, :got:gNandFlashInfoBlockAddr
9516 ldr x1, [x1, #:got_lo12:gNandFlashInfoBlockAddr]
9519 ldr x0, [x23, #:got_lo12:gFlashToggleModeEn]
9522 ldr x0, [x27, #:got_lo12:gNandcVer]
9526 ldr x0, [x22, #:got_lo12:gNandFlashIDBEccBits]
9532 ldr x0, [x19, #:got_lo12:gpNandParaInfo]
9533 adrp x3, :got:gpReadRetrial
9534 ldr x26, [x26, #:got_lo12:gNandRandomizer]
9539 adrp x1, :got:gMultiPageReadEn
9541 adrp x26, :got:gFlashInterfaceMode
9542 ldr x1, [x1, #:got_lo12:gMultiPageReadEn]
9544 adrp x1, :got:gMultiPageProgEn
9546 ldr x1, [x1, #:got_lo12:gMultiPageProgEn]
9549 ldr x1, [x26, #:got_lo12:gFlashInterfaceMode]
9551 ldr x6, [x3, #:got_lo12:gpReadRetrial]
9554 adrp x1, :got:g_retryMode
9556 ldr x1, [x1, #:got_lo12:g_retryMode]
9558 adrp x1, :got:g_maxRegNum
9559 ldr x25, [x25, #:got_lo12:gReadRetryInfo]
9560 ldr x2, [x1, #:got_lo12:g_maxRegNum]
9563 adrp x2, :got:g_maxRetryCount
9565 ldr x5, [x2, #:got_lo12:g_maxRetryCount]
9571 adrp x1, :got:HynixReadRetrial
9574 ldr x1, [x1, #:got_lo12:HynixReadRetrial]
9578 adrp x0, :got:gNandcDumpWriteEn
9580 ldr x0, [x0, #:got_lo12:gNandcDumpWriteEn]
9588 adrp x0, :got:MicronReadRetrial
9589 ldr x0, [x0, #:got_lo12:MicronReadRetrial]
9599 adrp x0, :got:ToshibaReadRetrial
9600 ldr x3, [x3, #:got_lo12:gpReadRetrial]
9601 ldr x0, [x0, #:got_lo12:ToshibaReadRetrial]
9604 ldr x1, [x1, #:got_lo12:g_maxRegNum]
9607 ldr x2, [x2, #:got_lo12:g_maxRetryCount]
9621 adrp x5, :got:ToshibaReadRetrial
9622 ldr x3, [x3, #:got_lo12:gpReadRetrial]
9624 ldr x5, [x5, #:got_lo12:ToshibaReadRetrial]
9626 ldr x2, [x2, #:got_lo12:g_maxRetryCount]
9637 ldr x1, [x1, #:got_lo12:g_maxRegNum]
9646 adrp x0, :got:SamsungReadRetrial
9647 ldr x0, [x0, #:got_lo12:SamsungReadRetrial]
9655 bl BuildFlashLsbPageTable
9657 ldr x26, [x26, #:got_lo12:gFlashInterfaceMode]
9661 ldr x23, [x23, #:got_lo12:gFlashToggleModeEn]
9666 adrp x1, :got:gNandFlashInfoBlockAddr
9668 ldr x1, [x1, #:got_lo12:gNandFlashInfoBlockAddr]
9671 adrp x0, :got:gNandcVer
9672 ldr x0, [x0, #:got_lo12:gNandcVer]
9676 ldr x22, [x22, #:got_lo12:gNandFlashIDBEccBits]
9680 ldr x0, [x19, #:got_lo12:gpNandParaInfo]
9684 adrp x0, :got:gNandIDataBuf
9685 ldr x0, [x0, #:got_lo12:gNandIDataBuf]
9686 bl FlashReadIdbDataRaw
9688 ldr x24, [x24, #:got_lo12:gNandIDBResBlkNumSaveInFlash]
9689 ldr x0, [x20, #:got_lo12:gNandIDBResBlkNum]
9696 ldr x0, [x20, #:got_lo12:gNandIDBResBlkNum]
9701 ldr x0, [x20, #:got_lo12:gNandIDBResBlkNum]
9706 movk w0, 0x2, lsl 16
9709 ldr x19, [x19, #:got_lo12:gpNandParaInfo]
9710 adrp x0, :got:gNandPhyInfo
9712 ldr x0, [x0, #:got_lo12:gNandPhyInfo]
9717 ldr x21, [x21, #:got_lo12:IDByte]
9720 adrp x2, :got:gNandMaxDie
9721 ldr x2, [x2, #:got_lo12:gNandMaxDie]
9742 ldr x20, [x20, #:got_lo12:gNandIDBResBlkNum]
9753 ldp x19, x20, [sp,16]
9754 ldp x21, x22, [sp,32]
9755 ldp x23, x24, [sp,48]
9756 ldp x25, x26, [sp,64]
9757 ldp x27, x28, [sp,80]
9758 ldp x29, x30, [sp], 96
9760 .size FlashInit, .-FlashInit
9762 .global FlashPageProgMsbFFData
9763 .type FlashPageProgMsbFFData, %function
9764 FlashPageProgMsbFFData:
9765 stp x29, x30, [sp, -80]!
9766 adrp x3, :got:gpNandParaInfo
9768 stp x21, x22, [sp,32]
9770 ldr x0, [x3, #:got_lo12:gpNandParaInfo]
9771 stp x19, x20, [sp,16]
9772 stp x23, x24, [sp,48]
9773 stp x25, x26, [sp,64]
9790 adrp x24, :got:mlcPageToSlcPageTbl
9792 adrp x26, :got:gFlashPageBuffer1
9794 ldr x0, [x20, #:got_lo12:gpNandParaInfo]
9799 ldr x0, [x24, #:got_lo12:mlcPageToSlcPageTbl]
9800 ldrh w0, [x0,w19,sxtw 1]
9803 ldr x23, [x26, #:got_lo12:gFlashPageBuffer1]
9817 ldp x19, x20, [sp,16]
9818 ldp x21, x22, [sp,32]
9819 ldp x23, x24, [sp,48]
9820 ldp x25, x26, [sp,64]
9821 ldp x29, x30, [sp], 80
9823 .size FlashPageProgMsbFFData, .-FlashPageProgMsbFFData
9825 .global FlashProgPageDp
9826 .type FlashProgPageDp, %function
9828 stp x29, x30, [sp, -80]!
9830 stp x19, x20, [sp,16]
9832 adrp x0, :got:gNandParaInfo
9833 stp x23, x24, [sp,48]
9834 stp x21, x22, [sp,32]
9835 ldr x0, [x0, #:got_lo12:gNandParaInfo]
9843 bl NandcWaitFlashReady
9848 bl FlashProgFirstCmd
9854 adrp x21, :got:gBlockPageAlignSize
9858 bl FlashProgDpFirstCmd
9860 bl NandcWaitFlashReady
9861 ldr x21, [x21, #:got_lo12:gBlockPageAlignSize]
9865 bl FlashProgDpSecondCmd
9876 bl FlashProgSecondCmd
9878 bl NandcWaitFlashReady
9886 ldp x19, x20, [sp,16]
9887 ldp x21, x22, [sp,32]
9888 ldp x23, x24, [sp,48]
9889 ldp x29, x30, [sp], 80
9891 .size FlashProgPageDp, .-FlashProgPageDp
9893 .global FlashReadPages
9894 .type FlashReadPages, %function
9896 stp x29, x30, [sp, -160]!
9898 stp x23, x24, [sp,48]
9900 adrp x0, :got:gNandParaInfo
9901 stp x21, x22, [sp,32]
9902 stp x25, x26, [sp,64]
9903 ldr x0, [x0, #:got_lo12:gNandParaInfo]
9904 adrp x26, :got:gNandRandomizer
9905 stp x27, x28, [sp,80]
9906 stp x19, x20, [sp,16]
9912 ldr x0, [x26, #:got_lo12:gNandRandomizer]
9917 add x0, x0, :lo12:.LC92
9920 add x0, x0, :lo12:.LC93
9923 add x0, x0, :lo12:.LC91
9938 adrp x0, :got:gNandMaxDie
9940 ldr x0, [x0, #:got_lo12:gNandMaxDie]
9948 adrp x0, :got:DieCsIndex
9949 ldr x0, [x0, #:got_lo12:DieCsIndex]
9950 ldrb w20, [x0,w1,uxtw]
9951 adrp x0, :got:gMultiPageReadEn
9952 ldr x0, [x0, #:got_lo12:gMultiPageReadEn]
9956 csel w19, w19, wzr, ne
9957 bl NandcWaitFlashReady
9958 adrp x1, :got:gpNandParaInfo
9960 ldr x0, [x1, #:got_lo12:gpNandParaInfo]
9967 adrp x2, :got:gReadRetryInfo
9969 ldr x2, [x2, #:got_lo12:gReadRetryInfo]
9972 adrp x0, :got:read_retry_cur_offset
9973 ldr x0, [x0, #:got_lo12:read_retry_cur_offset]
9993 adrp x0, :got:gBlockPageAlignSize
9994 ldr x0, [x0, #:got_lo12:gBlockPageAlignSize]
10015 bl NandcReadDontCaseBusyEn
10018 ldr x0, [x26, #:got_lo12:gNandRandomizer]
10026 adrp x0, :got:gBlockPageAlignSize
10028 ldr x0, [x0, #:got_lo12:gBlockPageAlignSize]
10032 bl FlashReadDpDataOutCmd
10045 csel w19, w19, wzr, ne
10049 ldr x0, [x26, #:got_lo12:gNandRandomizer]
10054 adrp x0, :got:gFlashToggleModeEn
10055 ldr x0, [x0, #:got_lo12:gFlashToggleModeEn]
10059 adrp x0, :got:gpReadRetrial
10060 ldr x0, [x0, #:got_lo12:gpReadRetrial]
10065 adrp x0, :got:gpNandc
10070 ldr x0, [x0, #:got_lo12:gpNandc]
10074 bl FlashDdrTunningRead
10078 adrp x1, :got:gNandFlashEccBits
10079 ldr x1, [x1, #:got_lo12:gNandFlashEccBits]
10100 ldr x0, [x0, #:got_lo12:gpNandParaInfo]
10107 adrp x2, :got:gReadRetryInfo
10110 ldr x2, [x2, #:got_lo12:gReadRetryInfo]
10120 bl FlashReadRawPage
10122 adrp x2, :got:gNandFlashEccBits
10126 ldr x2, [x2, #:got_lo12:gNandFlashEccBits]
10135 bl FlashReadRawPage
10141 adrp x0, :got:gNandFlashEccBits
10142 ldr x0, [x0, #:got_lo12:gNandFlashEccBits]
10144 add w0, w0, w0, lsl 1
10147 adrp x0, :got:gpReadRetrial
10148 ldr x0, [x0, #:got_lo12:gpReadRetrial]
10152 csel w28, w28, w0, ne
10167 adrp x2, :got:gNandFlashEccBits
10170 ldr x2, [x2, #:got_lo12:gNandFlashEccBits]
10178 bl rknand_print_hex
10181 adrp x0, :got:gNandFlashEccBits
10182 ldr x0, [x0, #:got_lo12:gNandFlashEccBits]
10184 add w0, w0, w0, lsl 1
10187 adrp x0, :got:gpReadRetrial
10188 ldr x0, [x0, #:got_lo12:gpReadRetrial]
10192 csel w23, w23, w0, ne
10213 bl NandcWaitFlashReady
10217 bl FlashReadDpDataOutCmd
10221 ldp x19, x20, [sp,16]
10222 ldp x21, x22, [sp,32]
10223 ldp x23, x24, [sp,48]
10224 ldp x25, x26, [sp,64]
10225 ldp x27, x28, [sp,80]
10226 ldp x29, x30, [sp], 160
10228 .size FlashReadPages, .-FlashReadPages
10230 .global FlashLoadFactorBbt
10231 .type FlashLoadFactorBbt, %function
10232 FlashLoadFactorBbt:
10233 adrp x0, :got:gNandPhyInfo
10235 stp x29, x30, [sp, -192]!
10237 ldr x0, [x0, #:got_lo12:gNandPhyInfo]
10238 stp x23, x24, [sp,48]
10239 stp x25, x26, [sp,64]
10240 stp x27, x28, [sp,80]
10241 stp x19, x20, [sp,16]
10242 stp x21, x22, [sp,32]
10243 adrp x23, :got:FbbtBlk
10244 adrp x24, :got:gFlashSpareBuffer
10249 ldr x0, [x23, #:got_lo12:FbbtBlk]
10251 add x26, x26, :lo12:.LC94
10256 ldr x0, [x24, #:got_lo12:gFlashSpareBuffer]
10267 adrp x22, :got:gNandMaxDie
10268 ldr x1, [x22, #:got_lo12:gNandMaxDie]
10295 ldr x0, [x24, #:got_lo12:gFlashSpareBuffer]
10306 ldr x0, [x23, #:got_lo12:FbbtBlk]
10308 strh w20, [x0,w19,sxtw 1]
10316 ldr x22, [x22, #:got_lo12:gNandMaxDie]
10321 csel w27, w27, wzr, ne
10325 ldp x19, x20, [sp,16]
10326 ldp x21, x22, [sp,32]
10327 ldp x23, x24, [sp,48]
10328 ldp x25, x26, [sp,64]
10329 ldp x27, x28, [sp,80]
10330 ldp x29, x30, [sp], 192
10332 .size FlashLoadFactorBbt, .-FlashLoadFactorBbt
10334 .global FtlLoadFactoryBbt
10335 .type FtlLoadFactoryBbt, %function
10337 adrp x1, :got:p_sys_data_buf
10338 adrp x0, :got:req_sys
10339 stp x29, x30, [sp, -112]!
10341 ldr x1, [x1, #:got_lo12:p_sys_data_buf]
10342 stp x21, x22, [sp,32]
10343 stp x25, x26, [sp,64]
10344 stp x27, x28, [sp,80]
10345 stp x19, x20, [sp,16]
10346 stp x23, x24, [sp,48]
10347 ldr x2, [x0, #:got_lo12:req_sys]
10348 adrp x20, :got:gBbtInfo
10352 adrp x25, :got:c_ftl_nand_die_num
10354 adrp x1, :got:p_sys_spare_buf
10356 adrp x27, :got:c_ftl_nand_blks_per_die
10358 ldr x1, [x1, #:got_lo12:p_sys_spare_buf]
10361 ldr x20, [x20, #:got_lo12:gBbtInfo]
10363 ldr x0, [x25, #:got_lo12:c_ftl_nand_die_num]
10368 adrp x3, :got:c_ftl_nand_blks_per_die
10369 ldr x0, [x27, #:got_lo12:c_ftl_nand_blks_per_die]
10374 ldr x0, [x3, #:got_lo12:c_ftl_nand_blks_per_die]
10379 ldr x23, [x22, #:got_lo12:req_sys]
10380 madd w1, w21, w1, w19
10407 ldp x19, x20, [sp,16]
10408 ldp x21, x22, [sp,32]
10409 ldp x23, x24, [sp,48]
10410 ldp x25, x26, [sp,64]
10411 ldp x27, x28, [sp,80]
10412 ldp x29, x30, [sp], 112
10414 .size FtlLoadFactoryBbt, .-FtlLoadFactoryBbt
10416 .global FtlGetLastWrittenPage
10417 .type FtlGetLastWrittenPage, %function
10418 FtlGetLastWrittenPage:
10419 stp x29, x30, [sp, -208]!
10422 stp x23, x24, [sp,48]
10423 stp x19, x20, [sp,16]
10424 stp x21, x22, [sp,32]
10425 stp x25, x26, [sp,64]
10428 adrp x1, :got:c_ftl_nand_page_pre_slc_blk
10429 ldr x1, [x1, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
10432 adrp x1, :got:c_ftl_nand_page_pre_blk
10433 ldr x1, [x1, #:got_lo12:c_ftl_nand_page_pre_blk]
10484 ldp x19, x20, [sp,16]
10485 ldp x21, x22, [sp,32]
10486 ldp x23, x24, [sp,48]
10487 ldp x25, x26, [sp,64]
10488 ldp x29, x30, [sp], 208
10490 .size FtlGetLastWrittenPage, .-FtlGetLastWrittenPage
10493 .type FtlLoadBbt, %function
10495 stp x29, x30, [sp, -64]!
10496 adrp x0, :got:p_sys_spare_buf
10498 stp x21, x22, [sp,32]
10499 adrp x21, :got:req_sys
10500 stp x23, x24, [sp,48]
10501 stp x19, x20, [sp,16]
10502 ldr x1, [x21, #:got_lo12:req_sys]
10503 adrp x23, :got:c_ftl_nand_blks_per_die
10506 ldr x0, [x0, #:got_lo12:p_sys_spare_buf]
10510 ldr x0, [x23, #:got_lo12:c_ftl_nand_blks_per_die]
10515 ldr x0, [x23, #:got_lo12:c_ftl_nand_blks_per_die]
10520 ldr x22, [x21, #:got_lo12:req_sys]
10538 ldr x0, [x21, #:got_lo12:req_sys]
10545 adrp x0, :got:gBbtInfo
10547 ldr x0, [x0, #:got_lo12:gBbtInfo]
10558 adrp x19, :got:gBbtInfo
10561 ldr x22, [x19, #:got_lo12:gBbtInfo]
10568 ldr x23, [x21, #:got_lo12:req_sys]
10592 ldr x23, [x19, #:got_lo12:gBbtInfo]
10594 adrp x24, :got:p_sys_data_buf
10596 bl FtlGetLastWrittenPage
10601 tbnz w22, #31, .L1438
10602 ldr x0, [x19, #:got_lo12:gBbtInfo]
10604 ldr x23, [x21, #:got_lo12:req_sys]
10607 orr w0, w22, w0, lsl 10
10609 ldr x0, [x24, #:got_lo12:p_sys_data_buf]
10618 ldr x0, [x19, #:got_lo12:gBbtInfo]
10631 adrp x1, :got:c_ftl_nand_sys_blks_per_plane
10632 ldr x1, [x1, #:got_lo12:c_ftl_nand_sys_blks_per_plane]
10636 adrp x1, :got:c_ftl_nand_blk_pre_plane
10637 ldr x1, [x1, #:got_lo12:c_ftl_nand_blk_pre_plane]
10644 bl FtlSysBlkNumInit
10647 adrp x22, :got:c_ftl_nand_die_num
10648 adrp x23, :got:c_ftl_nand_bbm_buf_size
10650 ldr x0, [x22, #:got_lo12:c_ftl_nand_die_num]
10656 ldr x0, [x23, #:got_lo12:c_ftl_nand_bbm_buf_size]
10657 ldr x3, [x21, #:got_lo12:req_sys]
10659 ldr x0, [x19, #:got_lo12:gBbtInfo]
10661 add x0, x0, x20, lsl 3
10665 add x1, x3, x1, lsl 2
10671 ldp x19, x20, [sp,16]
10672 ldp x21, x22, [sp,32]
10673 ldp x23, x24, [sp,48]
10674 ldp x29, x30, [sp], 64
10676 .size FtlLoadBbt, .-FtlLoadBbt
10678 .global load_l2p_region
10679 .type load_l2p_region, %function
10681 stp x29, x30, [sp, -48]!
10684 stp x21, x22, [sp,32]
10686 adrp x0, :got:p_map_region_ppn_table
10687 stp x19, x20, [sp,16]
10688 ubfiz x2, x21, 2, 16
10689 adrp x20, :got:p_l2p_ram_map
10690 ldr x0, [x0, #:got_lo12:p_map_region_ppn_table]
10694 ldr x20, [x20, #:got_lo12:p_l2p_ram_map]
10695 adrp x2, :got:c_ftl_nand_byte_pre_page
10699 ldr x2, [x2, #:got_lo12:c_ftl_nand_byte_pre_page]
10711 adrp x0, :got:req_sys
10713 ldr x0, [x0, #:got_lo12:req_sys]
10715 ldr x20, [x20, #:got_lo12:p_l2p_ram_map]
10720 adrp x1, :got:p_sys_spare_buf
10721 ldr x1, [x1, #:got_lo12:p_sys_spare_buf]
10734 ldp x19, x20, [sp,16]
10735 ldp x21, x22, [sp,32]
10736 ldp x29, x30, [sp], 48
10738 .size load_l2p_region, .-load_l2p_region
10740 .global FtlVendorPartRead
10741 .type FtlVendorPartRead, %function
10743 stp x29, x30, [sp, -176]!
10745 stp x21, x22, [sp,32]
10747 adrp x0, :got:c_ftl_nand_sec_pre_page_shift
10748 stp x19, x20, [sp,16]
10749 stp x23, x24, [sp,48]
10750 ldr x0, [x0, #:got_lo12:c_ftl_nand_sec_pre_page_shift]
10752 stp x25, x26, [sp,64]
10753 stp x27, x28, [sp,80]
10764 adrp x26, :got:p_vendor_data_buf
10767 adrp x0, :got:p_vendor_region_ppn_table
10768 ldr x0, [x0, #:got_lo12:p_vendor_region_ppn_table]
10770 ldr w1, [x0,w24,uxtw 2]
10771 adrp x0, :got:c_ftl_nand_sec_pre_page
10772 ldr x0, [x0, #:got_lo12:c_ftl_nand_sec_pre_page]
10776 msub w27, w27, w19, w22
10780 csel w19, w0, w19, hi
10783 ldr x5, [x26, #:got_lo12:p_vendor_data_buf]
10784 ubfiz x27, x27, 9, 16
10800 csinv w20, w20, wzr, ne
10812 add x23, x23, x28, sxtw
10816 ldp x19, x20, [sp,16]
10817 ldp x21, x22, [sp,32]
10818 ldp x23, x24, [sp,48]
10819 ldp x25, x26, [sp,64]
10820 ldp x27, x28, [sp,80]
10821 ldp x29, x30, [sp], 176
10823 .size FtlVendorPartRead, .-FtlVendorPartRead
10825 .global FtlLoadEctTbl
10826 .type FtlLoadEctTbl, %function
10828 stp x29, x30, [sp, -32]!
10831 stp x19, x20, [sp,16]
10832 adrp x20, :got:g_ect_tbl_info_size
10833 adrp x19, :got:gp_ect_tbl_info
10834 ldr x20, [x20, #:got_lo12:g_ect_tbl_info_size]
10835 ldr x19, [x19, #:got_lo12:gp_ect_tbl_info]
10838 bl FtlVendorPartRead
10842 movk w0, 0x4254, lsl 16
10847 add x1, x1, :lo12:.LC95
10848 add x0, x0, :lo12:.LC72
10857 ldp x19, x20, [sp,16]
10858 ldp x29, x30, [sp], 32
10860 .size FtlLoadEctTbl, .-FtlLoadEctTbl
10862 .global Ftl_load_ext_data
10863 .type Ftl_load_ext_data, %function
10865 stp x29, x30, [sp, -32]!
10869 stp x19, x20, [sp,16]
10870 adrp x19, :got:g_sys_ext_data
10871 ldr x20, [x19, #:got_lo12:g_sys_ext_data]
10873 bl FtlVendorPartRead
10876 movk w0, 0x4654, lsl 16
10884 movk w0, 0x4654, lsl 16
10887 ldr x0, [x19, #:got_lo12:g_sys_ext_data]
10889 movk w1, 0x4654, lsl 16
10892 adrp x2, :got:g_totle_slc_erase_count
10894 adrp x1, :got:g_totle_write_sector
10896 ldr x1, [x1, #:got_lo12:g_totle_write_sector]
10898 adrp x1, :got:g_totle_read_sector
10900 ldr x1, [x1, #:got_lo12:g_totle_read_sector]
10902 adrp x1, :got:g_totle_gc_page_count
10904 ldr x1, [x1, #:got_lo12:g_totle_gc_page_count]
10906 adrp x1, :got:g_totle_write_page_count
10908 ldr x1, [x1, #:got_lo12:g_totle_write_page_count]
10910 adrp x1, :got:g_totle_read_page_count
10912 ldr x1, [x1, #:got_lo12:g_totle_read_page_count]
10914 adrp x1, :got:g_totle_l2p_write_count
10916 ldr x1, [x1, #:got_lo12:g_totle_l2p_write_count]
10919 ldr x1, [x2, #:got_lo12:g_totle_slc_erase_count]
10921 adrp x1, :got:g_totle_sys_slc_erase_count
10923 ldr x1, [x1, #:got_lo12:g_totle_sys_slc_erase_count]
10925 adrp x1, :got:g_totle_discard_page_count
10927 ldr x1, [x1, #:got_lo12:g_totle_discard_page_count]
10929 adrp x1, :got:g_totle_cache_write_count
10931 ldr x1, [x1, #:got_lo12:g_totle_cache_write_count]
10933 adrp x1, :got:g_max_erase_count
10935 ldr x1, [x1, #:got_lo12:g_max_erase_count]
10937 adrp x1, :got:g_min_erase_count
10938 ldr x1, [x1, #:got_lo12:g_min_erase_count]
10942 adrp x1, :got:g_all_blk_used_slc_mode
10943 ldr x1, [x1, #:got_lo12:g_all_blk_used_slc_mode]
10946 adrp x0, :got:g_SlcPartLbaEndSector
10947 ldr x0, [x0, #:got_lo12:g_SlcPartLbaEndSector]
10950 movk w0, 0x1234, lsl 16
10951 ldr x19, [x19, #:got_lo12:g_sys_ext_data]
10955 adrp x0, :got:g_inkDie_check_enable
10957 ldr x0, [x0, #:got_lo12:g_inkDie_check_enable]
10960 adrp x0, :got:c_mlc_erase_count_value
10961 ldr x2, [x2, #:got_lo12:g_totle_slc_erase_count]
10962 adrp x3, :got:g_totle_avg_erase_count
10963 ldr x0, [x0, #:got_lo12:c_mlc_erase_count_value]
10964 ldr x3, [x3, #:got_lo12:g_totle_avg_erase_count]
10966 adrp x0, :got:g_totle_mlc_erase_count
10967 ldr x0, [x0, #:got_lo12:g_totle_mlc_erase_count]
10970 madd w0, w1, w4, w0
10971 adrp x1, :got:c_ftl_nand_data_blks_per_plane
10972 ldr x1, [x1, #:got_lo12:c_ftl_nand_data_blks_per_plane]
10976 ldp x19, x20, [sp,16]
10977 ldp x29, x30, [sp], 32
10979 .size Ftl_load_ext_data, .-Ftl_load_ext_data
10981 .global FtlScanSysBlk
10982 .type FtlScanSysBlk, %function
10984 stp x29, x30, [sp, -160]!
10987 stp x19, x20, [sp,16]
10988 adrp x19, :got:g_totle_map_block
10989 stp x21, x22, [sp,32]
10990 stp x23, x24, [sp,48]
10991 ldr x0, [x19, #:got_lo12:g_totle_map_block]
10992 adrp x24, :got:p_map_block_ver_table
10993 stp x27, x28, [sp,80]
10994 stp x25, x26, [sp,64]
10995 adrp x28, :got:g_totle_vendor_block
10997 adrp x25, :got:c_ftl_nand_max_map_blks
10998 adrp x21, :got:p_map_block_table
10999 adrp x27, :got:c_ftl_nand_max_vendor_blks
11000 adrp x23, :got:p_vendor_block_ver_table
11001 ldr x0, [x28, #:got_lo12:g_totle_vendor_block]
11003 ldr x20, [x25, #:got_lo12:c_ftl_nand_max_map_blks]
11004 ldr x0, [x24, #:got_lo12:p_map_block_ver_table]
11009 ldr x0, [x21, #:got_lo12:p_map_block_table]
11012 adrp x20, :got:p_vendor_block_table
11016 ldr x22, [x27, #:got_lo12:c_ftl_nand_max_vendor_blks]
11017 ldr x0, [x23, #:got_lo12:p_vendor_block_ver_table]
11023 ldr x0, [x20, #:got_lo12:p_vendor_block_table]
11026 adrp x22, :got:gSysInfo
11030 ldr x0, [x22, #:got_lo12:gSysInfo]
11035 adrp x0, :got:c_ftl_nand_data_blks_per_plane
11039 ldr x0, [x0, #:got_lo12:c_ftl_nand_data_blks_per_plane]
11043 adrp x0, :got:c_ftl_nand_blk_pre_plane
11045 ldr x0, [x0, #:got_lo12:c_ftl_nand_blk_pre_plane]
11050 adrp x25, :got:c_ftl_nand_byte_pre_oob
11054 adrp x0, :got:c_ftl_nand_planes_num
11055 ldr x0, [x0, #:got_lo12:c_ftl_nand_planes_num]
11059 adrp x0, :got:p_plane_order_table
11061 ldr x0, [x0, #:got_lo12:p_plane_order_table]
11062 ldrb w0, [x0,w27,sxtw]
11065 bl FtlBbmIsBadBlock
11067 adrp x1, :got:req_read
11071 ldr x2, [x1, #:got_lo12:req_read]
11076 adrp x2, :got:p_gc_spare_buf
11079 ldr x0, [x25, #:got_lo12:c_ftl_nand_byte_pre_oob]
11080 ldr x2, [x2, #:got_lo12:p_gc_spare_buf]
11087 add x0, x2, x0, sxtw 2
11094 adrp x0, :got:req_read
11099 ldr x0, [x0, #:got_lo12:req_read]
11107 adrp x0, :got:req_read
11108 ldr x6, [x0, #:got_lo12:req_read]
11115 ubfx x25, x0, 10, 16
11136 adrp x0, :got:req_read
11137 ldr x0, [x0, #:got_lo12:req_read]
11142 adrp x0, :got:g_GlobalSysVersion
11143 ldr x0, [x0, #:got_lo12:g_GlobalSysVersion]
11154 adrp x1, :got:g_GlobalSysVersion
11156 ldr x1, [x1, #:got_lo12:g_GlobalSysVersion]
11168 ldr x6, [x23, #:got_lo12:p_vendor_block_ver_table]
11169 ldr x0, [x0, #:got_lo12:c_ftl_nand_max_vendor_blks]
11174 ldr x0, [x0, #:got_lo12:g_totle_vendor_block]
11190 ldr x6, [x24, #:got_lo12:p_map_block_ver_table]
11191 ldr x0, [x0, #:got_lo12:c_ftl_nand_max_map_blks]
11194 ldr x0, [x19, #:got_lo12:g_totle_map_block]
11205 sbfiz x7, x2, 2, 32
11216 ldr x0, [x21, #:got_lo12:p_map_block_table]
11223 bl FtlFreeSysBlkQueueIn
11229 ldr x1, [x19, #:got_lo12:g_totle_map_block]
11237 ldr x1, [x24, #:got_lo12:p_map_block_ver_table]
11247 ldr x5, [x21, #:got_lo12:p_map_block_table]
11254 ldr x0, [x24, #:got_lo12:p_map_block_ver_table]
11258 ldr x0, [x21, #:got_lo12:p_map_block_table]
11260 strh w25, [x0,x8,lsl 1]
11261 tbz w2, #31, .L1546
11268 tbz w2, #31, .L1501
11272 ldr x0, [x19, #:got_lo12:g_totle_map_block]
11273 ldr x1, [x1, #:got_lo12:c_ftl_nand_max_map_blks]
11281 ldr x1, [x19, #:got_lo12:g_totle_map_block]
11286 ldr x0, [x24, #:got_lo12:p_map_block_ver_table]
11288 str w1, [x0,x2,lsl 2]
11289 ldr x0, [x21, #:got_lo12:p_map_block_table]
11292 sbfiz x7, x2, 2, 32
11310 ldr x0, [x20, #:got_lo12:p_vendor_block_table]
11317 bl FtlFreeSysBlkQueueIn
11325 ldr x1, [x1, #:got_lo12:g_totle_vendor_block]
11332 ldr x1, [x23, #:got_lo12:p_vendor_block_ver_table]
11342 ldr x5, [x20, #:got_lo12:p_vendor_block_table]
11349 ldr x0, [x23, #:got_lo12:p_vendor_block_ver_table]
11353 ldr x0, [x20, #:got_lo12:p_vendor_block_table]
11355 strh w25, [x0,x8,lsl 1]
11357 tbnz w2, #31, .L1481
11359 ldr x5, [x0, #:got_lo12:g_totle_vendor_block]
11362 ldr x0, [x0, #:got_lo12:c_ftl_nand_max_vendor_blks]
11372 ldr x0, [x23, #:got_lo12:p_vendor_block_ver_table]
11374 str w1, [x0,x2,lsl 2]
11375 ldr x0, [x20, #:got_lo12:p_vendor_block_table]
11378 strh w25, [x0,x2,lsl 1]
11382 ldr x0, [x0, #:got_lo12:gSysInfo]
11390 bl FtlFreeSysBlkQueueIn
11394 ldr x0, [x0, #:got_lo12:gSysInfo]
11412 bl FtlFreeSysBlkQueueIn
11423 ldr x0, [x21, #:got_lo12:p_map_block_table]
11428 ldr x0, [x20, #:got_lo12:p_vendor_block_table]
11434 ldr x19, [x19, #:got_lo12:g_totle_map_block]
11438 ldr x2, [x2, #:got_lo12:c_ftl_nand_max_map_blks]
11443 ldrh w3, [x1,w0,sxtw 1]
11448 ldr x1, [x1, #:got_lo12:c_ftl_nand_max_map_blks]
11452 ldr x3, [x21, #:got_lo12:p_map_block_table]
11461 strh w7, [x4,x1,lsl 1]
11462 ldr x4, [x24, #:got_lo12:p_map_block_ver_table]
11464 ldr w5, [x4,x5,lsl 2]
11465 str w5, [x4,x1,lsl 2]
11475 ldr x1, [x1, #:got_lo12:g_totle_vendor_block]
11479 ldr x1, [x1, #:got_lo12:c_ftl_nand_max_vendor_blks]
11485 ldrh w3, [x2,w0,sxtw 1]
11489 ldr x1, [x1, #:got_lo12:c_ftl_nand_max_vendor_blks]
11493 ldr x3, [x20, #:got_lo12:p_vendor_block_table]
11502 strh w7, [x4,x1,lsl 1]
11503 ldr x4, [x23, #:got_lo12:p_vendor_block_ver_table]
11505 ldr w5, [x4,x5,lsl 2]
11506 str w5, [x4,x1,lsl 2]
11516 ldp x19, x20, [sp,16]
11517 ldp x21, x22, [sp,32]
11518 ldp x23, x24, [sp,48]
11519 ldp x25, x26, [sp,64]
11520 ldp x27, x28, [sp,80]
11521 ldp x29, x30, [sp], 160
11523 .size FtlScanSysBlk, .-FtlScanSysBlk
11525 .global FtlLoadSysInfo
11526 .type FtlLoadSysInfo, %function
11528 stp x29, x30, [sp, -80]!
11529 adrp x0, :got:p_sys_spare_buf
11531 stp x19, x20, [sp,16]
11532 adrp x20, :got:req_sys
11534 stp x21, x22, [sp,32]
11535 stp x23, x24, [sp,48]
11536 ldr x1, [x20, #:got_lo12:req_sys]
11537 adrp x22, :got:c_ftl_nand_data_blks_per_plane
11538 adrp x21, :got:p_valid_page_count_table
11539 adrp x23, :got:gSysInfo
11541 ldr x0, [x0, #:got_lo12:p_sys_spare_buf]
11544 ldr x1, [x22, #:got_lo12:c_ftl_nand_data_blks_per_plane]
11545 ldr x0, [x21, #:got_lo12:p_valid_page_count_table]
11551 ldr x24, [x23, #:got_lo12:gSysInfo]
11561 adrp x25, :got:p_sys_data_buf
11562 bl FtlGetLastWrittenPage
11567 tbnz w19, #31, .L1565
11568 ldr x0, [x23, #:got_lo12:gSysInfo]
11570 ldr x24, [x20, #:got_lo12:req_sys]
11573 orr w0, w19, w0, lsl 10
11575 ldr x0, [x25, #:got_lo12:p_sys_data_buf]
11584 adrp x24, :got:g_sys_save_data
11585 ldr x20, [x20, #:got_lo12:req_sys]
11587 ldr x19, [x24, #:got_lo12:g_sys_save_data]
11591 ldr x22, [x22, #:got_lo12:c_ftl_nand_data_blks_per_plane]
11592 ldr x21, [x21, #:got_lo12:p_valid_page_count_table]
11601 movk w0, 0x4654, lsl 16
11611 ldr x23, [x23, #:got_lo12:gSysInfo]
11612 adrp x0, :got:c_ftl_nand_die_num
11616 ldr x0, [x0, #:got_lo12:c_ftl_nand_die_num]
11620 adrp x0, :got:g_MaxLbn
11621 adrp x4, :got:c_ftl_nand_sec_pre_page
11623 adrp x20, :got:g_gc_superblock
11624 ldr x0, [x0, #:got_lo12:g_MaxLbn]
11626 adrp x0, :got:c_ftl_nand_page_pre_blk
11627 ldr x0, [x0, #:got_lo12:c_ftl_nand_page_pre_blk]
11629 adrp x0, :got:g_MaxLpn
11630 ldr x0, [x0, #:got_lo12:g_MaxLpn]
11633 adrp x0, :got:g_MaxLbaSector
11634 ldr x4, [x4, #:got_lo12:c_ftl_nand_sec_pre_page]
11635 ldr x0, [x0, #:got_lo12:g_MaxLbaSector]
11639 adrp x1, :got:c_ftl_nand_max_data_blks
11640 adrp x0, :got:gBbtInfo
11641 adrp x4, :got:c_ftl_nand_data_op_blks_per_plane
11642 ldr x1, [x1, #:got_lo12:c_ftl_nand_max_data_blks]
11643 ldr x0, [x0, #:got_lo12:gBbtInfo]
11644 ldr x4, [x4, #:got_lo12:c_ftl_nand_data_op_blks_per_plane]
11648 adrp x1, :got:c_ftl_nand_planes_num
11650 adrp x3, :got:g_active_superblock
11651 ldr x1, [x1, #:got_lo12:c_ftl_nand_planes_num]
11658 ldr x0, [x3, #:got_lo12:g_active_superblock]
11665 ldr x1, [x20, #:got_lo12:g_gc_superblock]
11670 adrp x1, :got:g_buffer_superblock
11672 ldr x4, [x1, #:got_lo12:g_buffer_superblock]
11680 adrp x0, :got:g_gc_temp_superblock
11684 ldr x4, [x0, #:got_lo12:g_gc_temp_superblock]
11693 adrp x4, :got:g_totle_gc_page_count
11695 ldr x4, [x4, #:got_lo12:g_totle_gc_page_count]
11697 adrp x4, :got:g_totle_write_page_count
11698 ldr x4, [x4, #:got_lo12:g_totle_write_page_count]
11700 adrp x4, :got:g_totle_read_page_count
11701 ldr x4, [x4, #:got_lo12:g_totle_read_page_count]
11703 adrp x4, :got:g_totle_l2p_write_count
11704 ldr x4, [x4, #:got_lo12:g_totle_l2p_write_count]
11706 adrp x4, :got:g_totle_mlc_erase_count
11707 ldr x4, [x4, #:got_lo12:g_totle_mlc_erase_count]
11709 adrp x4, :got:g_totle_slc_erase_count
11712 ldr x4, [x4, #:got_lo12:g_totle_slc_erase_count]
11714 adrp x4, :got:g_max_erase_count
11715 ldr x4, [x4, #:got_lo12:g_max_erase_count]
11717 adrp x4, :got:g_totle_cache_write_count
11718 ldr x4, [x4, #:got_lo12:g_totle_cache_write_count]
11720 adrp x4, :got:g_GlobalSysVersion
11721 ldr x4, [x4, #:got_lo12:g_GlobalSysVersion]
11727 adrp x0, :got:g_GlobalDataVersion
11728 ldr x2, [x2, #:got_lo12:g_sys_save_data]
11729 ldr x0, [x0, #:got_lo12:g_GlobalDataVersion]
11739 ldr x0, [x3, #:got_lo12:g_active_superblock]
11742 ldr x0, [x19, #:got_lo12:g_buffer_superblock]
11749 ldr x0, [x21, #:got_lo12:g_gc_temp_superblock]
11756 ldr x0, [x20, #:got_lo12:g_gc_superblock]
11766 ldp x19, x20, [sp,16]
11767 ldp x21, x22, [sp,32]
11768 ldp x23, x24, [sp,48]
11769 ldp x29, x30, [sp], 80
11771 .size FtlLoadSysInfo, .-FtlLoadSysInfo
11773 .global FtlGcScanTempBlk
11774 .type FtlGcScanTempBlk, %function
11776 stp x29, x30, [sp, -128]!
11778 stp x19, x20, [sp,16]
11779 adrp x19, .LANCHOR2
11780 stp x25, x26, [sp,64]
11782 add x0, x19, :lo12:.LANCHOR2
11783 stp x23, x24, [sp,48]
11784 stp x21, x22, [sp,32]
11785 stp x27, x28, [sp,80]
11796 adrp x0, :got:c_ftl_nand_page_pre_blk
11797 ldr x0, [x0, #:got_lo12:c_ftl_nand_page_pre_blk]
11802 bl FtlGcPageVarInit
11807 adrp x24, :got:req_read
11815 adrp x0, :got:c_ftl_nand_planes_num
11816 adrp x1, :got:c_ftl_nand_byte_pre_oob
11820 adrp x11, :got:p_gc_spare_buf
11821 ldr x0, [x0, #:got_lo12:c_ftl_nand_planes_num]
11822 ldr x1, [x1, #:got_lo12:c_ftl_nand_byte_pre_oob]
11825 add x6, x26, x6, lsl 1
11832 ldr x8, [x24, #:got_lo12:req_read]
11834 orr w1, w25, w1, lsl 10
11846 ldr x7, [x11, #:got_lo12:p_gc_spare_buf]
11848 add x1, x7, x1, sxtw 2
11854 ldr x0, [x24, #:got_lo12:req_read]
11865 adrp x0, :got:req_read
11867 ldr x8, [x0, #:got_lo12:req_read]
11888 adrp x0, :got:ftl_gc_temp_power_lost_recovery_flag
11890 ldr x0, [x0, #:got_lo12:ftl_gc_temp_power_lost_recovery_flag]
11899 adrp x0, :got:g_inkDie_check_enable
11900 ldr x0, [x0, #:got_lo12:g_inkDie_check_enable]
11903 adrp x0, :got:p_erase_count_table
11905 ldr x0, [x0, #:got_lo12:p_erase_count_table]
11907 ldrh w0, [x0,x1,lsl 1]
11916 adrp x0, :got:p_valid_page_count_table
11919 ldr x0, [x0, #:got_lo12:p_valid_page_count_table]
11921 strh wzr, [x0,x1,lsl 1]
11923 bl INSERT_FREE_LIST
11926 bl FtlGcPageVarInit
11932 adrp x0, :got:c_ftl_nand_page_pre_blk
11936 ldr x0, [x0, #:got_lo12:c_ftl_nand_page_pre_blk]
11942 add x2, x19, :lo12:.LANCHOR2
11948 ldr x1, [x0, #:got_lo12:c_ftl_nand_page_pre_blk]
11956 add x19, x19, :lo12:.LANCHOR2
11963 bl ftl_sb_update_avl_pages
11966 ldp x19, x20, [sp,16]
11967 ldp x21, x22, [sp,32]
11968 ldp x23, x24, [sp,48]
11969 ldp x25, x26, [sp,64]
11970 ldp x27, x28, [sp,80]
11971 ldp x29, x30, [sp], 128
11973 .size FtlGcScanTempBlk, .-FtlGcScanTempBlk
11975 .global FlashProgPages
11976 .type FlashProgPages, %function
11978 stp x29, x30, [sp, -192]!
11980 stp x19, x20, [sp,16]
11982 adrp x0, :got:gpNandParaInfo
11983 stp x21, x22, [sp,32]
11984 stp x23, x24, [sp,48]
11985 ldr x0, [x0, #:got_lo12:gpNandParaInfo]
11987 stp x25, x26, [sp,64]
11988 stp x27, x28, [sp,80]
11995 adrp x0, :got:gNandParaInfo
11996 ldr x0, [x0, #:got_lo12:gNandParaInfo]
12006 adrp x20, :got:gNandMaxDie
12008 umull x20, w21, w27
12017 adrp x1, :got:gNandMaxDie
12019 ldr x1, [x1, #:got_lo12:gNandMaxDie]
12027 adrp x1, :got:gMultiPageProgEn
12028 adrp x22, :got:gDieOp
12029 ldr x1, [x1, #:got_lo12:gMultiPageProgEn]
12030 ldr x3, [x22, #:got_lo12:gDieOp]
12035 csel w23, w23, wzr, ne
12036 madd x0, x1, x0, x3
12041 adrp x0, :got:gpNandc
12042 ldr x0, [x0, #:got_lo12:gpNandc]
12044 bl NandcIqrWaitFlashReady
12047 bl FlashWaitCmdDone
12049 ldr x2, [x22, #:got_lo12:gDieOp]
12052 madd x0, x1, x0, x2
12063 adrp x0, :got:DieCsIndex
12064 ldr x22, [x22, #:got_lo12:gDieOp]
12065 ldr x0, [x0, #:got_lo12:DieCsIndex]
12069 adrp x0, :got:gNandMaxDie
12071 ldr x0, [x0, #:got_lo12:gNandMaxDie]
12076 bl NandcWaitFlashReady
12080 adrp x0, :got:DieAddrs
12082 ldr x0, [x0, #:got_lo12:DieAddrs]
12083 ldr w0, [x0,x1,lsl 2]
12088 bl FlashWaitReadyEN
12095 adrp x0, :got:read_retry_cur_offset
12096 ldr x0, [x0, #:got_lo12:read_retry_cur_offset]
12097 ldrb w0, [x0,w20,sxtw]
12099 adrp x2, :got:gReadRetryInfo
12102 ldr x2, [x2, #:got_lo12:gReadRetryInfo]
12111 bl FlashProgFirstCmd
12121 bl FlashProgDpFirstCmd
12122 adrp x0, :got:DieAddrs
12124 ldr x0, [x0, #:got_lo12:DieAddrs]
12125 ldr w0, [x0,x1,lsl 2]
12130 bl FlashWaitReadyEN
12131 adrp x0, :got:gBlockPageAlignSize
12133 ldr x0, [x0, #:got_lo12:gBlockPageAlignSize]
12137 bl FlashProgDpSecondCmd
12151 bl FlashProgSecondCmd
12158 adrp x0, :got:gpNandc
12159 ldr x0, [x0, #:got_lo12:gpNandc]
12161 bl NandcIqrWaitFlashReady
12162 adrp x0, :got:gpNandc1
12163 ldr x0, [x0, #:got_lo12:gpNandc1]
12166 adrp x1, :got:gNandc1_enable
12167 ldr x1, [x1, #:got_lo12:gNandc1_enable]
12170 bl NandcIqrWaitFlashReady
12174 ldr x0, [x20, #:got_lo12:gNandMaxDie]
12180 bl FlashWaitCmdDone
12189 add x23, x23, :lo12:.LC99
12190 add x25, x25, :lo12:.LC98
12191 add x27, x27, :lo12:.LC97
12200 add x0, x0, :lo12:.LC96
12209 adrp x20, :got:gFlashProgCheckBuffer
12210 adrp x21, :got:gFlashProgCheckSpareBuffer
12212 ldr x4, [x20, #:got_lo12:gFlashProgCheckBuffer]
12219 ldr x28, [x21, #:got_lo12:gFlashProgCheckSpareBuffer]
12244 ldr x21, [x21, #:got_lo12:gFlashProgCheckSpareBuffer]
12258 ldr x20, [x20, #:got_lo12:gFlashProgCheckBuffer]
12275 ldp x19, x20, [sp,16]
12276 ldp x21, x22, [sp,32]
12277 ldp x23, x24, [sp,48]
12278 ldp x25, x26, [sp,64]
12279 ldp x27, x28, [sp,80]
12280 ldp x29, x30, [sp], 192
12282 .size FlashProgPages, .-FlashProgPages
12284 .type FlashTestBlk.part.20, %function
12285 FlashTestBlk.part.20:
12286 stp x29, x30, [sp, -176]!
12290 stp x19, x20, [sp,16]
12291 adrp x20, :got:gFlashPageBuffer1
12296 ldr x20, [x20, #:got_lo12:gFlashPageBuffer1]
12309 bl FlashEraseBlocks
12320 bl FlashEraseBlocks
12323 ldp x19, x20, [sp,16]
12324 ldp x29, x30, [sp], 176
12326 .size FlashTestBlk.part.20, .-FlashTestBlk.part.20
12328 .global FlashTestBlk
12329 .type FlashTestBlk, %function
12331 adrp x1, :got:gNandFlashIdbBlockAddr
12333 stp x29, x30, [sp, -16]!
12336 ldr x1, [x1, #:got_lo12:gNandFlashIdbBlockAddr]
12341 bl FlashTestBlk.part.20
12343 ldp x29, x30, [sp], 16
12345 .size FlashTestBlk, .-FlashTestBlk
12347 .global FlashMakeFactorBbt
12348 .type FlashMakeFactorBbt, %function
12349 FlashMakeFactorBbt:
12350 stp x29, x30, [sp, -240]!
12352 stp x23, x24, [sp,48]
12353 adrp x23, :got:gNandPhyInfo
12354 adrp x24, :got:gFlashSpareBuffer
12355 stp x19, x20, [sp,16]
12356 stp x21, x22, [sp,32]
12357 ldr x1, [x23, #:got_lo12:gNandPhyInfo]
12358 adrp x22, :got:gpNandParaInfo
12359 stp x25, x26, [sp,64]
12360 stp x27, x28, [sp,80]
12361 adrp x20, :got:gBlockPageAlignSize
12362 ldr x19, [x24, #:got_lo12:gFlashSpareBuffer]
12368 ldr x0, [x22, #:got_lo12:gpNandParaInfo]
12372 ldr x0, [x20, #:got_lo12:gBlockPageAlignSize]
12376 add x0, x0, :lo12:.LC100
12398 adrp x0, :got:gNandMaxDie
12400 ldr x1, [x0, #:got_lo12:gNandMaxDie]
12404 adrp x0, :got:FbbtBlk
12407 ldr x1, [x0, #:got_lo12:FbbtBlk]
12408 ldrh w22, [x1,w19,sxtw 1]
12411 adrp x20, :got:gFlashPageBuffer0
12413 ldr x1, [x1, #:got_lo12:gNandPhyInfo]
12414 ldr x0, [x20, #:got_lo12:gFlashPageBuffer0]
12420 adrp x0, :got:DieCsIndex
12421 ldr x0, [x0, #:got_lo12:DieCsIndex]
12437 adrp x0, :got:DieAddrs
12438 ldr x0, [x0, #:got_lo12:DieAddrs]
12439 ldr w2, [x0,x24,lsl 2]
12441 madd w1, w23, w1, w2
12448 ldr x0, [x0, #:got_lo12:gpNandParaInfo]
12451 adrp x0, :got:DieAddrs
12453 ldr x0, [x0, #:got_lo12:DieAddrs]
12454 ldr w0, [x0,x24,lsl 2]
12459 madd w1, w23, w1, w2
12465 ldr x0, [x0, #:got_lo12:gpNandParaInfo]
12490 ldr x0, [x0, #:got_lo12:gBlockPageAlignSize]
12492 adrp x0, :got:DieAddrs
12493 ldr x0, [x0, #:got_lo12:DieAddrs]
12494 ldr w1, [x0,x24,lsl 2]
12496 madd w1, w23, w2, w1
12497 bl SandiskProgTestBadBlock
12503 add x0, x0, :lo12:.LC101
12506 ldr x0, [x20, #:got_lo12:gFlashPageBuffer0]
12507 ubfx x1, x27, 5, 11
12518 ldr x0, [x0, #:got_lo12:gNandMaxDie]
12529 add x0, x0, :lo12:.LC102
12534 ldr x0, [x0, #:got_lo12:gNandMaxDie]
12540 ldr x0, [x20, #:got_lo12:gFlashPageBuffer0]
12541 ldr x1, [x1, #:got_lo12:gNandPhyInfo]
12549 adrp x0, :got:gNandFlashIdbBlockAddr
12553 adrp x23, :got:gNandIDBResBlkNum
12554 add x27, x27, :lo12:.LC103
12555 ldr x1, [x0, #:got_lo12:gNandFlashIdbBlockAddr]
12558 ldr x0, [x23, #:got_lo12:gNandIDBResBlkNum]
12568 ldr x0, [x20, #:got_lo12:gFlashPageBuffer0]
12569 ubfx x1, x28, 5, 11
12585 ldr x1, [x1, #:got_lo12:gNandFlashIdbBlockAddr]
12591 ldr x0, [x20, #:got_lo12:gFlashPageBuffer0]
12592 ldr x1, [x1, #:got_lo12:gNandPhyInfo]
12602 add x23, x27, :lo12:.LC104
12609 ldr x0, [x20, #:got_lo12:gFlashPageBuffer0]
12612 ubfx x0, x22, 5, 11
12613 ldr w1, [x2,x0,lsl 2]
12622 ldr x1, [x1, #:got_lo12:FbbtBlk]
12623 strh w22, [x1,x24,lsl 1]
12630 ldr x0, [x20, #:got_lo12:gFlashPageBuffer0]
12634 ldr x0, [x0, #:got_lo12:gFlashSpareBuffer]
12640 bl FlashEraseBlocks
12656 ldp x19, x20, [sp,16]
12657 ldp x21, x22, [sp,32]
12658 ldp x23, x24, [sp,48]
12659 ldp x25, x26, [sp,64]
12660 ldp x27, x28, [sp,80]
12661 ldp x29, x30, [sp], 240
12663 .size FlashMakeFactorBbt, .-FlashMakeFactorBbt
12665 .global FtlLowFormatEraseBlock
12666 .type FtlLowFormatEraseBlock, %function
12667 FtlLowFormatEraseBlock:
12668 stp x29, x30, [sp, -128]!
12670 stp x21, x22, [sp,32]
12672 adrp x0, :got:g_cur_erase_blk
12673 stp x19, x20, [sp,16]
12674 stp x23, x24, [sp,48]
12675 ldr x0, [x0, #:got_lo12:g_cur_erase_blk]
12677 stp x25, x26, [sp,64]
12678 stp x27, x28, [sp,80]
12684 adrp x26, :got:p_plane_order_table
12685 adrp x27, :got:c_ftl_nand_byte_pre_oob
12688 adrp x0, :got:c_ftl_nand_planes_num
12689 ldr x0, [x0, #:got_lo12:c_ftl_nand_planes_num]
12693 adrp x1, :got:req_erase
12695 ldr x1, [x1, #:got_lo12:req_erase]
12699 ldr x0, [x26, #:got_lo12:p_plane_order_table]
12700 ldrb w0, [x0,w25,sxtw]
12707 bl FtlBbmIsBadBlock
12709 adrp x1, :got:req_erase
12712 ldr x1, [x1, #:got_lo12:req_erase]
12716 adrp x3, :got:p_io_spare_buf
12720 ldr x0, [x27, #:got_lo12:c_ftl_nand_byte_pre_oob]
12721 ldr x3, [x3, #:got_lo12:p_io_spare_buf]
12728 add x0, x3, x0, sxtw 2
12733 bl IsBlkInVendorPart
12746 adrp x22, :got:req_erase
12750 ldr x0, [x22, #:got_lo12:req_erase]
12752 bl FlashEraseBlocks
12756 ldr x1, [x22, #:got_lo12:req_erase]
12767 bl FtlBbmMapBadBlock
12775 adrp x0, :got:g_inkDie_check_enable
12776 ldr x0, [x0, #:got_lo12:g_inkDie_check_enable]
12779 adrp x0, :got:c_ftl_nand_page_pre_slc_blk
12782 ldr x0, [x0, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
12801 adrp x0, :got:c_ftl_nand_planes_num
12802 ldr x0, [x0, #:got_lo12:c_ftl_nand_planes_num]
12806 ldr x1, [x22, #:got_lo12:req_erase]
12810 adrp x0, :got:p_plane_order_table
12812 ldr x0, [x0, #:got_lo12:p_plane_order_table]
12813 ldrb w0, [x0,w23,sxtw]
12821 bl FtlBbmIsBadBlock
12823 ldr x4, [x22, #:got_lo12:req_erase]
12828 add w3, w24, w2, lsl 10
12833 adrp x0, :got:p_io_data_buf_0
12834 ldr x0, [x0, #:got_lo12:p_io_data_buf_0]
12837 adrp x0, :got:c_ftl_nand_byte_pre_oob
12838 ldr x0, [x0, #:got_lo12:c_ftl_nand_byte_pre_oob]
12843 adrp x2, :got:p_io_data_buf_1
12845 ldr x3, [x2, #:got_lo12:p_io_data_buf_1]
12847 add x0, x3, x0, sxtw 2
12852 bl IsBlkInVendorPart
12861 ldr x0, [x22, #:got_lo12:req_erase]
12871 ldr x1, [x22, #:got_lo12:req_erase]
12883 bl FtlBbmMapBadBlock
12890 bl FtlFreeSysBlkQueueIn
12902 ldr x22, [x22, #:got_lo12:req_erase]
12905 bl FlashEraseBlocks
12908 ldp x19, x20, [sp,16]
12909 ldp x21, x22, [sp,32]
12910 ldp x23, x24, [sp,48]
12911 ldp x25, x26, [sp,64]
12912 ldp x27, x28, [sp,80]
12913 ldp x29, x30, [sp], 128
12915 .size FtlLowFormatEraseBlock, .-FtlLowFormatEraseBlock
12917 .global FtlBbmTblFlush
12918 .type FtlBbmTblFlush, %function
12920 stp x29, x30, [sp, -112]!
12922 stp x21, x22, [sp,32]
12923 adrp x21, :got:p_sys_data_buf
12924 adrp x22, :got:p_sys_spare_buf
12925 stp x19, x20, [sp,16]
12926 adrp x20, :got:req_sys
12928 ldr x0, [x21, #:got_lo12:p_sys_data_buf]
12929 stp x25, x26, [sp,64]
12930 stp x23, x24, [sp,48]
12931 stp x27, x28, [sp,80]
12932 ldr x1, [x20, #:got_lo12:req_sys]
12933 adrp x24, :got:c_ftl_nand_die_num
12935 adrp x25, :got:gBbtInfo
12936 adrp x26, :got:c_ftl_nand_bbm_buf_size
12938 ldr x2, [x22, #:got_lo12:p_sys_spare_buf]
12941 adrp x2, :got:c_ftl_nand_byte_pre_page
12943 ldr x2, [x2, #:got_lo12:c_ftl_nand_byte_pre_page]
12949 ldr x1, [x24, #:got_lo12:c_ftl_nand_die_num]
12951 adrp x23, :got:gBbtInfo
12956 ldr x1, [x26, #:got_lo12:c_ftl_nand_bbm_buf_size]
12958 ldr x1, [x20, #:got_lo12:req_sys]
12962 ldr x1, [x25, #:got_lo12:gBbtInfo]
12963 add x0, x3, x0, sxtw 2
12964 add x1, x1, x19, lsl 3
12969 ldr x0, [x20, #:got_lo12:req_sys]
12976 add x24, x24, :lo12:.LC105
12977 adrp x27, :got:c_ftl_nand_page_pre_slc_blk
12978 adrp x28, :got:req_erase
12980 add x25, x25, :lo12:.LC106
12984 ldr x0, [x23, #:got_lo12:gBbtInfo]
12992 adrp x0, :got:c_ftl_nand_sys_blks_per_plane
12994 ldr x0, [x0, #:got_lo12:c_ftl_nand_sys_blks_per_plane]
12999 ldr x22, [x20, #:got_lo12:req_sys]
13000 ldr x0, [x0, #:got_lo12:p_sys_data_buf]
13004 ldr x0, [x0, #:got_lo12:p_sys_spare_buf]
13008 ldr x19, [x23, #:got_lo12:gBbtInfo]
13013 orr w0, w2, w1, lsl 10
13022 ldr x0, [x27, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
13040 ldr x1, [x28, #:got_lo12:req_erase]
13045 bl FlashEraseBlocks
13053 ldr x1, [x23, #:got_lo12:gBbtInfo]
13057 ldr x1, [x20, #:got_lo12:req_sys]
13071 ldp x19, x20, [sp,16]
13072 ldp x21, x22, [sp,32]
13073 ldp x23, x24, [sp,48]
13074 ldp x25, x26, [sp,64]
13075 ldp x27, x28, [sp,80]
13076 ldp x29, x30, [sp], 112
13078 .size FtlBbmTblFlush, .-FtlBbmTblFlush
13080 .global allocate_data_superblock
13081 .type allocate_data_superblock, %function
13082 allocate_data_superblock:
13083 stp x29, x30, [sp, -128]!
13085 stp x19, x20, [sp,16]
13086 stp x21, x22, [sp,32]
13087 stp x23, x24, [sp,48]
13088 stp x25, x26, [sp,64]
13089 stp x27, x28, [sp,80]
13091 adrp x20, :got:g_num_free_superblocks
13092 adrp x21, :got:g_inkDie_check_enable
13093 adrp x22, :got:g_min_erase_count
13096 adrp x0, :got:g_gc_temp_superblock
13097 ldr x0, [x0, #:got_lo12:g_gc_temp_superblock]
13100 adrp x1, :got:g_in_swl_replace
13101 ldr x0, [x20, #:got_lo12:g_num_free_superblocks]
13102 ldr x4, [x21, #:got_lo12:g_inkDie_check_enable]
13103 ldr x1, [x1, #:got_lo12:g_in_swl_replace]
13109 add w1, w2, w1, lsr 2
13112 ldr x4, [x22, #:got_lo12:g_min_erase_count]
13129 ldr x2, [x21, #:got_lo12:g_inkDie_check_enable]
13130 ldr x0, [x20, #:got_lo12:g_num_free_superblocks]
13135 ldr x2, [x22, #:got_lo12:g_min_erase_count]
13146 adrp x0, :got:p_free_data_block_list_head
13147 ldr x0, [x0, #:got_lo12:p_free_data_block_list_head]
13148 bl List_pop_index_node
13150 ldr x1, [x20, #:got_lo12:g_num_free_superblocks]
13159 adrp x0, :got:c_ftl_nand_planes_num
13160 adrp x6, :got:req_erase
13163 ldr x0, [x0, #:got_lo12:c_ftl_nand_planes_num]
13169 adrp x0, :got:p_valid_page_count_table
13170 ubfiz x1, x26, 1, 16
13172 ldr x0, [x0, #:got_lo12:p_valid_page_count_table]
13177 ldr x1, [x6, #:got_lo12:req_erase]
13179 madd x1, x0, x3, x4
13182 add x1, x19, x0, lsl 1
13196 adrp x23, :got:req_erase
13198 adrp x1, :got:g_active_superblock
13200 adrp x0, :got:p_erase_count_table
13201 ldr x1, [x1, #:got_lo12:g_active_superblock]
13204 ldr x2, [x21, #:got_lo12:g_inkDie_check_enable]
13207 ldr x2, [x0, #:got_lo12:p_erase_count_table]
13209 ldrh w2, [x2,x27,lsl 1]
13215 adrp x1, :got:c_mlc_erase_count_value
13216 adrp x3, :got:g_totle_mlc_erase_count
13217 adrp x2, :got:g_totle_slc_erase_count
13218 ldr x6, [x0, #:got_lo12:p_erase_count_table]
13225 ldr x7, [x1, #:got_lo12:c_mlc_erase_count_value]
13230 ldr x6, [x3, #:got_lo12:g_totle_mlc_erase_count]
13238 ldr x6, [x2, #:got_lo12:g_totle_slc_erase_count]
13244 ldr x0, [x0, #:got_lo12:p_erase_count_table]
13247 adrp x0, :got:g_max_erase_count
13248 ldr x0, [x0, #:got_lo12:g_max_erase_count]
13254 ldr x1, [x1, #:got_lo12:c_mlc_erase_count_value]
13255 adrp x5, :got:g_totle_avg_erase_count
13256 ldr x3, [x3, #:got_lo12:g_totle_mlc_erase_count]
13257 ldr x2, [x2, #:got_lo12:g_totle_slc_erase_count]
13261 ldr x5, [x5, #:got_lo12:g_totle_avg_erase_count]
13262 madd w0, w1, w3, w0
13263 adrp x1, :got:c_ftl_nand_data_blks_per_plane
13265 ldr x1, [x1, #:got_lo12:c_ftl_nand_data_blks_per_plane]
13269 adrp x0, :got:gp_ect_tbl_info
13270 ldr x0, [x0, #:got_lo12:gp_ect_tbl_info]
13279 ldr x1, [x23, #:got_lo12:req_erase]
13281 madd x1, x0, x3, x1
13288 ldr x0, [x23, #:got_lo12:req_erase]
13292 bl FlashEraseBlocks
13298 ldr x2, [x23, #:got_lo12:req_erase]
13312 bl FtlBbmMapBadBlock
13313 add x0, x19, x28, lsl 1
13327 bl update_multiplier_value
13331 adrp x0, :got:p_valid_page_count_table
13333 ldr x0, [x0, #:got_lo12:p_valid_page_count_table]
13339 bl INSERT_DATA_LIST
13342 adrp x2, :got:c_ftl_nand_page_pre_blk
13343 ldr x2, [x2, #:got_lo12:c_ftl_nand_page_pre_blk]
13349 adrp x2, :got:g_GlobalSysVersion
13352 ldr x2, [x2, #:got_lo12:g_GlobalSysVersion]
13357 ldr x0, [x0, #:got_lo12:p_valid_page_count_table]
13360 strh w1, [x0,x2,lsl 1]
13362 ldp x19, x20, [sp,16]
13363 ldp x21, x22, [sp,32]
13364 ldp x23, x24, [sp,48]
13365 ldp x25, x26, [sp,64]
13366 ldp x27, x28, [sp,80]
13367 ldp x29, x30, [sp], 128
13369 .size allocate_data_superblock, .-allocate_data_superblock
13371 .global FtlGcFreeBadSuperBlk
13372 .type FtlGcFreeBadSuperBlk, %function
13373 FtlGcFreeBadSuperBlk:
13374 stp x29, x30, [sp, -112]!
13376 stp x21, x22, [sp,32]
13377 adrp x21, :got:g_gc_bad_block_temp_num
13378 stp x23, x24, [sp,48]
13380 ldr x0, [x21, #:got_lo12:g_gc_bad_block_temp_num]
13381 stp x19, x20, [sp,16]
13382 stp x25, x26, [sp,64]
13383 stp x27, x28, [sp,80]
13388 adrp x23, :got:c_ftl_nand_planes_num
13389 adrp x25, :got:p_plane_order_table
13390 adrp x26, :got:g_gc_bad_block_temp_tbl
13391 add x22, x22, :lo12:.LC107
13393 ldr x0, [x23, #:got_lo12:c_ftl_nand_planes_num]
13397 ldr x0, [x25, #:got_lo12:p_plane_order_table]
13400 ldrb w0, [x0,w20,sxtw]
13404 ldr x28, [x21, #:got_lo12:g_gc_bad_block_temp_num]
13408 ldr x0, [x26, #:got_lo12:g_gc_bad_block_temp_tbl]
13409 adrp x4, :got:g_gc_bad_block_temp_tbl
13410 ldrh w0, [x0,w19,sxtw 1]
13418 bl FtlBbmMapBadBlock
13426 ldr x1, [x4, #:got_lo12:g_gc_bad_block_temp_tbl]
13428 ldrh w5, [x1,w0,sxtw 1]
13429 strh w5, [x1,w3,sxtw 1]
13433 ldr x0, [x21, #:got_lo12:g_gc_bad_block_temp_num]
13445 bl FtlGcReFreshBadBlk
13448 ldp x19, x20, [sp,16]
13449 ldp x21, x22, [sp,32]
13450 ldp x23, x24, [sp,48]
13451 ldp x25, x26, [sp,64]
13452 ldp x27, x28, [sp,80]
13453 ldp x29, x30, [sp], 112
13455 .size FtlGcFreeBadSuperBlk, .-FtlGcFreeBadSuperBlk
13457 .global update_vpc_list
13458 .type update_vpc_list, %function
13460 stp x29, x30, [sp, -32]!
13464 adrp x0, :got:p_valid_page_count_table
13465 ubfiz x1, x19, 1, 16
13466 ldr x0, [x0, #:got_lo12:p_valid_page_count_table]
13470 adrp x0, :got:g_gc_superblock
13471 ldr x0, [x0, #:got_lo12:g_gc_superblock]
13479 adrp x0, :got:g_active_superblock
13480 ldr x0, [x0, #:got_lo12:g_active_superblock]
13485 adrp x0, :got:g_buffer_superblock
13486 ldr x0, [x0, #:got_lo12:g_buffer_superblock]
13491 adrp x0, :got:g_gc_temp_superblock
13492 ldr x0, [x0, #:got_lo12:g_gc_temp_superblock]
13498 adrp x0, :got:p_data_block_list_head
13500 ldr x0, [x0, #:got_lo12:p_data_block_list_head]
13501 bl List_remove_node
13502 adrp x0, :got:g_num_data_superblocks
13503 ldr x0, [x0, #:got_lo12:g_num_data_superblocks]
13508 bl free_data_superblock
13510 bl FtlGcFreeBadSuperBlk
13515 bl List_update_data_list
13519 ldp x29, x30, [sp], 32
13521 .size update_vpc_list, .-update_vpc_list
13523 .global decrement_vpc_count
13524 .type decrement_vpc_count, %function
13525 decrement_vpc_count:
13526 stp x29, x30, [sp, -48]!
13533 adrp x0, :got:p_valid_page_count_table
13534 ubfiz x2, x1, 1, 16
13535 ldr x0, [x0, #:got_lo12:p_valid_page_count_table]
13541 add x0, x0, :lo12:.LC108
13548 adrp x19, :got:g_tmp_data_superblock_id
13550 ldr x19, [x19, #:got_lo12:g_tmp_data_superblock_id]
13571 ldp x29, x30, [sp], 48
13573 .size decrement_vpc_count, .-decrement_vpc_count
13575 .global FtlSlcSuperblockCheck
13576 .type FtlSlcSuperblockCheck, %function
13577 FtlSlcSuperblockCheck:
13578 stp x29, x30, [sp, -48]!
13580 stp x19, x20, [sp,16]
13581 stp x21, x22, [sp,32]
13587 adrp x21, :got:mlcPageToSlcPageTbl
13589 adrp x22, :got:c_ftl_nand_planes_num
13590 ldrh w0, [x19,x0,lsl 1]
13599 ldr x1, [x22, #:got_lo12:c_ftl_nand_planes_num]
13610 ldrh w0, [x19,x0,lsl 1]
13616 ldr x0, [x21, #:got_lo12:mlcPageToSlcPageTbl]
13618 ldrh w0, [x0,w1,sxtw 1]
13625 bl decrement_vpc_count
13633 ldp x19, x20, [sp,16]
13634 ldp x21, x22, [sp,32]
13635 ldp x29, x30, [sp], 48
13637 .size FtlSlcSuperblockCheck, .-FtlSlcSuperblockCheck
13639 .global get_new_active_ppa
13640 .type get_new_active_ppa, %function
13641 get_new_active_ppa:
13642 stp x29, x30, [sp, -64]!
13644 stp x19, x20, [sp,16]
13645 stp x21, x22, [sp,32]
13646 stp x23, x24, [sp,48]
13651 adrp x21, :got:c_ftl_nand_planes_num
13652 adrp x23, :got:mlcPageToSlcPageTbl
13654 ldrh w0, [x19,x0,lsl 1]
13657 adrp x22, :got:c_ftl_nand_planes_num
13664 ldr x1, [x21, #:got_lo12:c_ftl_nand_planes_num]
13675 ldrh w0, [x19,x0,lsl 1]
13681 ldr x1, [x23, #:got_lo12:mlcPageToSlcPageTbl]
13683 ldrh w1, [x1,w2,sxtw 1]
13690 bl decrement_vpc_count
13696 adrp x24, :got:mlcPageToSlcPageTbl
13697 orr w20, w20, w0, lsl 10
13702 ldr x0, [x22, #:got_lo12:c_ftl_nand_planes_num]
13715 add x0, x19, x1, sxtw 1
13723 ldr x0, [x24, #:got_lo12:mlcPageToSlcPageTbl]
13725 ldrh w0, [x0,w1,sxtw 1]
13733 bl decrement_vpc_count
13737 ldp x19, x20, [sp,16]
13738 ldp x21, x22, [sp,32]
13739 ldp x23, x24, [sp,48]
13740 ldp x29, x30, [sp], 64
13742 .size get_new_active_ppa, .-get_new_active_ppa
13744 .global FtlVpcTblFlush
13745 .type FtlVpcTblFlush, %function
13747 stp x29, x30, [sp, -96]!
13749 stp x23, x24, [sp,48]
13750 adrp x23, :got:p_sys_data_buf
13751 adrp x24, :got:p_sys_spare_buf
13752 stp x21, x22, [sp,32]
13753 adrp x21, :got:req_sys
13754 adrp x22, :got:gSysInfo
13755 ldr x0, [x23, #:got_lo12:p_sys_data_buf]
13756 stp x25, x26, [sp,64]
13757 stp x19, x20, [sp,16]
13758 stp x27, x28, [sp,80]
13759 ldr x26, [x21, #:got_lo12:req_sys]
13760 adrp x19, :got:g_sys_save_data
13762 adrp x25, :got:g_GlobalSysVersion
13765 ldr x0, [x24, #:got_lo12:p_sys_spare_buf]
13768 ldr x0, [x22, #:got_lo12:gSysInfo]
13778 movk w1, 0x4654, lsl 16
13780 ldr x19, [x19, #:got_lo12:g_sys_save_data]
13784 adrp x0, :got:c_ftl_nand_die_num
13785 movk w1, 0x5000, lsl 16
13787 ldr x0, [x0, #:got_lo12:c_ftl_nand_die_num]
13790 adrp x0, :got:g_active_superblock
13791 ldr x0, [x0, #:got_lo12:g_active_superblock]
13798 adrp x0, :got:g_buffer_superblock
13799 orr w1, w2, w1, lsl 6
13801 ldr x0, [x0, #:got_lo12:g_buffer_superblock]
13808 adrp x0, :got:g_gc_temp_superblock
13809 orr w1, w2, w1, lsl 6
13811 ldr x0, [x0, #:got_lo12:g_gc_temp_superblock]
13818 adrp x0, :got:g_totle_mlc_erase_count
13819 orr w1, w2, w1, lsl 6
13821 adrp x2, :got:c_ftl_nand_byte_pre_page
13823 ldr x0, [x0, #:got_lo12:g_totle_mlc_erase_count]
13826 ldr x0, [x25, #:got_lo12:g_GlobalSysVersion]
13829 adrp x0, :got:g_GlobalDataVersion
13830 ldr x0, [x0, #:got_lo12:g_GlobalDataVersion]
13834 ldr x2, [x2, #:got_lo12:c_ftl_nand_byte_pre_page]
13841 adrp x2, :got:c_ftl_nand_data_blks_per_plane
13842 adrp x1, :got:p_valid_page_count_table
13844 adrp x26, :got:c_ftl_nand_page_pre_slc_blk
13845 ldr x2, [x2, #:got_lo12:c_ftl_nand_data_blks_per_plane]
13847 ldr x1, [x1, #:got_lo12:p_valid_page_count_table]
13853 bl FtlUpdateVaildLpn
13855 ldr x0, [x23, #:got_lo12:p_sys_data_buf]
13856 ldr x27, [x21, #:got_lo12:req_sys]
13859 ldr x0, [x24, #:got_lo12:p_sys_spare_buf]
13862 ldr x19, [x22, #:got_lo12:gSysInfo]
13865 orr w0, w1, w0, lsl 10
13872 ldr x0, [x26, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
13882 bl FtlFreeSysBlkQueueOut
13884 ldr x2, [x25, #:got_lo12:g_GlobalSysVersion]
13889 ubfiz w2, w0, 10, 16
13899 ldr x0, [x22, #:got_lo12:gSysInfo]
13904 ldr x2, [x21, #:got_lo12:req_sys]
13910 adrp x1, :got:c_ftl_nand_page_pre_slc_blk
13911 ldr x1, [x1, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
13924 bl FtlFreeSysBlkQueueIn
13927 ldp x19, x20, [sp,16]
13928 ldp x21, x22, [sp,32]
13929 ldp x23, x24, [sp,48]
13930 ldp x25, x26, [sp,64]
13931 ldp x27, x28, [sp,80]
13932 ldp x29, x30, [sp], 96
13934 .size FtlVpcTblFlush, .-FtlVpcTblFlush
13936 .global ftl_map_blk_gc
13937 .type ftl_map_blk_gc, %function
13939 stp x29, x30, [sp, -96]!
13941 stp x19, x20, [sp,16]
13942 stp x21, x22, [sp,32]
13943 stp x23, x24, [sp,48]
13944 stp x25, x26, [sp,64]
13945 stp x27, x28, [sp,80]
13947 adrp x22, :got:c_ftl_nand_page_pre_slc_blk
13950 bl ftl_free_no_use_map_blk
13956 ubfiz x1, x0, 1, 16
13968 ldr x0, [x22, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
13973 bl ftl_map_blk_alloc_new_blk
13976 adrp x25, :got:req_sys
13977 adrp x26, :got:p_sys_data_buf_1
13978 adrp x27, :got:p_sys_spare_buf
13983 ubfiz x28, x20, 2, 16
13985 cmp w23, w0, lsr 10
13987 ldr x0, [x26, #:got_lo12:p_sys_data_buf_1]
13989 ldr x21, [x25, #:got_lo12:req_sys]
13993 ldr x0, [x27, #:got_lo12:p_sys_spare_buf]
14017 bl FtlFreeSysBlkQueueIn
14020 ldr x22, [x22, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
14026 bl ftl_map_blk_alloc_new_blk
14029 ldp x19, x20, [sp,16]
14030 ldp x21, x22, [sp,32]
14031 ldp x23, x24, [sp,48]
14032 ldp x25, x26, [sp,64]
14033 ldp x27, x28, [sp,80]
14034 ldp x29, x30, [sp], 96
14036 .size ftl_map_blk_gc, .-ftl_map_blk_gc
14038 .global Ftl_write_map_blk_to_last_page
14039 .type Ftl_write_map_blk_to_last_page, %function
14040 Ftl_write_map_blk_to_last_page:
14041 stp x29, x30, [sp, -64]!
14044 stp x19, x20, [sp,16]
14045 stp x21, x22, [sp,32]
14056 bl FtlFreeSysBlkQueueOut
14065 ubfiz x0, x0, 1, 16
14067 adrp x21, :got:p_sys_data_buf
14069 adrp x20, :got:req_sys
14070 ldr x0, [x20, #:got_lo12:req_sys]
14071 orr w1, w1, w22, lsl 10
14073 ldr x3, [x21, #:got_lo12:p_sys_data_buf]
14076 adrp x1, :got:p_sys_spare_buf
14077 ldr x1, [x1, #:got_lo12:p_sys_spare_buf]
14086 adrp x0, :got:c_ftl_nand_page_pre_slc_blk
14089 ldr x0, [x0, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
14100 ubfiz x4, x1, 2, 16
14102 cmp w22, w0, lsr 10
14104 ldr x3, [x21, #:got_lo12:p_sys_data_buf]
14108 ubfiz x0, x2, 3, 16
14120 ldr x0, [x20, #:got_lo12:req_sys]
14132 ldp x19, x20, [sp,16]
14133 ldp x21, x22, [sp,32]
14134 ldp x29, x30, [sp], 64
14136 .size Ftl_write_map_blk_to_last_page, .-Ftl_write_map_blk_to_last_page
14138 .global FtlMapWritePage
14139 .type FtlMapWritePage, %function
14141 stp x29, x30, [sp, -96]!
14143 stp x21, x22, [sp,32]
14144 stp x23, x24, [sp,48]
14145 stp x25, x26, [sp,64]
14146 stp x19, x20, [sp,16]
14147 stp x27, x28, [sp,80]
14151 adrp x23, :got:g_totle_l2p_write_count
14152 adrp x24, :got:c_ftl_nand_page_pre_slc_blk
14154 adrp x26, :got:req_sys
14155 adrp x27, :got:p_sys_spare_buf
14157 ldr x1, [x23, #:got_lo12:g_totle_l2p_write_count]
14161 ldr x0, [x24, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
14172 bl Ftl_write_map_blk_to_last_page
14177 ldr x20, [x26, #:got_lo12:req_sys]
14178 ldrh w28, [x0,x1,lsl 1]
14182 orr w0, w0, w28, lsl 10
14184 ldr x0, [x27, #:got_lo12:p_sys_spare_buf]
14211 str w1, [x0,w21,uxtw 2]
14213 ldp x19, x20, [sp,16]
14214 ldp x21, x22, [sp,32]
14215 ldp x23, x24, [sp,48]
14216 ldp x25, x26, [sp,64]
14217 ldp x27, x28, [sp,80]
14218 ldp x29, x30, [sp], 96
14220 .size FtlMapWritePage, .-FtlMapWritePage
14222 .global flush_l2p_region
14223 .type flush_l2p_region, %function
14225 stp x29, x30, [sp, -32]!
14227 stp x19, x20, [sp,16]
14228 adrp x20, :got:p_l2p_ram_map
14229 ubfiz x19, x0, 4, 16
14230 adrp x0, :got:gL2pMapInfo
14231 ldr x20, [x20, #:got_lo12:p_l2p_ram_map]
14232 ldr x0, [x0, #:got_lo12:gL2pMapInfo]
14241 and w0, w0, 2147483647
14244 ldp x19, x20, [sp,16]
14245 ldp x29, x30, [sp], 32
14247 .size flush_l2p_region, .-flush_l2p_region
14250 .type log2phys, %function
14252 stp x29, x30, [sp, -80]!
14255 stp x21, x22, [sp,32]
14257 adrp x1, :got:c_ftl_nand_sec_pre_page_shift
14258 stp x23, x24, [sp,48]
14259 stp x19, x20, [sp,16]
14260 ldr x1, [x1, #:got_lo12:c_ftl_nand_sec_pre_page_shift]
14261 adrp x23, :got:p_l2p_ram_map
14264 ldr x1, [x23, #:got_lo12:p_l2p_ram_map]
14274 adrp x0, :got:c_ftl_nand_l2pmap_ram_region_num
14275 ldr x0, [x0, #:got_lo12:c_ftl_nand_l2pmap_ram_region_num]
14282 add x2, x1, x4, lsl 4
14288 ldr x0, [x23, #:got_lo12:p_l2p_ram_map]
14290 add x1, x1, x19, lsl 4
14292 ldr w0, [x0,x24,lsl 2]
14296 ldr x2, [x23, #:got_lo12:p_l2p_ram_map]
14302 str w3, [x1,x24,lsl 2]
14306 orr w1, w1, -2147483648
14308 adrp x0, :got:g_l2p_last_update_region_id
14309 ldr x0, [x0, #:got_lo12:g_l2p_last_update_region_id]
14312 ldr x23, [x23, #:got_lo12:p_l2p_ram_map]
14314 add x19, x0, x19, lsl 4
14322 bl select_l2p_ram_region
14324 ldr x3, [x23, #:got_lo12:p_l2p_ram_map]
14325 ubfiz x2, x19, 4, 16
14334 tbz w2, #31, .L1915
14336 bl flush_l2p_region
14344 ldp x19, x20, [sp,16]
14345 ldp x21, x22, [sp,32]
14346 ldp x23, x24, [sp,48]
14347 ldp x29, x30, [sp], 80
14349 .size log2phys, .-log2phys
14351 .global FtlReUsePrevPpa
14352 .type FtlReUsePrevPpa, %function
14354 stp x29, x30, [sp, -80]!
14356 stp x19, x20, [sp,16]
14359 stp x21, x22, [sp,32]
14362 bl P2V_block_in_plane
14364 adrp x0, :got:p_valid_page_count_table
14365 ubfiz x22, x4, 1, 16
14367 ldr x1, [x0, #:got_lo12:p_valid_page_count_table]
14371 adrp x0, :got:p_free_data_block_list_head
14372 ldr x2, [x0, #:got_lo12:p_free_data_block_list_head]
14375 adrp x2, :got:g_num_free_superblocks
14376 mov x6, -6148914691236517206
14378 ldr x3, [x2, #:got_lo12:g_num_free_superblocks]
14381 adrp x3, :got:p_data_block_list_table
14382 ldr x3, [x3, #:got_lo12:p_data_block_list_table]
14386 madd x19, x6, x19, x19
14394 ldr x0, [x0, #:got_lo12:p_free_data_block_list_head]
14396 bl List_remove_node
14397 ldr x0, [x21, #:got_lo12:g_num_free_superblocks]
14402 bl INSERT_DATA_LIST
14403 ldr x0, [x23, #:got_lo12:p_valid_page_count_table]
14426 ldp x19, x20, [sp,16]
14427 ldp x21, x22, [sp,32]
14428 ldp x29, x30, [sp], 80
14430 .size FtlReUsePrevPpa, .-FtlReUsePrevPpa
14432 .global FtlMapTblRecovery
14433 .type FtlMapTblRecovery, %function
14435 stp x29, x30, [sp, -144]!
14438 stp x25, x26, [sp,64]
14440 stp x19, x20, [sp,16]
14441 stp x21, x22, [sp,32]
14442 stp x23, x24, [sp,48]
14443 stp x27, x28, [sp,80]
14445 adrp x20, :got:p_sys_data_buf
14447 adrp x19, :got:req_sys
14455 ldr x0, [x20, #:got_lo12:p_sys_data_buf]
14456 ldr x1, [x19, #:got_lo12:req_sys]
14459 adrp x0, :got:p_sys_spare_buf
14460 ldr x0, [x0, #:got_lo12:p_sys_spare_buf]
14484 bl FtlGetLastWrittenPage
14489 ldr w0, [x25,x28,lsl 2]
14492 ldr x0, [x19, #:got_lo12:req_sys]
14499 ldr x24, [x19, #:got_lo12:req_sys]
14501 orr w0, w22, w0, lsl 10
14515 ubfiz x1, x1, 2, 16
14525 bl ftl_free_no_use_map_blk
14526 adrp x0, :got:c_ftl_nand_page_pre_slc_blk
14528 ldr x0, [x0, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
14533 bl ftl_map_blk_alloc_new_blk
14536 ldr x0, [x20, #:got_lo12:p_sys_data_buf]
14538 ldr x6, [x19, #:got_lo12:req_sys]
14543 adrp x0, :got:c_ftl_nand_page_pre_slc_blk
14545 ldr x0, [x0, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
14548 orr w0, w0, w1, lsl 10
14555 adrp x8, :got:c_ftl_nand_page_pre_slc_blk
14569 ldr x1, [x8, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
14574 ldr x1, [x20, #:got_lo12:p_sys_data_buf]
14575 sbfiz x2, x0, 3, 32
14581 ubfiz x1, x1, 2, 16
14590 ldr x0, [x19, #:got_lo12:req_sys]
14594 ldr x0, [x8, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
14600 ldr x7, [x19, #:got_lo12:req_sys]
14603 orr w0, w6, w0, lsl 10
14622 ubfiz x1, x1, 2, 16
14643 ldp x19, x20, [sp,16]
14644 ldp x21, x22, [sp,32]
14645 ldp x23, x24, [sp,48]
14646 ldp x25, x26, [sp,64]
14647 ldp x27, x28, [sp,80]
14648 ldp x29, x30, [sp], 144
14650 .size FtlMapTblRecovery, .-FtlMapTblRecovery
14652 .global FtlLoadVonderInfo
14653 .type FtlLoadVonderInfo, %function
14655 adrp x1, :got:c_ftl_nand_max_vendor_blks
14656 adrp x0, :got:gVendorBlkInfo
14657 stp x29, x30, [sp, -16]!
14659 ldr x1, [x1, #:got_lo12:c_ftl_nand_max_vendor_blks]
14660 ldr x0, [x0, #:got_lo12:gVendorBlkInfo]
14665 adrp x1, :got:g_totle_vendor_block
14666 ldr x1, [x1, #:got_lo12:g_totle_vendor_block]
14669 adrp x1, :got:c_ftl_nand_vendor_region_num
14670 ldr x1, [x1, #:got_lo12:c_ftl_nand_vendor_region_num]
14673 adrp x1, :got:p_vendor_block_table
14674 ldr x1, [x1, #:got_lo12:p_vendor_block_table]
14677 adrp x1, :got:p_vendor_block_ver_table
14678 ldr x1, [x1, #:got_lo12:p_vendor_block_ver_table]
14681 adrp x1, :got:p_vendor_block_valid_page_count
14682 ldr x1, [x1, #:got_lo12:p_vendor_block_valid_page_count]
14685 adrp x1, :got:p_vendor_region_ppn_table
14686 ldr x1, [x1, #:got_lo12:p_vendor_region_ppn_table]
14689 bl FtlMapTblRecovery
14691 ldp x29, x30, [sp], 16
14693 .size FtlLoadVonderInfo, .-FtlLoadVonderInfo
14695 .global FtlLoadMapInfo
14696 .type FtlLoadMapInfo, %function
14698 stp x29, x30, [sp, -16]!
14701 adrp x0, :got:gL2pMapInfo
14702 ldr x0, [x0, #:got_lo12:gL2pMapInfo]
14703 bl FtlMapTblRecovery
14705 ldp x29, x30, [sp], 16
14707 .size FtlLoadMapInfo, .-FtlLoadMapInfo
14709 .global FtlReadRefresh
14710 .type FtlReadRefresh, %function
14712 stp x29, x30, [sp, -128]!
14714 stp x19, x20, [sp,16]
14715 adrp x19, :got:g_sys_ext_data
14717 stp x21, x22, [sp,32]
14718 ldr x1, [x19, #:got_lo12:g_sys_ext_data]
14721 adrp x0, :got:g_MaxLpn
14724 ldr x2, [x0, #:got_lo12:g_MaxLpn]
14731 ldr x22, [x19, #:got_lo12:g_sys_ext_data]
14732 ldr x1, [x20, #:got_lo12:g_MaxLpn]
14760 bl P2V_block_in_plane
14761 bl FtlGcRefreshBlock
14770 adrp x0, :got:g_totle_read_page_count
14773 ldr x0, [x0, #:got_lo12:g_totle_read_page_count]
14778 adrp x2, :got:g_max_erase_count
14780 ldr x2, [x2, #:got_lo12:g_max_erase_count]
14782 adrp x2, :got:g_inkDie_check_enable
14783 ldr x2, [x2, #:got_lo12:g_inkDie_check_enable]
14785 adrp x2, :got:g_totle_read_page_count
14786 ldr x2, [x2, #:got_lo12:g_totle_read_page_count]
14788 add w5, w2, 1048576
14791 add w3, w4, w3, lsr 10
14798 ldr x0, [x19, #:got_lo12:g_sys_ext_data]
14806 ldp x19, x20, [sp,16]
14807 ldp x21, x22, [sp,32]
14809 ldp x29, x30, [sp], 128
14811 .size FtlReadRefresh, .-FtlReadRefresh
14813 .global FtlVendorPartWrite
14814 .type FtlVendorPartWrite, %function
14815 FtlVendorPartWrite:
14816 stp x29, x30, [sp, -176]!
14818 stp x25, x26, [sp,64]
14820 adrp x0, :got:c_ftl_nand_sec_pre_page_shift
14821 stp x19, x20, [sp,16]
14822 stp x23, x24, [sp,48]
14823 ldr x0, [x0, #:got_lo12:c_ftl_nand_sec_pre_page_shift]
14825 stp x21, x22, [sp,32]
14826 stp x27, x28, [sp,80]
14836 adrp x24, :got:p_vendor_data_buf
14838 adrp x28, :got:gVendorBlkInfo
14841 adrp x0, :got:p_vendor_region_ppn_table
14842 ldr x0, [x0, #:got_lo12:p_vendor_region_ppn_table]
14844 ldr w2, [x0,w20,uxtw 2]
14845 adrp x0, :got:c_ftl_nand_sec_pre_page
14846 ldr x0, [x0, #:got_lo12:c_ftl_nand_sec_pre_page]
14850 msub w21, w21, w1, w26
14854 csel w27, w0, w27, hi
14858 ldr x0, [x24, #:got_lo12:p_vendor_data_buf]
14869 adrp x1, :got:c_ftl_nand_byte_pre_page
14870 ldr x0, [x24, #:got_lo12:p_vendor_data_buf]
14871 ldr x2, [x1, #:got_lo12:c_ftl_nand_byte_pre_page]
14877 ldr x7, [x24, #:got_lo12:p_vendor_data_buf]
14879 ubfiz x21, x21, 9, 16
14891 ldr x0, [x28, #:got_lo12:gVendorBlkInfo]
14897 csinv w19, w19, wzr, ne
14898 add x23, x23, x6, sxtw
14902 ldp x19, x20, [sp,16]
14903 ldp x21, x22, [sp,32]
14904 ldp x23, x24, [sp,48]
14905 ldp x25, x26, [sp,64]
14906 ldp x27, x28, [sp,80]
14907 ldp x29, x30, [sp], 176
14909 .size FtlVendorPartWrite, .-FtlVendorPartWrite
14911 .global Ftl_save_ext_data
14912 .type Ftl_save_ext_data, %function
14914 adrp x2, :got:g_sys_ext_data
14916 stp x29, x30, [sp, -16]!
14917 movk w0, 0x4654, lsl 16
14919 ldr x2, [x2, #:got_lo12:g_sys_ext_data]
14925 movk w0, 0x5000, lsl 16
14927 adrp x0, :got:g_totle_write_sector
14928 ldr x0, [x0, #:got_lo12:g_totle_write_sector]
14931 adrp x0, :got:g_totle_read_sector
14932 ldr x0, [x0, #:got_lo12:g_totle_read_sector]
14935 adrp x0, :got:g_totle_gc_page_count
14936 ldr x0, [x0, #:got_lo12:g_totle_gc_page_count]
14939 adrp x0, :got:g_totle_write_page_count
14940 ldr x0, [x0, #:got_lo12:g_totle_write_page_count]
14943 adrp x0, :got:g_totle_read_page_count
14944 ldr x0, [x0, #:got_lo12:g_totle_read_page_count]
14947 adrp x0, :got:g_totle_l2p_write_count
14948 ldr x0, [x0, #:got_lo12:g_totle_l2p_write_count]
14951 adrp x0, :got:g_totle_slc_erase_count
14952 ldr x0, [x0, #:got_lo12:g_totle_slc_erase_count]
14955 adrp x0, :got:g_totle_sys_slc_erase_count
14956 ldr x0, [x0, #:got_lo12:g_totle_sys_slc_erase_count]
14959 adrp x0, :got:g_totle_discard_page_count
14960 ldr x0, [x0, #:got_lo12:g_totle_discard_page_count]
14963 adrp x0, :got:g_totle_cache_write_count
14964 ldr x0, [x0, #:got_lo12:g_totle_cache_write_count]
14967 adrp x0, :got:g_max_erase_count
14968 ldr x0, [x0, #:got_lo12:g_max_erase_count]
14971 adrp x0, :got:g_min_erase_count
14972 ldr x0, [x0, #:got_lo12:g_min_erase_count]
14975 adrp x0, :got:g_all_blk_used_slc_mode
14976 ldr x0, [x0, #:got_lo12:g_all_blk_used_slc_mode]
14979 adrp x0, :got:g_SlcPartLbaEndSector
14980 ldr x0, [x0, #:got_lo12:g_SlcPartLbaEndSector]
14984 bl FtlVendorPartWrite
14986 ldp x29, x30, [sp], 16
14988 .size Ftl_save_ext_data, .-Ftl_save_ext_data
14990 .global FtlEctTblFlush
14991 .type FtlEctTblFlush, %function
14993 adrp x1, :got:g_inkDie_check_enable
14994 stp x29, x30, [sp, -16]!
14996 ldr x1, [x1, #:got_lo12:g_inkDie_check_enable]
15000 adrp x2, :got:g_min_erase_count
15001 ldr x2, [x2, #:got_lo12:g_min_erase_count]
15005 csel w1, w1, w2, hi
15007 adrp x2, :got:g_ect_tbl_power_up_flush
15008 ldr x2, [x2, #:got_lo12:g_ect_tbl_power_up_flush]
15016 adrp x2, :got:gp_ect_tbl_info
15018 ldr x0, [x2, #:got_lo12:gp_ect_tbl_info]
15026 ldr x2, [x2, #:got_lo12:gp_ect_tbl_info]
15031 movk w1, 0x4254, lsl 16
15033 adrp x1, :got:g_ect_tbl_info_size
15035 ldr x1, [x1, #:got_lo12:g_ect_tbl_info_size]
15045 bl FtlVendorPartWrite
15046 bl Ftl_save_ext_data
15049 ldp x29, x30, [sp], 16
15051 .size FtlEctTblFlush, .-FtlEctTblFlush
15053 .global FtlMapBlkWriteDumpData
15054 .type FtlMapBlkWriteDumpData, %function
15055 FtlMapBlkWriteDumpData:
15056 stp x29, x30, [sp, -48]!
15058 stp x19, x20, [sp,16]
15066 adrp x0, :got:p_sys_data_buf_1
15067 adrp x2, :got:req_sys
15068 adrp x3, :got:p_sys_spare_buf
15071 ldr x0, [x0, #:got_lo12:p_sys_data_buf_1]
15073 ldr x1, [x2, #:got_lo12:req_sys]
15076 ldr x3, [x3, #:got_lo12:p_sys_spare_buf]
15079 ubfiz x3, x20, 2, 16
15089 adrp x2, :got:c_ftl_nand_byte_pre_page
15091 ldr x2, [x2, #:got_lo12:c_ftl_nand_byte_pre_page]
15095 ldr x2, [x19, #:got_lo12:req_sys]
15101 ldp x19, x20, [sp,16]
15103 ldp x29, x30, [sp], 48
15105 .size FtlMapBlkWriteDumpData, .-FtlMapBlkWriteDumpData
15107 .global FtlRecoverySuperblock
15108 .type FtlRecoverySuperblock, %function
15109 FtlRecoverySuperblock:
15110 stp x29, x30, [sp, -240]!
15112 stp x19, x20, [sp,16]
15113 stp x21, x22, [sp,32]
15114 stp x23, x24, [sp,48]
15115 stp x25, x26, [sp,64]
15116 stp x27, x28, [sp,80]
15120 adrp x0, :got:c_ftl_nand_page_pre_blk
15122 ldr x1, [x0, #:got_lo12:c_ftl_nand_page_pre_blk]
15137 add x0, x19, x1, sxtw 1
15144 bl FtlGetLastWrittenPage
15148 adrp x0, :got:slcPageToMlcPageTbl
15149 ldr x0, [x0, #:got_lo12:slcPageToMlcPageTbl]
15150 ldrh w23, [x0,w20,sxtw 1]
15154 bl FtlGetLastWrittenPage
15160 adrp x1, :got:c_ftl_nand_planes_num
15161 adrp x0, :got:c_ftl_nand_byte_pre_oob
15166 ldr x2, [x1, #:got_lo12:c_ftl_nand_planes_num]
15167 adrp x9, :got:req_read
15168 ldr x0, [x0, #:got_lo12:c_ftl_nand_byte_pre_oob]
15170 adrp x11, :got:p_gc_spare_buf
15174 add x3, x19, x3, lsl 1
15185 ldr x5, [x9, #:got_lo12:req_read]
15186 orr w1, w23, w1, lsl 10
15198 ldr x4, [x11, #:got_lo12:p_gc_spare_buf]
15200 add x1, x4, x1, sxtw 2
15207 adrp x21, :got:req_read
15211 ldr x0, [x21, #:got_lo12:req_read]
15214 adrp x0, :got:g_GlobalDataVersion
15219 ldr x1, [x0, #:got_lo12:g_GlobalDataVersion]
15225 ldr x0, [x21, #:got_lo12:req_read]
15239 ldr x4, [x1, #:got_lo12:g_GlobalDataVersion]
15244 bl ftl_cmp_data_ver
15256 ldr x0, [x21, #:got_lo12:req_read]
15266 ldr x0, [x21, #:got_lo12:req_read]
15281 ldr x0, [x21, #:got_lo12:req_read]
15292 adrp x0, :got:slcPageToMlcPageTbl
15293 ldr x0, [x0, #:got_lo12:slcPageToMlcPageTbl]
15294 ldrh w20, [x0,w20,sxtw 1]
15297 ldr x0, [x0, #:got_lo12:c_ftl_nand_page_pre_blk]
15318 adrp x24, :got:g_recovery_page_min_ver
15320 ldr x0, [x24, #:got_lo12:g_recovery_page_min_ver]
15326 ldr x0, [x24, #:got_lo12:g_recovery_page_min_ver]
15339 adrp x8, :got:mlcPageToSlcPageTbl
15345 ldr x0, [x0, #:got_lo12:c_ftl_nand_planes_num]
15348 add x2, x19, x2, lsl 1
15355 ldr x10, [x21, #:got_lo12:req_read]
15356 orr w1, w27, w1, lsl 10
15367 ldr x9, [x21, #:got_lo12:req_read]
15402 ldr x2, [x24, #:got_lo12:g_recovery_page_min_ver]
15407 ldr x2, [x8, #:got_lo12:mlcPageToSlcPageTbl]
15408 ldrh w2, [x2,x10,lsl 1]
15412 csinv w3, w28, wzr, ne
15417 adrp x0, :got:mlcPageToSlcPageTbl
15418 ldr x0, [x0, #:got_lo12:mlcPageToSlcPageTbl]
15419 ldrh w1, [x0,w27,sxtw 1]
15424 ldr x24, [x24, #:got_lo12:g_recovery_page_min_ver]
15441 ldr x24, [x24, #:got_lo12:g_recovery_page_min_ver]
15445 ldr x24, [x24, #:got_lo12:g_recovery_page_min_ver]
15462 ldr x24, [x24, #:got_lo12:g_recovery_page_min_ver]
15467 adrp x0, :got:g_power_lost_recovery_flag
15470 ldr x0, [x0, #:got_lo12:g_power_lost_recovery_flag]
15472 adrp x0, :got:gL2pMapInfo
15473 ldr x0, [x0, #:got_lo12:gL2pMapInfo]
15474 bl FtlMapBlkWriteDumpData
15478 add x0, x0, :lo12:.LC109
15489 ldr x0, [x0, #:got_lo12:c_ftl_nand_planes_num]
15492 add x2, x19, x2, lsl 1
15500 orr w1, w23, w1, lsl 10
15501 ldr x6, [x21, #:got_lo12:req_read]
15514 ldr x0, [x21, #:got_lo12:req_read]
15528 ldr x0, [x21, #:got_lo12:req_read]
15549 ldr x0, [x21, #:got_lo12:req_read]
15564 ldr x27, [x0, #:got_lo12:g_GlobalDataVersion]
15567 bl ftl_cmp_data_ver
15580 adrp x0, :got:g_recovery_page_min_ver
15582 ldr x1, [x0, #:got_lo12:g_recovery_page_min_ver]
15588 bl ftl_cmp_data_ver
15593 ldr x3, [x21, #:got_lo12:req_read]
15635 bl ftl_cmp_data_ver
15661 ldr x0, [x21, #:got_lo12:req_read]
15670 ldr x0, [x0, #:got_lo12:g_recovery_page_min_ver]
15672 bl ftl_cmp_data_ver
15676 bl ftl_cmp_data_ver
15686 bl decrement_vpc_count
15704 bl P2V_block_in_plane
15706 adrp x1, :got:g_active_superblock
15707 ldr x1, [x1, #:got_lo12:g_active_superblock]
15711 adrp x1, :got:g_buffer_superblock
15712 ldr x1, [x1, #:got_lo12:g_buffer_superblock]
15716 adrp x1, :got:g_gc_temp_superblock
15717 ldr x1, [x1, #:got_lo12:g_gc_temp_superblock]
15722 ldr x24, [x21, #:got_lo12:req_read]
15737 bl ftl_cmp_data_ver
15748 bl P2V_block_in_plane
15750 adrp x2, :got:p_valid_page_count_table
15751 ubfiz x3, x1, 1, 16
15752 ldr x2, [x2, #:got_lo12:p_valid_page_count_table]
15757 bl decrement_vpc_count
15764 adrp x1, :got:g_recovery_page_num
15765 ldr x1, [x1, #:got_lo12:g_recovery_page_num]
15769 adrp x2, :got:g_recovery_ppa_tbl
15771 ldr x2, [x2, #:got_lo12:g_recovery_ppa_tbl]
15772 str w3, [x2,w0,uxtw 2]
15777 bl decrement_vpc_count
15778 adrp x0, :got:g_recovery_page_min_ver
15779 ldr x0, [x0, #:got_lo12:g_recovery_page_min_ver]
15796 ldr x0, [x0, #:got_lo12:c_ftl_nand_page_pre_blk]
15804 ldr x0, [x0, #:got_lo12:c_ftl_nand_planes_num]
15812 add x4, x19, x0, lsl 1
15825 bl ftl_sb_update_avl_pages
15828 ldp x19, x20, [sp,16]
15829 ldp x21, x22, [sp,32]
15830 ldp x23, x24, [sp,48]
15831 ldp x25, x26, [sp,64]
15832 ldp x27, x28, [sp,80]
15833 ldp x29, x30, [sp], 240
15835 .size FtlRecoverySuperblock, .-FtlRecoverySuperblock
15837 .global FtlWriteDumpData
15838 .type FtlWriteDumpData, %function
15840 stp x29, x30, [sp, -144]!
15842 stp x19, x20, [sp,16]
15843 adrp x19, :got:g_active_superblock
15844 stp x21, x22, [sp,32]
15845 stp x23, x24, [sp,48]
15846 ldr x0, [x19, #:got_lo12:g_active_superblock]
15847 stp x25, x26, [sp,64]
15852 adrp x2, :got:c_ftl_nand_page_pre_blk
15854 ldr x2, [x2, #:got_lo12:c_ftl_nand_page_pre_blk]
15859 adrp x1, :got:g_MaxLpn
15861 ldr x1, [x1, #:got_lo12:g_MaxLpn]
15863 adrp x1, :got:c_ftl_nand_planes_num
15864 ldr x1, [x1, #:got_lo12:c_ftl_nand_planes_num]
15874 adrp x0, :got:p_sys_data_buf
15878 ldr x0, [x0, #:got_lo12:p_sys_data_buf]
15881 adrp x1, :got:p_sys_spare_buf
15882 ldr x1, [x1, #:got_lo12:p_sys_spare_buf]
15893 adrp x2, :got:c_ftl_nand_byte_pre_page
15896 ldr x2, [x2, #:got_lo12:c_ftl_nand_byte_pre_page]
15902 adrp x25, :got:g_GlobalDataVersion
15909 ldr x23, [x19, #:got_lo12:g_active_superblock]
15919 bl get_new_active_ppa
15921 ldr x0, [x25, #:got_lo12:g_GlobalDataVersion]
15928 csel w1, w1, wzr, ne
15934 bl decrement_vpc_count
15937 ldr x19, [x19, #:got_lo12:g_active_superblock]
15942 ldr x19, [x19, #:got_lo12:g_active_superblock]
15945 ldp x19, x20, [sp,16]
15946 ldp x21, x22, [sp,32]
15947 ldp x23, x24, [sp,48]
15948 ldp x25, x26, [sp,64]
15949 ldp x29, x30, [sp], 144
15951 .size FtlWriteDumpData, .-FtlWriteDumpData
15954 .type l2p_flush, %function
15956 stp x29, x30, [sp, -48]!
15958 stp x19, x20, [sp,16]
15961 adrp x20, :got:c_ftl_nand_l2pmap_ram_region_num
15962 adrp x21, :got:p_l2p_ram_map
15963 bl FtlWriteDumpData
15965 ldr x0, [x20, #:got_lo12:c_ftl_nand_l2pmap_ram_region_num]
15969 ldr x1, [x21, #:got_lo12:p_l2p_ram_map]
15970 ubfiz x0, x19, 4, 16
15974 tbz w0, #31, .L2180
15976 bl flush_l2p_region
15984 ldp x19, x20, [sp,16]
15985 ldp x29, x30, [sp], 48
15987 .size l2p_flush, .-l2p_flush
15989 .global FtlVpcCheckAndModify
15990 .type FtlVpcCheckAndModify, %function
15991 FtlVpcCheckAndModify:
15992 stp x29, x30, [sp, -112]!
15995 add x1, x1, :lo12:.LANCHOR1
15998 add x0, x0, :lo12:.LC110
15999 stp x19, x20, [sp,16]
16000 stp x21, x22, [sp,32]
16001 stp x23, x24, [sp,48]
16002 stp x25, x26, [sp,64]
16003 stp x27, x28, [sp,80]
16005 adrp x20, :got:p_valid_page_count_check_table
16006 adrp x0, :got:c_ftl_nand_blk_pre_plane
16008 adrp x21, :got:g_MaxLpn
16010 ldr x1, [x20, #:got_lo12:p_valid_page_count_check_table]
16011 ldr x0, [x0, #:got_lo12:c_ftl_nand_blk_pre_plane]
16018 ldr x0, [x21, #:got_lo12:g_MaxLpn]
16030 bl P2V_block_in_plane
16031 ubfiz x0, x0, 1, 16
16032 ldr x1, [x20, #:got_lo12:p_valid_page_count_check_table]
16043 adrp x23, :got:c_ftl_nand_data_blks_per_plane
16044 adrp x24, :got:p_valid_page_count_table
16046 add x22, x22, :lo12:.LC111
16047 adrp x26, :got:g_active_superblock
16049 ldr x0, [x23, #:got_lo12:c_ftl_nand_data_blks_per_plane]
16053 ldr x27, [x24, #:got_lo12:p_valid_page_count_table]
16054 ubfiz x21, x19, 1, 16
16055 ldr x28, [x20, #:got_lo12:p_valid_page_count_check_table]
16067 ldr x0, [x26, #:got_lo12:g_active_superblock]
16071 adrp x0, :got:g_gc_temp_superblock
16072 ldr x0, [x0, #:got_lo12:g_gc_temp_superblock]
16076 adrp x0, :got:g_buffer_superblock
16077 ldr x0, [x0, #:got_lo12:g_buffer_superblock]
16094 ldp x19, x20, [sp,16]
16095 ldp x21, x22, [sp,32]
16096 ldp x23, x24, [sp,48]
16097 ldp x25, x26, [sp,64]
16098 ldp x27, x28, [sp,80]
16099 ldp x29, x30, [sp], 112
16101 .size FtlVpcCheckAndModify, .-FtlVpcCheckAndModify
16103 .global allocate_new_data_superblock
16104 .type allocate_new_data_superblock, %function
16105 allocate_new_data_superblock:
16106 stp x29, x30, [sp, -48]!
16108 stp x19, x20, [sp,16]
16115 adrp x1, :got:p_valid_page_count_table
16116 ubfiz x0, x21, 1, 16
16117 ldr x1, [x1, #:got_lo12:p_valid_page_count_table]
16122 bl INSERT_DATA_LIST
16126 bl INSERT_FREE_LIST
16128 adrp x0, :got:g_buffer_superblock
16130 ldr x0, [x0, #:got_lo12:g_buffer_superblock]
16133 adrp x0, :got:c_ftl_nand_type
16134 ldr x0, [x0, #:got_lo12:c_ftl_nand_type]
16143 adrp x1, :got:g_active_superblock
16144 ldr x2, [x1, #:got_lo12:g_active_superblock]
16149 adrp x0, :got:g_all_blk_used_slc_mode
16150 ldr x0, [x0, #:got_lo12:g_all_blk_used_slc_mode]
16155 ldr x0, [x1, #:got_lo12:g_active_superblock]
16159 adrp x0, :got:g_inkDie_check_enable
16160 ldr x0, [x0, #:got_lo12:g_inkDie_check_enable]
16163 adrp x0, :got:g_min_erase_count
16164 ldr x0, [x0, #:got_lo12:g_min_erase_count]
16168 ldr x1, [x1, #:got_lo12:g_active_superblock]
16172 adrp x1, :got:g_tmp_data_superblock_id
16175 ldr x0, [x1, #:got_lo12:g_tmp_data_superblock_id]
16181 adrp x2, :got:p_valid_page_count_table
16182 ubfiz x1, x0, 1, 16
16183 ldr x2, [x2, #:got_lo12:p_valid_page_count_table]
16190 ldr x1, [x20, #:got_lo12:g_tmp_data_superblock_id]
16195 bl allocate_data_superblock
16202 ldp x19, x20, [sp,16]
16203 ldp x29, x30, [sp], 48
16205 .size allocate_new_data_superblock, .-allocate_new_data_superblock
16207 .global FtlCacheWriteBack
16208 .type FtlCacheWriteBack, %function
16210 adrp x0, :got:gp_last_act_superblock
16211 stp x29, x30, [sp, -144]!
16213 ldr x0, [x0, #:got_lo12:gp_last_act_superblock]
16214 stp x19, x20, [sp,16]
16215 stp x21, x22, [sp,32]
16216 stp x23, x24, [sp,48]
16217 stp x25, x26, [sp,64]
16218 stp x27, x28, [sp,80]
16220 adrp x0, :got:g_wr_page_num
16222 ldr x1, [x0, #:got_lo12:g_wr_page_num]
16225 adrp x21, :got:req_wr_io
16231 ldr x0, [x21, #:got_lo12:req_wr_io]
16233 adrp x26, :got:p_valid_page_count_table
16234 add x24, x24, :lo12:.LC112
16241 ldr x0, [x0, #:got_lo12:g_wr_page_num]
16246 ldr x1, [x21, #:got_lo12:req_wr_io]
16252 umull x20, w22, w25
16253 adrp x27, :got:c_ftl_nand_page_pre_blk
16254 adrp x28, :got:g_sys_ext_data
16256 ldr x3, [x21, #:got_lo12:req_wr_io]
16264 bl P2V_block_in_plane
16268 ldr x0, [x26, #:got_lo12:p_valid_page_count_table]
16269 ubfiz x1, x1, 1, 16
16275 ldr x0, [x27, #:got_lo12:c_ftl_nand_page_pre_blk]
16284 bl allocate_new_data_superblock
16286 ldr x1, [x28, #:got_lo12:g_sys_ext_data]
16290 ldr x23, [x21, #:got_lo12:req_wr_io]
16295 bl FtlGcMarkBadPhyBlk
16297 bl get_new_active_ppa
16326 bl P2V_block_in_plane
16328 ldr x2, [x26, #:got_lo12:p_valid_page_count_table]
16329 ubfiz x0, x1, 1, 16
16338 bl decrement_vpc_count
16346 ldp x19, x20, [sp,16]
16347 ldp x21, x22, [sp,32]
16348 ldp x23, x24, [sp,48]
16349 ldp x25, x26, [sp,64]
16350 ldp x27, x28, [sp,80]
16351 ldp x29, x30, [sp], 144
16353 .size FtlCacheWriteBack, .-FtlCacheWriteBack
16355 .global rk_ftl_cache_write_back
16356 .type rk_ftl_cache_write_back, %function
16357 rk_ftl_cache_write_back:
16358 stp x29, x30, [sp, -16]!
16360 bl FtlCacheWriteBack
16361 ldp x29, x30, [sp], 16
16363 .size rk_ftl_cache_write_back, .-rk_ftl_cache_write_back
16365 .global FtlSysFlush
16366 .type FtlSysFlush, %function
16368 stp x29, x30, [sp, -16]!
16370 bl FtlCacheWriteBack
16376 ldp x29, x30, [sp], 16
16378 .size FtlSysFlush, .-FtlSysFlush
16381 .type FtlDeInit, %function
16383 adrp x0, :got:gFtlInitStatus
16384 stp x29, x30, [sp, -16]!
16386 ldr x0, [x0, #:got_lo12:gFtlInitStatus]
16393 ldp x29, x30, [sp], 16
16395 .size FtlDeInit, .-FtlDeInit
16397 .global rk_ftl_de_init
16398 .type rk_ftl_de_init, %function
16400 stp x29, x30, [sp, -16]!
16405 ldp x29, x30, [sp], 16
16407 .size rk_ftl_de_init, .-rk_ftl_de_init
16410 .type FtlDiscard, %function
16412 stp x29, x30, [sp, -96]!
16415 stp x19, x20, [sp,16]
16417 adrp x0, :got:g_MaxLbaSector
16418 stp x21, x22, [sp,32]
16419 stp x23, x24, [sp,48]
16420 ldr x0, [x0, #:got_lo12:g_MaxLbaSector]
16429 adrp x22, :got:c_ftl_nand_sec_pre_page
16430 bl FtlCacheWriteBack
16431 ldr x0, [x22, #:got_lo12:c_ftl_nand_sec_pre_page]
16434 msub w20, w1, w21, w20
16440 csel w1, w1, w19, ls
16441 sub w19, w19, w1, uxth
16443 adrp x20, .LANCHOR0
16447 add x20, x20, :lo12:.LANCHOR0
16448 adrp x24, :got:g_totle_discard_page_count
16451 ldr x0, [x22, #:got_lo12:c_ftl_nand_sec_pre_page]
16466 ldr x1, [x24, #:got_lo12:g_totle_discard_page_count]
16475 bl P2V_block_in_plane
16476 bl decrement_vpc_count
16478 ldr x0, [x22, #:got_lo12:c_ftl_nand_sec_pre_page]
16485 add x0, x0, :lo12:.LANCHOR0
16495 ldp x19, x20, [sp,16]
16496 ldp x21, x22, [sp,32]
16497 ldp x23, x24, [sp,48]
16499 ldp x29, x30, [sp], 96
16501 .size FtlDiscard, .-FtlDiscard
16503 .global FtlGcFreeTempBlock
16504 .type FtlGcFreeTempBlock, %function
16505 FtlGcFreeTempBlock:
16506 stp x29, x30, [sp, -112]!
16508 stp x19, x20, [sp,16]
16509 adrp x19, :got:g_gc_temp_superblock
16510 adrp x20, :got:c_ftl_nand_page_pre_blk
16511 stp x21, x22, [sp,32]
16512 stp x23, x24, [sp,48]
16513 ldr x2, [x19, #:got_lo12:g_gc_temp_superblock]
16514 stp x25, x26, [sp,64]
16515 stp x27, x28, [sp,80]
16516 ldr x1, [x20, #:got_lo12:c_ftl_nand_page_pre_blk]
16523 adrp x0, :got:ftl_gc_temp_power_lost_recovery_flag
16524 ldr x0, [x0, #:got_lo12:ftl_gc_temp_power_lost_recovery_flag]
16527 ldr x22, [x19, #:got_lo12:g_gc_temp_superblock]
16531 adrp x21, :got:p_valid_page_count_table
16532 bl FtlCacheWriteBack
16533 ldr x20, [x20, #:got_lo12:c_ftl_nand_page_pre_blk]
16534 adrp x25, :got:p_gc_page_info
16537 ldr x0, [x21, #:got_lo12:p_valid_page_count_table]
16540 adrp x20, :got:g_gc_page_offset
16545 strh w0, [x1,x2,lsl 1]
16546 adrp x0, :got:g_totle_gc_page_count
16547 ldr x1, [x20, #:got_lo12:g_gc_page_offset]
16548 ldr x0, [x0, #:got_lo12:g_totle_gc_page_count]
16557 add x0, x0, :lo12:.LANCHOR2
16566 adrp x0, :got:g_num_free_superblocks
16567 ldr x0, [x0, #:got_lo12:g_num_free_superblocks]
16572 ldr x0, [x19, #:got_lo12:g_gc_temp_superblock]
16573 bl FtlGcScanTempBlk
16577 adrp x0, :got:g_sys_ext_data
16578 ubfiz x21, x21, 1, 16
16579 ldr x0, [x0, #:got_lo12:g_sys_ext_data]
16583 adrp x0, :got:p_erase_count_table
16584 ldr x0, [x0, #:got_lo12:p_erase_count_table]
16594 adrp x0, :got:ftl_gc_temp_power_lost_recovery_flag
16596 ldr x1, [x0, #:got_lo12:ftl_gc_temp_power_lost_recovery_flag]
16601 bl FtlBbmMapBadBlock
16604 ldr x0, [x19, #:got_lo12:ftl_gc_temp_power_lost_recovery_flag]
16609 adrp x0, .LANCHOR2+128
16611 ldrh w2, [x0,#:lo12:.LANCHOR2+128]
16617 ldr x0, [x25, #:got_lo12:p_gc_page_info]
16619 umull x24, w22, w26
16630 bl P2V_block_in_plane
16638 bl decrement_vpc_count
16643 ldr x0, [x20, #:got_lo12:g_gc_page_offset]
16652 ldr x0, [x19, #:got_lo12:g_gc_temp_superblock]
16657 bl decrement_vpc_count
16658 ldr x21, [x21, #:got_lo12:p_valid_page_count_table]
16659 ldr x0, [x19, #:got_lo12:g_gc_temp_superblock]
16662 ubfiz x1, x0, 1, 16
16665 bl INSERT_DATA_LIST
16668 bl INSERT_FREE_LIST
16670 ldr x19, [x19, #:got_lo12:g_gc_temp_superblock]
16673 adrp x0, :got:g_gc_blk_num
16674 ldr x20, [x20, #:got_lo12:g_gc_page_offset]
16676 ldr x0, [x0, #:got_lo12:g_gc_blk_num]
16680 adrp x0, :got:g_inkDie_check_enable
16681 adrp x1, :got:g_num_free_superblocks
16682 ldr x0, [x0, #:got_lo12:g_inkDie_check_enable]
16684 adrp x0, :got:c_ftl_nand_data_op_blks_per_plane
16686 adrp x2, :got:g_min_erase_count
16687 ldr x2, [x2, #:got_lo12:g_min_erase_count]
16691 ldr x0, [x0, #:got_lo12:c_ftl_nand_data_op_blks_per_plane]
16692 ldr x1, [x1, #:got_lo12:g_num_free_superblocks]
16697 adrp x1, :got:g_gc_free_blk_threshold
16699 ldr x1, [x1, #:got_lo12:g_gc_free_blk_threshold]
16702 adrp x0, :got:g_gc_superblock
16704 ldr x0, [x0, #:got_lo12:g_gc_superblock]
16707 ldr x0, [x0, #:got_lo12:c_ftl_nand_data_op_blks_per_plane]
16708 ldr x1, [x1, #:got_lo12:g_num_free_superblocks]
16711 add w0, w0, w0, lsl 1
16714 adrp x0, :got:g_gc_superblock
16716 ldr x0, [x0, #:got_lo12:g_gc_superblock]
16718 adrp x0, :got:g_gc_free_blk_threshold
16720 ldr x0, [x0, #:got_lo12:g_gc_free_blk_threshold]
16726 ldp x19, x20, [sp,16]
16727 ldp x21, x22, [sp,32]
16728 ldp x23, x24, [sp,48]
16729 ldp x25, x26, [sp,64]
16730 ldp x27, x28, [sp,80]
16731 ldp x29, x30, [sp], 112
16733 .size FtlGcFreeTempBlock, .-FtlGcFreeTempBlock
16735 .global FtlGcPageRecovery
16736 .type FtlGcPageRecovery, %function
16738 stp x29, x30, [sp, -32]!
16740 stp x19, x20, [sp,16]
16741 adrp x19, :got:c_ftl_nand_page_pre_blk
16742 adrp x20, :got:g_gc_temp_superblock
16743 ldr x19, [x19, #:got_lo12:c_ftl_nand_page_pre_blk]
16744 ldr x20, [x20, #:got_lo12:g_gc_temp_superblock]
16747 bl FtlGcScanTempBlk
16752 adrp x0, :got:gL2pMapInfo
16753 ldr x0, [x0, #:got_lo12:gL2pMapInfo]
16754 bl FtlMapBlkWriteDumpData
16756 bl FtlGcFreeTempBlock
16757 adrp x0, :got:ftl_gc_temp_power_lost_recovery_flag
16758 ldr x0, [x0, #:got_lo12:ftl_gc_temp_power_lost_recovery_flag]
16761 ldp x19, x20, [sp,16]
16762 ldp x29, x30, [sp], 32
16764 .size FtlGcPageRecovery, .-FtlGcPageRecovery
16766 .global FtlPowerLostRecovery
16767 .type FtlPowerLostRecovery, %function
16768 FtlPowerLostRecovery:
16769 adrp x0, :got:g_power_lost_recovery_flag
16770 stp x29, x30, [sp, -32]!
16772 ldr x0, [x0, #:got_lo12:g_power_lost_recovery_flag]
16774 adrp x19, :got:g_active_superblock
16776 adrp x0, :got:g_recovery_page_num
16777 ldr x0, [x0, #:got_lo12:g_recovery_page_num]
16779 ldr x19, [x19, #:got_lo12:g_active_superblock]
16781 bl FtlRecoverySuperblock
16783 adrp x19, :got:g_buffer_superblock
16784 bl FtlSlcSuperblockCheck
16785 ldr x19, [x19, #:got_lo12:g_buffer_superblock]
16787 bl FtlRecoverySuperblock
16789 bl FtlSlcSuperblockCheck
16790 bl FtlGcPageRecovery
16792 bl decrement_vpc_count
16795 ldp x29, x30, [sp], 32
16797 .size FtlPowerLostRecovery, .-FtlPowerLostRecovery
16799 .global Ftl_gc_temp_data_write_back
16800 .type Ftl_gc_temp_data_write_back, %function
16801 Ftl_gc_temp_data_write_back:
16802 stp x29, x30, [sp, -64]!
16805 stp x19, x20, [sp,16]
16806 stp x21, x22, [sp,32]
16807 adrp x19, :got:req_gc_dst
16808 adrp x21, :got:g_gc_num_req
16813 ldr x0, [x19, #:got_lo12:req_gc_dst]
16814 ldr x1, [x21, #:got_lo12:g_gc_num_req]
16819 ldr x22, [x21, #:got_lo12:g_gc_num_req]
16823 ldr x3, [x19, #:got_lo12:req_gc_dst]
16830 adrp x1, :got:g_gc_temp_superblock
16831 adrp x2, :got:p_valid_page_count_table
16832 ldr x1, [x1, #:got_lo12:g_gc_temp_superblock]
16833 ldr x2, [x2, #:got_lo12:p_valid_page_count_table]
16836 strh wzr, [x2,x5,lsl 1]
16838 adrp x1, :got:g_sys_ext_data
16839 ldr x1, [x1, #:got_lo12:g_sys_ext_data]
16847 bl FtlBbmMapBadBlock
16849 bl FtlGcPageVarInit
16861 ldr x19, [x19, #:got_lo12:req_gc_dst]
16865 adrp x0, :got:g_gc_temp_superblock
16866 ldr x0, [x0, #:got_lo12:g_gc_temp_superblock]
16871 bl FtlGcFreeTempBlock
16875 ldp x19, x20, [sp,16]
16876 ldp x21, x22, [sp,32]
16878 ldp x29, x30, [sp], 64
16880 .size Ftl_gc_temp_data_write_back, .-Ftl_gc_temp_data_write_back
16882 .global FtlSysBlkInit
16883 .type FtlSysBlkInit, %function
16885 adrp x0, :got:c_ftl_nand_max_sys_blks
16886 stp x29, x30, [sp, -48]!
16888 ldr x0, [x0, #:got_lo12:c_ftl_nand_max_sys_blks]
16889 stp x19, x20, [sp,16]
16890 stp x21, x22, [sp,32]
16892 bl FtlFreeSysBlkQueueInit
16894 adrp x0, :got:gSysInfo
16895 ldr x0, [x0, #:got_lo12:gSysInfo]
16908 bl FtlLoadVonderInfo
16909 bl Ftl_load_ext_data
16911 bl FtlFreeSysBLkSort
16912 bl SupperBlkListInit
16913 bl FtlPowerLostRecovery
16914 adrp x0, :got:c_ftl_nand_l2pmap_ram_region_num
16916 ldr x0, [x0, #:got_lo12:c_ftl_nand_l2pmap_ram_region_num]
16918 adrp x0, :got:p_l2p_ram_map
16919 ldr x0, [x0, #:got_lo12:p_l2p_ram_map]
16925 add x4, x0, x1, lsl 4
16928 tbz w4, #31, .L2314
16930 adrp x19, :got:g_sys_save_data
16932 adrp x20, :got:g_active_superblock
16933 ldr x1, [x19, #:got_lo12:g_sys_save_data]
16938 adrp x0, :got:g_power_lost_recovery_flag
16939 ldr x0, [x0, #:got_lo12:g_power_lost_recovery_flag]
16943 adrp x3, :got:p_valid_page_count_table
16944 ldr x1, [x20, #:got_lo12:g_active_superblock]
16945 ldr x3, [x3, #:got_lo12:p_valid_page_count_table]
16953 adrp x0, :got:c_ftl_nand_page_pre_blk
16955 ldr x0, [x0, #:got_lo12:c_ftl_nand_page_pre_blk]
16960 adrp x1, :got:g_buffer_superblock
16961 ldr x1, [x1, #:got_lo12:g_buffer_superblock]
16971 adrp x0, :got:gL2pMapInfo
16973 ldr x0, [x0, #:got_lo12:gL2pMapInfo]
16974 bl FtlMapBlkWriteDumpData
16975 adrp x0, :got:gVendorBlkInfo
16976 ldr x0, [x0, #:got_lo12:gVendorBlkInfo]
16977 bl FtlMapBlkWriteDumpData
16978 ldr x1, [x19, #:got_lo12:g_sys_save_data]
16986 bl FtlUpdateVaildLpn
16987 ldr x20, [x20, #:got_lo12:g_active_superblock]
16994 adrp x21, :got:g_buffer_superblock
16995 ldr x21, [x21, #:got_lo12:g_buffer_superblock]
16998 bl FtlGcRefreshBlock
17000 bl FtlGcRefreshBlock
17002 bl allocate_new_data_superblock
17004 bl allocate_new_data_superblock
17005 adrp x0, :got:gVendorBlkInfo
17006 ldr x0, [x0, #:got_lo12:gVendorBlkInfo]
17007 bl FtlMapBlkWriteDumpData
17009 ldr x19, [x19, #:got_lo12:g_sys_save_data]
17013 bl FtlVpcCheckAndModify
17016 ldp x19, x20, [sp,16]
17017 ldp x21, x22, [sp,32]
17018 ldp x29, x30, [sp], 48
17020 .size FtlSysBlkInit, .-FtlSysBlkInit
17023 .type FtlInit, %function
17025 stp x29, x30, [sp, -32]!
17026 adrp x1, :got:g_LowFormat
17028 stp x19, x20, [sp,16]
17029 adrp x19, :got:gFtlInitStatus
17032 ldr x19, [x19, #:got_lo12:gFtlInitStatus]
17035 add x0, x0, :lo12:.LC72
17036 ldr x1, [x1, #:got_lo12:g_LowFormat]
17039 add x1, x1, :lo12:.LC73
17042 bl FtlConstantsInit
17044 bl FtlVariablesInit
17045 adrp x0, :got:c_ftl_nand_max_sys_blks
17046 ldr x0, [x0, #:got_lo12:c_ftl_nand_max_sys_blks]
17048 bl FtlFreeSysBlkQueueInit
17057 ldp x19, x20, [sp,16]
17058 ldp x29, x30, [sp], 32
17060 .size FtlInit, .-FtlInit
17062 .global rk_ftl_init
17063 .type rk_ftl_init, %function
17065 stp x29, x30, [sp, -32]!
17068 stp x19, x20, [sp,16]
17069 adrp x20, :got:gLoaderBootInfo
17071 adrp x19, :got:RK29_NANDC_REG_BASE
17072 adrp x1, :got:RK29_NANDC1_REG_BASE
17073 ldr x20, [x20, #:got_lo12:gLoaderBootInfo]
17075 ldr x19, [x19, #:got_lo12:RK29_NANDC_REG_BASE]
17078 ldr x1, [x1, #:got_lo12:RK29_NANDC1_REG_BASE]
17080 bl rknand_get_reg_addr
17084 bl rk_nandc_irq_init
17089 bl FlashSramLoadStore
17090 bl rknand_flash_cs_init
17095 adrp x0, :got:gNandPhyInfo
17096 ldr x0, [x0, #:got_lo12:gNandPhyInfo]
17101 add x0, x0, :lo12:.LC113
17105 ldp x19, x20, [sp,16]
17106 ldp x29, x30, [sp], 32
17108 .size rk_ftl_init, .-rk_ftl_init
17110 .global Ftl_get_new_temp_ppa
17111 .type Ftl_get_new_temp_ppa, %function
17112 Ftl_get_new_temp_ppa:
17113 stp x29, x30, [sp, -32]!
17117 adrp x19, :got:g_gc_temp_superblock
17118 ldr x0, [x19, #:got_lo12:g_gc_temp_superblock]
17125 bl FtlCacheWriteBack
17127 bl FtlGcFreeTempBlock
17128 ldr x0, [x19, #:got_lo12:g_gc_temp_superblock]
17130 bl allocate_data_superblock
17131 adrp x0, :got:g_gc_blk_num
17132 ldr x0, [x0, #:got_lo12:g_gc_blk_num]
17134 adrp x0, :got:g_gc_page_offset
17135 ldr x0, [x0, #:got_lo12:g_gc_page_offset]
17142 ldr x0, [x19, #:got_lo12:g_gc_temp_superblock]
17143 bl get_new_active_ppa
17145 ldp x29, x30, [sp], 32
17147 .size Ftl_get_new_temp_ppa, .-Ftl_get_new_temp_ppa
17149 .global rk_ftl_garbage_collect
17150 .type rk_ftl_garbage_collect, %function
17151 rk_ftl_garbage_collect:
17152 stp x29, x30, [sp, -160]!
17154 stp x21, x22, [sp,32]
17155 adrp x22, :got:g_in_gc_progress
17156 stp x19, x20, [sp,16]
17157 stp x23, x24, [sp,48]
17158 ldr x2, [x22, #:got_lo12:g_in_gc_progress]
17159 stp x25, x26, [sp,64]
17160 stp x27, x28, [sp,80]
17165 adrp x0, .LANCHOR2+128
17168 ldrh w0, [x0,#:lo12:.LANCHOR2+128]
17172 adrp x0, :got:g_gc_next_blk_1
17174 ldr x0, [x0, #:got_lo12:g_gc_next_blk_1]
17180 adrp x0, :got:g_gc_temp_superblock
17181 ldr x0, [x0, #:got_lo12:g_gc_temp_superblock]
17186 bl FtlGcFreeTempBlock
17191 adrp x1, :got:g_gc_next_blk
17192 ldr x1, [x1, #:got_lo12:g_gc_next_blk]
17200 adrp x26, :got:g_gc_skip_write_count
17202 adrp x19, :got:g_gc_superblock
17203 ldr x20, [x26, #:got_lo12:g_gc_skip_write_count]
17206 add w0, w0, w24, lsl 7
17213 adrp x1, :got:g_inkDie_check_enable
17214 ldr x1, [x1, #:got_lo12:g_inkDie_check_enable]
17217 adrp x27, :got:g_min_erase_count
17218 ldr x27, [x27, #:got_lo12:g_min_erase_count]
17222 adrp x25, :got:gc_ink_free_return_value
17223 ldr x21, [x25, #:got_lo12:gc_ink_free_return_value]
17227 bl FtlGcReFreshBadBlk
17228 ldr x0, [x19, #:got_lo12:g_gc_superblock]
17233 adrp x0, :got:g_gc_next_blk
17234 ldr x0, [x0, #:got_lo12:g_gc_next_blk]
17255 bl List_get_gc_head_node
17260 adrp x20, :got:g_gc_blk_index
17261 ldr x20, [x20, #:got_lo12:g_gc_blk_index]
17264 adrp x27, :got:p_valid_page_count_table
17265 ubfiz x28, x28, 1, 16
17266 adrp x2, :got:c_ftl_nand_planes_num
17267 ldr x27, [x27, #:got_lo12:p_valid_page_count_table]
17268 ldr x2, [x2, #:got_lo12:c_ftl_nand_planes_num]
17272 adrp x1, :got:c_ftl_nand_page_pre_slc_blk
17273 ldr x1, [x1, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
17279 adrp x1, :got:g_in_swl_replace
17281 ldr x1, [x1, #:got_lo12:g_in_swl_replace]
17285 bl List_get_gc_head_node
17290 ubfiz x5, x21, 1, 16
17294 add x0, x0, :lo12:.LC114
17310 ldr x25, [x25, #:got_lo12:gc_ink_free_return_value]
17318 bl GetSwlReplaceBlock
17323 ldr x25, [x25, #:got_lo12:gc_ink_free_return_value]
17326 ldr x0, [x19, #:got_lo12:g_gc_superblock]
17331 adrp x0, :got:g_gc_temp_superblock
17332 ldr x0, [x0, #:got_lo12:g_gc_temp_superblock]
17336 adrp x0, :got:g_gc_next_blk
17337 ldr x0, [x0, #:got_lo12:g_gc_next_blk]
17341 adrp x25, :got:g_num_free_superblocks
17342 ldr x26, [x26, #:got_lo12:g_gc_skip_write_count]
17344 ldr x27, [x25, #:got_lo12:g_num_free_superblocks]
17349 csel w0, w0, w2, cc
17352 adrp x0, :got:gc_ink_free_return_value
17354 ldr x0, [x0, #:got_lo12:gc_ink_free_return_value]
17356 bl GetSwlReplaceBlock
17360 adrp x20, :got:g_gc_merge_free_blk_threshold
17362 ldr x26, [x20, #:got_lo12:g_gc_merge_free_blk_threshold]
17367 bl List_get_gc_head_node
17371 adrp x1, :got:g_SlcPartLbaEndSector
17372 adrp x4, :got:c_ftl_nand_type
17374 ldr x1, [x1, #:got_lo12:g_SlcPartLbaEndSector]
17376 adrp x1, :got:p_valid_page_count_table
17378 ldr x0, [x4, #:got_lo12:c_ftl_nand_type]
17382 adrp x0, :got:g_all_blk_used_slc_mode
17383 ldr x0, [x0, #:got_lo12:g_all_blk_used_slc_mode]
17386 adrp x0, :got:g_inkDie_check_enable
17387 ldr x0, [x0, #:got_lo12:g_inkDie_check_enable]
17391 ldr x1, [x1, #:got_lo12:p_valid_page_count_table]
17393 ldrh w5, [x0,x2,lsl 1]
17394 adrp x0, :got:c_ftl_nand_page_pre_slc_blk
17395 ldr x2, [x4, #:got_lo12:c_ftl_nand_type]
17396 ldr x0, [x0, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
17399 adrp x0, :got:c_ftl_nand_planes_num
17401 ldr x0, [x0, #:got_lo12:c_ftl_nand_planes_num]
17406 csel w0, w1, w0, eq
17411 bl List_get_gc_head_node
17413 adrp x0, :got:g_MaxLpn
17414 adrp x1, :got:g_VaildLpn
17415 ldr x20, [x20, #:got_lo12:g_gc_merge_free_blk_threshold]
17416 ldr x0, [x0, #:got_lo12:g_MaxLpn]
17417 ldr x1, [x1, #:got_lo12:g_VaildLpn]
17420 add w0, w0, w0, lsl 1
17431 ldr x20, [x20, #:got_lo12:g_gc_merge_free_blk_threshold]
17436 ldr x1, [x1, #:got_lo12:p_valid_page_count_table]
17438 ldrh w1, [x1,x2,lsl 1]
17441 bl List_get_gc_head_node
17459 adrp x0, :got:p_valid_page_count_table
17460 adrp x5, :got:g_gc_free_blk_threshold
17461 ubfiz x4, x21, 1, 16
17462 ldr x25, [x25, #:got_lo12:g_num_free_superblocks]
17464 ldr x0, [x0, #:got_lo12:p_valid_page_count_table]
17465 ldr x5, [x5, #:got_lo12:g_gc_free_blk_threshold]
17468 adrp x0, :got:p_erase_count_table
17470 ldr x0, [x0, #:got_lo12:p_erase_count_table]
17474 add x0, x0, :lo12:.LC115
17478 bl FtlGcReFreshBadBlk
17485 adrp x0, :got:g_num_free_superblocks
17487 ldr x0, [x0, #:got_lo12:g_num_free_superblocks]
17491 adrp x0, :got:c_ftl_nand_page_pre_blk
17493 ldr x0, [x0, #:got_lo12:c_ftl_nand_page_pre_blk]
17508 adrp x0, :got:g_gc_free_blk_threshold
17509 ldr x4, [x0, #:got_lo12:g_gc_free_blk_threshold]
17513 adrp x1, :got:g_gc_temp_superblock
17514 ldr x1, [x1, #:got_lo12:g_gc_temp_superblock]
17519 adrp x1, :got:g_gc_next_blk
17520 ldr x1, [x1, #:got_lo12:g_gc_next_blk]
17524 adrp x1, :got:gc_ink_free_return_value
17525 ldr x1, [x1, #:got_lo12:gc_ink_free_return_value]
17528 adrp x1, :got:g_MaxLpn
17529 adrp x3, :got:g_VaildLpn
17530 ldr x1, [x1, #:got_lo12:g_MaxLpn]
17531 ldr x3, [x3, #:got_lo12:g_VaildLpn]
17534 add w1, w1, w1, lsl 1
17538 adrp x1, :got:c_ftl_nand_data_op_blks_per_plane
17539 ldr x0, [x0, #:got_lo12:g_gc_free_blk_threshold]
17540 ldr x1, [x1, #:got_lo12:c_ftl_nand_data_op_blks_per_plane]
17542 add w1, w1, w1, lsl 1
17550 adrp x0, :got:g_in_swl_replace
17551 ldr x0, [x0, #:got_lo12:g_in_swl_replace]
17555 adrp x1, :got:c_ftl_nand_data_op_blks_per_plane
17556 ldr x0, [x0, #:got_lo12:g_gc_free_blk_threshold]
17557 ldr x1, [x1, #:got_lo12:c_ftl_nand_data_op_blks_per_plane]
17559 add w1, w1, w1, lsl 1
17565 adrp x0, :got:g_inkDie_check_enable
17566 ldr x0, [x0, #:got_lo12:g_inkDie_check_enable]
17573 adrp x0, :got:g_gc_temp_superblock
17575 ldr x0, [x0, #:got_lo12:g_gc_temp_superblock]
17580 adrp x1, :got:g_gc_next_blk
17581 ldr x1, [x1, #:got_lo12:g_gc_next_blk]
17585 ldr x1, [x19, #:got_lo12:g_gc_superblock]
17593 adrp x0, :got:g_in_swl_replace
17594 adrp x20, :got:g_num_free_superblocks
17595 adrp x21, :got:gc_ink_free_return_value
17596 ldr x0, [x0, #:got_lo12:g_in_swl_replace]
17598 adrp x0, :got:g_gc_free_blk_threshold
17599 ldr x24, [x20, #:got_lo12:g_num_free_superblocks]
17600 ldr x2, [x0, #:got_lo12:g_gc_free_blk_threshold]
17605 ldr x1, [x21, #:got_lo12:gc_ink_free_return_value]
17608 adrp x1, :got:g_MaxLpn
17609 adrp x3, :got:g_VaildLpn
17610 ldr x1, [x1, #:got_lo12:g_MaxLpn]
17611 ldr x3, [x3, #:got_lo12:g_VaildLpn]
17614 add w1, w1, w1, lsl 1
17618 adrp x1, :got:c_ftl_nand_data_op_blks_per_plane
17619 ldr x0, [x0, #:got_lo12:g_gc_free_blk_threshold]
17620 ldr x1, [x1, #:got_lo12:c_ftl_nand_data_op_blks_per_plane]
17622 add w1, w1, w1, lsl 1
17631 ldr x21, [x21, #:got_lo12:gc_ink_free_return_value]
17634 ldr x21, [x21, #:got_lo12:gc_ink_free_return_value]
17637 adrp x23, :got:c_ftl_nand_data_op_blks_per_plane
17638 ldr x23, [x23, #:got_lo12:c_ftl_nand_data_op_blks_per_plane]
17640 add w1, w1, w1, lsl 1
17643 bl List_get_gc_head_node
17644 ubfiz x0, x0, 1, 16
17645 adrp x1, :got:p_valid_page_count_table
17646 ldr x1, [x1, #:got_lo12:p_valid_page_count_table]
17649 adrp x0, :got:c_ftl_nand_page_pre_slc_blk
17650 adrp x1, :got:c_ftl_nand_planes_num
17651 ldr x0, [x0, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
17652 ldr x1, [x1, #:got_lo12:c_ftl_nand_planes_num]
17672 bl decrement_vpc_count
17673 ldr x20, [x20, #:got_lo12:g_num_free_superblocks]
17678 adrp x0, :got:g_inkDie_check_enable
17680 ldr x0, [x0, #:got_lo12:g_inkDie_check_enable]
17683 csinc w20, w20, wzr, ne
17688 ldr x1, [x19, #:got_lo12:g_gc_superblock]
17698 adrp x0, :got:g_gc_next_blk
17699 ldr x0, [x0, #:got_lo12:g_gc_next_blk]
17707 ldr x23, [x19, #:got_lo12:g_gc_superblock]
17714 ldr x23, [x19, #:got_lo12:g_gc_superblock]
17722 adrp x0, :got:g_gc_cur_blk_valid_pages
17725 ldr x0, [x0, #:got_lo12:g_gc_cur_blk_valid_pages]
17727 adrp x0, :got:p_valid_page_count_table
17728 ldr x0, [x0, #:got_lo12:p_valid_page_count_table]
17730 ldrh w1, [x0,x1,lsl 1]
17731 adrp x0, :got:g_gc_cur_blk_max_valid_pages
17732 ldr x0, [x0, #:got_lo12:g_gc_cur_blk_max_valid_pages]
17735 ldr x0, [x19, #:got_lo12:g_gc_superblock]
17737 adrp x0, :got:g_active_superblock
17738 ldr x0, [x0, #:got_lo12:g_active_superblock]
17742 adrp x0, :got:g_buffer_superblock
17743 ldr x0, [x0, #:got_lo12:g_buffer_superblock]
17753 ldr x19, [x19, #:got_lo12:g_gc_superblock]
17758 ldr x1, [x19, #:got_lo12:g_gc_superblock]
17761 adrp x0, :got:c_ftl_nand_page_pre_blk
17764 ldr x0, [x0, #:got_lo12:c_ftl_nand_page_pre_blk]
17768 adrp x1, :got:g_gc_cur_blk_valid_pages
17769 adrp x0, :got:g_gc_cur_blk_max_valid_pages
17770 ldr x1, [x1, #:got_lo12:g_gc_cur_blk_valid_pages]
17771 ldr x0, [x0, #:got_lo12:g_gc_cur_blk_max_valid_pages]
17777 adrp x0, :got:g_num_free_superblocks
17778 ldr x0, [x0, #:got_lo12:g_num_free_superblocks]
17782 adrp x0, :got:c_ftl_nand_page_pre_blk
17783 ldr x0, [x0, #:got_lo12:c_ftl_nand_page_pre_blk]
17786 ldr x0, [x19, #:got_lo12:g_gc_superblock]
17790 adrp x0, :got:g_in_swl_replace
17791 adrp x23, :got:c_ftl_nand_planes_num
17793 ldr x0, [x0, #:got_lo12:g_in_swl_replace]
17796 adrp x0, :got:g_gc_blk_index
17797 adrp x26, :got:g_gc_blk_index
17798 ldr x27, [x0, #:got_lo12:g_gc_blk_index]
17800 bl List_get_gc_head_node
17801 ldr x28, [x19, #:got_lo12:g_gc_superblock]
17818 adrp x1, :got:p_valid_page_count_table
17824 ldr x1, [x1, #:got_lo12:p_valid_page_count_table]
17825 ldr x5, [x23, #:got_lo12:c_ftl_nand_planes_num]
17827 adrp x1, :got:c_ftl_nand_page_pre_blk
17829 ldr x1, [x1, #:got_lo12:c_ftl_nand_page_pre_blk]
17840 adrp x0, :got:g_gc_blk_num
17841 ldr x0, [x0, #:got_lo12:g_gc_blk_num]
17846 ldr x0, [x26, #:got_lo12:g_gc_blk_index]
17854 ldr x19, [x19, #:got_lo12:g_gc_superblock]
17857 ldr x26, [x26, #:got_lo12:g_gc_blk_index]
17863 bl decrement_vpc_count
17864 ldr x26, [x26, #:got_lo12:g_gc_blk_index]
17870 ldr x23, [x19, #:got_lo12:g_gc_superblock]
17874 adrp x0, :got:g_gc_cur_blk_valid_pages
17876 ldr x0, [x0, #:got_lo12:g_gc_cur_blk_valid_pages]
17878 adrp x0, :got:p_valid_page_count_table
17879 ldr x0, [x0, #:got_lo12:p_valid_page_count_table]
17881 ldrh w1, [x0,x1,lsl 1]
17882 adrp x0, :got:g_gc_cur_blk_max_valid_pages
17883 ldr x0, [x0, #:got_lo12:g_gc_cur_blk_max_valid_pages]
17889 ldr x0, [x22, #:got_lo12:g_in_gc_progress]
17892 ldr x0, [x19, #:got_lo12:g_gc_superblock]
17894 adrp x0, :got:c_ftl_nand_page_pre_blk
17896 ldr x0, [x0, #:got_lo12:c_ftl_nand_page_pre_blk]
17907 adrp x0, :got:c_ftl_nand_planes_num
17908 ldr x0, [x0, #:got_lo12:c_ftl_nand_planes_num]
17910 ldr x0, [x19, #:got_lo12:g_gc_superblock]
17918 ldr x1, [x19, #:got_lo12:g_gc_superblock]
17919 add x1, x1, x0, lsl 1
17923 adrp x5, :got:req_gc
17925 orr w1, w2, w1, lsl 10
17927 ldr x5, [x5, #:got_lo12:req_gc]
17937 adrp x0, :got:req_gc
17942 ldr x0, [x0, #:got_lo12:req_gc]
17948 adrp x0, :got:req_gc
17950 ldr x6, [x0, #:got_lo12:req_gc]
17977 adrp x0, :got:g_gc_cur_blk_valid_pages
17981 ldr x1, [x0, #:got_lo12:g_gc_cur_blk_valid_pages]
17985 adrp x0, :got:g_gc_num_req
17986 ldr x28, [x0, #:got_lo12:g_gc_num_req]
17987 adrp x0, :got:req_gc_dst
17988 ldr x7, [x0, #:got_lo12:req_gc_dst]
17992 madd x1, x0, x27, x1
17996 bl Ftl_get_new_temp_ppa
18005 madd x0, x0, x27, x1
18010 adrp x2, :got:g_gc_temp_superblock
18016 ldr x2, [x2, #:got_lo12:g_gc_temp_superblock]
18020 adrp x0, :got:g_GlobalDataVersion
18021 ldr x0, [x0, #:got_lo12:g_GlobalDataVersion]
18038 bl Ftl_gc_temp_data_write_back
18047 adrp x0, :got:g_gc_num_req
18048 ldr x0, [x0, #:got_lo12:g_gc_num_req]
18051 bl Ftl_gc_temp_data_write_back
18054 ldr x22, [x22, #:got_lo12:g_in_gc_progress]
18057 adrp x0, :got:gc_ink_free_return_value
18058 ldr x0, [x0, #:got_lo12:gc_ink_free_return_value]
18062 adrp x0, :got:g_gc_cur_blk_valid_pages
18063 ldr x0, [x0, #:got_lo12:g_gc_cur_blk_valid_pages]
18066 adrp x0, :got:p_valid_page_count_table
18067 ldr x1, [x19, #:got_lo12:g_gc_superblock]
18068 ldr x2, [x0, #:got_lo12:p_valid_page_count_table]
18077 bl FtlCacheWriteBack
18081 ldr x0, [x19, #:got_lo12:g_gc_superblock]
18086 ldr x22, [x22, #:got_lo12:g_in_gc_progress]
18087 adrp x1, :got:gc_ink_free_return_value
18089 ldr x1, [x1, #:got_lo12:gc_ink_free_return_value]
18092 csinc w2, w2, w0, ne
18095 ldp x19, x20, [sp,16]
18096 ldp x21, x22, [sp,32]
18097 ldp x23, x24, [sp,48]
18098 ldp x25, x26, [sp,64]
18099 ldp x27, x28, [sp,80]
18100 ldp x29, x30, [sp], 160
18102 .size rk_ftl_garbage_collect, .-rk_ftl_garbage_collect
18105 .type FtlRead, %function
18107 stp x29, x30, [sp, -192]!
18110 stp x19, x20, [sp,16]
18111 stp x25, x26, [sp,64]
18112 stp x27, x28, [sp,80]
18113 stp x21, x22, [sp,32]
18114 stp x23, x24, [sp,48]
18123 bl FtlVendorPartRead
18128 adrp x0, :got:g_MaxLbaSector
18130 ldr x0, [x0, #:got_lo12:g_MaxLbaSector]
18135 adrp x23, :got:c_ftl_nand_sec_pre_page
18137 ldr x0, [x23, #:got_lo12:c_ftl_nand_sec_pre_page]
18141 adrp x0, :got:g_totle_read_sector
18143 ldr x0, [x0, #:got_lo12:g_totle_read_sector]
18148 adrp x0, :got:g_totle_read_page_count
18149 ldr x0, [x0, #:got_lo12:g_totle_read_page_count]
18155 bl FtlCacheMetchLpa
18157 bl FtlCacheWriteBack
18177 ldr x0, [x23, #:got_lo12:c_ftl_nand_sec_pre_page]
18181 madd w0, w20, w0, w3
18189 ubfiz x0, x0, 9, 23
18202 adrp x0, :got:req_read
18203 ldr x0, [x0, #:got_lo12:req_read]
18208 adrp x2, :got:p_io_data_buf_0
18211 ldr x2, [x2, #:got_lo12:p_io_data_buf_0]
18214 ldr x2, [x23, #:got_lo12:c_ftl_nand_sec_pre_page]
18217 msub w3, w3, w2, w19
18221 csel w3, w3, w28, ls
18232 adrp x0, :got:p_io_data_buf_1
18234 ldr x0, [x0, #:got_lo12:p_io_data_buf_1]
18237 ldr x0, [x23, #:got_lo12:c_ftl_nand_sec_pre_page]
18245 ldr x0, [x23, #:got_lo12:c_ftl_nand_sec_pre_page]
18250 ubfiz x0, x0, 9, 23
18254 adrp x0, :got:req_read
18255 adrp x2, :got:p_io_spare_buf
18256 ldr x0, [x0, #:got_lo12:req_read]
18257 ldr x2, [x2, #:got_lo12:p_io_spare_buf]
18261 adrp x0, :got:c_ftl_nand_byte_pre_oob
18262 ldr x0, [x0, #:got_lo12:c_ftl_nand_byte_pre_oob]
18267 and x0, x0, 4294967292
18274 adrp x0, :got:c_ftl_nand_planes_num
18275 ldr x0, [x0, #:got_lo12:c_ftl_nand_planes_num]
18281 adrp x0, :got:req_read
18284 ldr x0, [x0, #:got_lo12:req_read]
18289 ubfiz x0, x0, 9, 23
18303 adrp x0, :got:req_read
18304 ldr x0, [x0, #:got_lo12:req_read]
18311 adrp x0, :got:p_io_data_buf_0
18312 ldr x0, [x0, #:got_lo12:p_io_data_buf_0]
18326 adrp x0, :got:p_io_data_buf_1
18327 ldr x0, [x0, #:got_lo12:p_io_data_buf_1]
18331 ldr x0, [x23, #:got_lo12:c_ftl_nand_sec_pre_page]
18337 ubfiz x0, x0, 9, 23
18343 adrp x0, :got:req_read
18344 ldr x0, [x0, #:got_lo12:req_read]
18350 adrp x1, :got:g_sys_ext_data
18352 ldr x4, [x1, #:got_lo12:g_sys_ext_data]
18362 bl P2V_block_in_plane
18363 bl FtlGcRefreshBlock
18373 adrp x0, :got:g_gc_bad_block_temp_num
18374 ldr x0, [x0, #:got_lo12:g_gc_bad_block_temp_num]
18379 bl rk_ftl_garbage_collect
18383 ldp x19, x20, [sp,16]
18384 ldp x21, x22, [sp,32]
18385 ldp x23, x24, [sp,48]
18386 ldp x25, x26, [sp,64]
18387 ldp x27, x28, [sp,80]
18388 ldp x29, x30, [sp], 192
18390 .size FtlRead, .-FtlRead
18392 .global StorageSysDataLoad
18393 .type StorageSysDataLoad, %function
18394 StorageSysDataLoad:
18395 stp x29, x30, [sp, -48]!
18404 bl rknand_device_lock
18411 bl rknand_device_unlock
18414 ldp x29, x30, [sp], 48
18416 .size StorageSysDataLoad, .-StorageSysDataLoad
18419 .type FtlWrite, %function
18421 stp x29, x30, [sp, -320]!
18424 stp x23, x24, [sp,48]
18425 stp x25, x26, [sp,64]
18426 stp x19, x20, [sp,16]
18427 stp x21, x22, [sp,32]
18428 stp x27, x28, [sp,80]
18437 bl FtlVendorPartWrite
18440 adrp x0, :got:g_MaxLbaSector
18442 ldr x0, [x0, #:got_lo12:g_MaxLbaSector]
18447 adrp x0, :got:g_ftl_nand_free_count
18448 adrp x3, :got:c_ftl_nand_sec_pre_page
18452 ldr x0, [x0, #:got_lo12:g_ftl_nand_free_count]
18454 ldr x0, [x3, #:got_lo12:c_ftl_nand_sec_pre_page]
18461 adrp x0, :got:g_totle_write_page_count
18463 ldr x0, [x0, #:got_lo12:g_totle_write_page_count]
18467 adrp x0, :got:g_totle_write_sector
18468 ldr x0, [x0, #:got_lo12:g_totle_write_sector]
18476 adrp x19, :got:g_buffer_superblock
18477 ldr x19, [x19, #:got_lo12:g_buffer_superblock]
18480 adrp x19, :got:g_active_superblock
18481 ldr x19, [x19, #:got_lo12:g_active_superblock]
18483 adrp x22, :got:g_wr_page_num
18484 ldr x0, [x22, #:got_lo12:g_wr_page_num]
18487 adrp x0, :got:req_wr_io
18490 adrp x20, :got:last_cache_match_count
18491 ldr x0, [x0, #:got_lo12:req_wr_io]
18498 adrp x0, :got:g_totle_cache_write_count
18499 ldr x0, [x0, #:got_lo12:g_totle_cache_write_count]
18503 ldr x28, [x20, #:got_lo12:last_cache_match_count]
18507 msub w0, w26, w1, w23
18509 ubfiz x0, x0, 9, 23
18511 csel w19, w1, w24, ls
18530 ldr x20, [x20, #:got_lo12:last_cache_match_count]
18531 adrp x0, :got:gp_last_act_superblock
18533 ldr x0, [x0, #:got_lo12:gp_last_act_superblock]
18538 bl FtlCacheMetchLpa
18540 bl FtlCacheWriteBack
18542 adrp x0, :got:gp_last_act_superblock
18545 ldr x1, [x0, #:got_lo12:gp_last_act_superblock]
18551 add x0, x0, :lo12:.LC116
18558 adrp x0, :got:g_active_superblock
18559 adrp x20, :got:g_active_superblock
18560 ldr x0, [x0, #:got_lo12:g_active_superblock]
18563 adrp x19, :got:g_buffer_superblock
18564 ldr x0, [x19, #:got_lo12:g_buffer_superblock]
18567 bl allocate_new_data_superblock
18568 adrp x0, :got:power_up_flag
18569 ldr x0, [x0, #:got_lo12:power_up_flag]
18572 ldr x0, [x20, #:got_lo12:g_active_superblock]
18573 bl allocate_new_data_superblock
18574 adrp x0, :got:power_up_flag
18575 ldr x0, [x0, #:got_lo12:power_up_flag]
18579 ldr x19, [x20, #:got_lo12:g_active_superblock]
18582 adrp x2, :got:power_up_flag
18584 ldr x2, [x2, #:got_lo12:power_up_flag]
18588 bl allocate_new_data_superblock
18591 ldr x19, [x19, #:got_lo12:g_buffer_superblock]
18596 bl allocate_new_data_superblock
18599 ldr x0, [x0, #:got_lo12:gp_last_act_superblock]
18602 adrp x2, :got:c_wr_page_buf_num
18603 ldr x3, [x22, #:got_lo12:g_wr_page_num]
18606 ldr x0, [x2, #:got_lo12:c_wr_page_buf_num]
18612 csel w0, w1, w0, ls
18614 csel w0, w0, w21, ls
18639 ldr x1, [x1, #:got_lo12:c_ftl_nand_sec_pre_page]
18641 msub w2, w28, w1, w2
18651 bl get_new_active_ppa
18652 ldr x8, [x22, #:got_lo12:g_wr_page_num]
18653 adrp x4, :got:req_wr_io
18657 ldr x6, [x4, #:got_lo12:req_wr_io]
18667 adrp x0, :got:c_ftl_nand_byte_pre_oob
18668 ldr x0, [x0, #:got_lo12:c_ftl_nand_byte_pre_oob]
18670 adrp x0, :got:p_wr_io_spare_buf
18671 ldr x0, [x0, #:got_lo12:p_wr_io_spare_buf]
18674 and x3, x5, 4294967292
18675 adrp x5, :got:c_ftl_nand_byte_pre_page
18680 ldr x20, [x5, #:got_lo12:c_ftl_nand_byte_pre_page]
18684 adrp x9, :got:p_wr_io_data_buf
18685 and x0, x0, 4294967292
18686 ldr x9, [x9, #:got_lo12:p_wr_io_data_buf]
18706 ldr x0, [x0, #:got_lo12:c_ftl_nand_sec_pre_page]
18709 msub w20, w28, w20, w0
18716 ldr x0, [x0, #:got_lo12:c_ftl_nand_sec_pre_page]
18719 msub w0, w0, w20, w23
18723 csel w20, w20, w24, ls
18726 ldr x0, [x0, #:got_lo12:c_ftl_nand_sec_pre_page]
18735 ubfiz x1, x1, 9, 23
18741 ldr x2, [x22, #:got_lo12:g_wr_page_num]
18742 ldr x4, [x4, #:got_lo12:req_wr_io]
18750 ldr x2, [x22, #:got_lo12:g_wr_page_num]
18751 ldr x4, [x4, #:got_lo12:req_wr_io]
18752 ldr x5, [x5, #:got_lo12:c_ftl_nand_byte_pre_page]
18769 ldr x0, [x22, #:got_lo12:g_wr_page_num]
18770 ldr x1, [x4, #:got_lo12:req_wr_io]
18789 adrp x0, :got:g_sys_ext_data
18790 ldr x0, [x0, #:got_lo12:g_sys_ext_data]
18799 adrp x0, :got:g_sys_ext_data
18802 ldr x0, [x0, #:got_lo12:g_sys_ext_data]
18811 ldr x0, [x22, #:got_lo12:g_wr_page_num]
18813 ldr x5, [x5, #:got_lo12:c_ftl_nand_byte_pre_page]
18818 ldr x1, [x4, #:got_lo12:req_wr_io]
18831 ldr x1, [x22, #:got_lo12:g_wr_page_num]
18832 ldr x4, [x4, #:got_lo12:req_wr_io]
18838 ubfiz x0, x0, 9, 23
18844 ldr x1, [x22, #:got_lo12:g_wr_page_num]
18845 ldr x4, [x4, #:got_lo12:req_wr_io]
18851 ldr x1, [x1, #:got_lo12:c_ftl_nand_sec_pre_page]
18856 ubfiz x1, x1, 9, 23
18867 ldr x0, [x0, #:got_lo12:c_ftl_nand_sec_pre_page]
18871 ubfiz x0, x0, 9, 23
18881 ldr x1, [x1, #:got_lo12:c_ftl_nand_sec_pre_page]
18886 ubfiz x1, x1, 9, 23
18895 adrp x1, :got:g_GlobalDataVersion
18896 ldr x1, [x1, #:got_lo12:g_GlobalDataVersion]
18902 csel w0, w0, wzr, ne
18908 ldr x1, [x22, #:got_lo12:g_wr_page_num]
18927 ldr x1, [x22, #:got_lo12:g_wr_page_num]
18928 ldr x0, [x0, #:got_lo12:c_wr_page_buf_num]
18939 bl FtlCacheWriteBack
18940 ldr x0, [x22, #:got_lo12:g_wr_page_num]
18945 bl rknand_queue_cond_resched
18951 bl rk_ftl_garbage_collect
18954 ldp x19, x20, [sp,16]
18955 ldp x21, x22, [sp,32]
18956 ldp x23, x24, [sp,48]
18957 ldp x25, x26, [sp,64]
18958 ldp x27, x28, [sp,80]
18959 ldp x29, x30, [sp], 320
18961 .size FtlWrite, .-FtlWrite
18963 .global StorageSysDataStore
18964 .type StorageSysDataStore, %function
18965 StorageSysDataStore:
18966 stp x29, x30, [sp, -48]!
18971 bl rknand_device_lock
18978 bl rknand_device_unlock
18981 ldp x29, x30, [sp], 48
18983 .size StorageSysDataStore, .-StorageSysDataStore
18985 .type FlashReadFacBbtData.part.17, %function
18986 FlashReadFacBbtData.part.17:
18987 stp x29, x30, [sp, -32]!
18989 adrp x4, :got:gFlashPageBuffer0
18994 adrp x1, :got:gNandFlashIdbBlockAddr
18997 ldr x0, [x1, #:got_lo12:gNandFlashIdbBlockAddr]
19001 ldr x0, [x4, #:got_lo12:gFlashPageBuffer0]
19013 ldr x4, [x4, #:got_lo12:gFlashPageBuffer0]
19020 add x0, x0, :lo12:.LC117
19022 bl rknand_print_hex
19025 ldp x29, x30, [sp], 32
19027 .size FlashReadFacBbtData.part.17, .-FlashReadFacBbtData.part.17
19029 .global FlashReadFacBbtData
19030 .type FlashReadFacBbtData, %function
19031 FlashReadFacBbtData:
19032 adrp x4, :got:gNandPhyInfo
19033 stp x29, x30, [sp, -160]!
19035 ldr x4, [x4, #:got_lo12:gNandPhyInfo]
19036 stp x19, x20, [sp,16]
19037 stp x21, x22, [sp,32]
19038 stp x23, x24, [sp,48]
19039 stp x25, x26, [sp,64]
19047 adrp x4, :got:gFlashSpareBuffer
19051 adrp x0, :got:gFlashPageBuffer0
19053 ldr x0, [x0, #:got_lo12:gFlashPageBuffer0]
19060 ldr x0, [x4, #:got_lo12:gFlashSpareBuffer]
19076 ldr x0, [x21, #:got_lo12:gFlashSpareBuffer]
19086 bl FlashReadFacBbtData.part.17
19095 ldp x19, x20, [sp,16]
19096 ldp x21, x22, [sp,32]
19097 ldp x23, x24, [sp,48]
19098 ldp x25, x26, [sp,64]
19100 ldp x29, x30, [sp], 160
19102 .size FlashReadFacBbtData, .-FlashReadFacBbtData
19104 .global FlashGetBadBlockList
19105 .type FlashGetBadBlockList, %function
19106 FlashGetBadBlockList:
19107 adrp x2, :got:gpNandParaInfo
19108 stp x29, x30, [sp, -48]!
19110 ldr x2, [x2, #:got_lo12:gpNandParaInfo]
19111 stp x19, x20, [sp,16]
19114 adrp x20, :got:gFlashPageBuffer1
19118 ldr x0, [x20, #:got_lo12:gFlashPageBuffer1]
19124 bl FlashReadFacBbtData
19139 ldr x3, [x20, #:got_lo12:gFlashPageBuffer1]
19143 ldr w4, [x6,x4,lsl 2]
19147 ubfiz x1, x1, 1, 16
19157 ubfiz x1, x1, 1, 16
19159 ldp x19, x20, [sp,16]
19163 ldp x29, x30, [sp], 48
19165 .size FlashGetBadBlockList, .-FlashGetBadBlockList
19168 .type FtlMakeBbt, %function
19170 stp x29, x30, [sp, -96]!
19172 stp x19, x20, [sp,16]
19173 adrp x19, :got:gBbtInfo
19174 stp x21, x22, [sp,32]
19175 stp x23, x24, [sp,48]
19176 stp x25, x26, [sp,64]
19177 stp x27, x28, [sp,80]
19180 bl FtlLoadFactoryBbt
19181 ldr x22, [x19, #:got_lo12:gBbtInfo]
19182 adrp x25, :got:c_ftl_nand_blks_per_die
19185 adrp x0, :got:c_ftl_nand_die_num
19186 ldr x0, [x0, #:got_lo12:c_ftl_nand_die_num]
19190 adrp x0, :got:p_sys_data_buf
19191 adrp x1, :got:req_sys
19193 ldr x0, [x0, #:got_lo12:p_sys_data_buf]
19194 ldr x20, [x1, #:got_lo12:req_sys]
19195 adrp x1, :got:p_sys_spare_buf
19198 ldr x1, [x1, #:got_lo12:p_sys_spare_buf]
19204 ldr x24, [x25, #:got_lo12:c_ftl_nand_blks_per_die]
19206 madd w26, w21, w1, w26
19222 adrp x28, :got:c_ftl_nand_bbm_buf_size
19223 bl FlashGetBadBlockList
19227 ldr x0, [x25, #:got_lo12:c_ftl_nand_blks_per_die]
19232 ldr x26, [x25, #:got_lo12:c_ftl_nand_blks_per_die]
19234 madd w0, w21, w0, w20
19235 bl FtlBbmIsBadBlock
19242 adrp x0, :got:p_sys_spare_buf
19246 ldr x0, [x0, #:got_lo12:p_sys_spare_buf]
19256 madd w26, w21, w0, w1
19257 adrp x0, :got:req_sys
19259 ldr x27, [x0, #:got_lo12:req_sys]
19262 ldr x0, [x28, #:got_lo12:c_ftl_nand_bbm_buf_size]
19269 bl FlashEraseBlocks
19279 bl FtlBbmMapBadBlock
19286 bl FtlBbmMapBadBlock
19290 adrp x21, :got:c_ftl_nand_reserved_blks
19292 ldr x0, [x21, #:got_lo12:c_ftl_nand_reserved_blks]
19298 bl FtlBbmMapBadBlock
19302 ldr x0, [x19, #:got_lo12:gBbtInfo]
19308 ldr x21, [x19, #:got_lo12:gBbtInfo]
19314 bl FtlBbmIsBadBlock
19321 bl FtlBbmMapBadBlock
19337 ldr x19, [x19, #:got_lo12:gBbtInfo]
19338 adrp x0, :got:req_erase
19342 ldr x0, [x0, #:got_lo12:req_erase]
19351 bl FlashEraseBlocks
19353 bl FtlBbmMapBadBlock
19355 bl FtlBbmMapBadBlock
19367 ldp x19, x20, [sp,16]
19368 ldp x21, x22, [sp,32]
19369 ldp x23, x24, [sp,48]
19370 ldp x25, x26, [sp,64]
19371 ldp x27, x28, [sp,80]
19372 ldp x29, x30, [sp], 96
19374 .size FtlMakeBbt, .-FtlMakeBbt
19376 .global FtlLowFormat
19377 .type FtlLowFormat, %function
19379 stp x29, x30, [sp, -80]!
19381 stp x19, x20, [sp,16]
19382 adrp x19, :got:g_GlobalSysVersion
19384 stp x23, x24, [sp,48]
19385 stp x21, x22, [sp,32]
19386 ldr x0, [x19, #:got_lo12:g_GlobalSysVersion]
19387 adrp x23, :got:c_ftl_nand_max_sys_blks
19389 adrp x0, :got:g_GlobalDataVersion
19390 ldr x0, [x0, #:got_lo12:g_GlobalDataVersion]
19392 ldr x0, [x23, #:got_lo12:c_ftl_nand_max_sys_blks]
19394 bl FtlFreeSysBlkQueueInit
19400 adrp x3, :got:c_ftl_nand_sec_pre_page
19401 adrp x4, :got:p_io_data_buf_0
19402 adrp x5, :got:p_io_data_buf_1
19404 ldr x1, [x3, #:got_lo12:c_ftl_nand_sec_pre_page]
19408 ldr x1, [x4, #:got_lo12:p_io_data_buf_0]
19409 ubfiz x2, x0, 2, 16
19412 orr w1, w0, w1, lsl 16
19416 ldr x1, [x5, #:got_lo12:p_io_data_buf_1]
19419 movk w1, 0xa0f, lsl 16
19423 adrp x24, :got:c_ftl_nand_data_blks_per_plane
19425 adrp x25, :got:c_ftl_nand_blk_pre_plane
19426 ldr x0, [x24, #:got_lo12:c_ftl_nand_data_blks_per_plane]
19429 ldr x0, [x25, #:got_lo12:c_ftl_nand_blk_pre_plane]
19430 adrp x20, :got:c_ftl_nand_blk_pre_plane
19437 bl FtlLowFormatEraseBlock
19443 adrp x22, :got:c_ftl_nand_planes_num
19445 ldr x0, [x22, #:got_lo12:c_ftl_nand_planes_num]
19455 adrp x0, :got:c_ftl_nand_init_sys_blks_per_plane
19456 ldr x0, [x0, #:got_lo12:c_ftl_nand_init_sys_blks_per_plane]
19459 bl FtlSysBlkNumInit
19460 ldr x23, [x23, #:got_lo12:c_ftl_nand_max_sys_blks]
19462 bl FtlFreeSysBlkQueueInit
19463 ldr x0, [x24, #:got_lo12:c_ftl_nand_data_blks_per_plane]
19466 ldr x0, [x20, #:got_lo12:c_ftl_nand_blk_pre_plane]
19473 bl FtlLowFormatEraseBlock
19477 ldr x0, [x24, #:got_lo12:c_ftl_nand_data_blks_per_plane]
19484 bl FtlLowFormatEraseBlock
19490 adrp x0, :got:g_cur_erase_blk
19491 ldr x1, [x20, #:got_lo12:c_ftl_nand_blk_pre_plane]
19492 adrp x2, :got:g_MaxLpn
19493 adrp x5, :got:c_ftl_nand_data_op_blks_per_plane
19494 ldr x0, [x0, #:got_lo12:g_cur_erase_blk]
19497 adrp x0, :got:c_ftl_nand_max_data_blks
19498 ldr x22, [x22, #:got_lo12:c_ftl_nand_planes_num]
19499 ldr x0, [x0, #:got_lo12:c_ftl_nand_max_data_blks]
19500 ldr x8, [x2, #:got_lo12:g_MaxLpn]
19506 ldr x4, [x5, #:got_lo12:c_ftl_nand_data_op_blks_per_plane]
19520 adrp x3, :got:g_inkDie_check_enable
19521 ldr x3, [x3, #:got_lo12:g_inkDie_check_enable]
19525 ldr x1, [x5, #:got_lo12:c_ftl_nand_data_op_blks_per_plane]
19529 add w3, w4, w3, asr 2
19532 adrp x3, :got:c_ftl_nand_ext_blk_pre_plane
19533 ldr x3, [x3, #:got_lo12:c_ftl_nand_ext_blk_pre_plane]
19536 ldr x3, [x5, #:got_lo12:c_ftl_nand_data_op_blks_per_plane]
19538 add w4, w4, w1, lsr 1
19543 ldr x4, [x2, #:got_lo12:g_MaxLpn]
19549 ldr x1, [x5, #:got_lo12:c_ftl_nand_data_op_blks_per_plane]
19550 adrp x22, :got:g_MaxLbn
19551 ldr x2, [x2, #:got_lo12:g_MaxLpn]
19552 adrp x21, :got:p_valid_page_count_table
19556 ldr x1, [x22, #:got_lo12:g_MaxLbn]
19559 adrp x1, :got:c_ftl_nand_page_pre_blk
19560 ldr x1, [x1, #:got_lo12:c_ftl_nand_page_pre_blk]
19564 adrp x2, :got:c_ftl_nand_sec_pre_page
19565 adrp x1, :got:g_MaxLbaSector
19566 ldr x2, [x2, #:got_lo12:c_ftl_nand_sec_pre_page]
19567 ldr x1, [x1, #:got_lo12:g_MaxLbaSector]
19572 ldr x0, [x20, #:got_lo12:c_ftl_nand_blk_pre_plane]
19574 ldr x1, [x21, #:got_lo12:p_valid_page_count_table]
19580 adrp x0, :got:g_VaildLpn
19583 ldr x0, [x0, #:got_lo12:g_VaildLpn]
19585 adrp x0, :got:g_gc_superblock
19586 ldr x0, [x0, #:got_lo12:g_gc_superblock]
19591 adrp x0, :got:g_active_superblock
19593 ldr x2, [x0, #:got_lo12:g_active_superblock]
19599 ldr x21, [x24, #:got_lo12:g_active_superblock]
19604 ldr x0, [x20, #:got_lo12:p_valid_page_count_table]
19607 strh w23, [x0,x1,lsl 1]
19613 ldr x1, [x19, #:got_lo12:g_GlobalSysVersion]
19621 ldr x0, [x20, #:got_lo12:p_valid_page_count_table]
19623 strh w2, [x0,x1,lsl 1]
19624 adrp x0, :got:g_buffer_superblock
19627 ldr x1, [x0, #:got_lo12:g_buffer_superblock]
19635 ldr x21, [x23, #:got_lo12:g_buffer_superblock]
19640 ldr x0, [x20, #:got_lo12:p_valid_page_count_table]
19643 strh w24, [x0,x1,lsl 1]
19649 ldr x19, [x19, #:got_lo12:g_GlobalSysVersion]
19656 ldr x20, [x20, #:got_lo12:p_valid_page_count_table]
19659 strh w2, [x0,x1,lsl 1]
19660 adrp x0, :got:g_gc_temp_superblock
19661 ldr x0, [x0, #:got_lo12:g_gc_temp_superblock]
19663 bl FtlFreeSysBlkQueueOut
19664 adrp x1, :got:gSysInfo
19665 ldr x1, [x1, #:got_lo12:gSysInfo]
19669 ldr x22, [x22, #:got_lo12:g_MaxLbn]
19679 adrp x0, :got:gFtlInitStatus
19681 ldr x0, [x0, #:got_lo12:gFtlInitStatus]
19686 ldp x19, x20, [sp,16]
19687 ldp x21, x22, [sp,32]
19688 ldp x23, x24, [sp,48]
19689 ldp x29, x30, [sp], 80
19691 .size FtlLowFormat, .-FtlLowFormat
19693 .global FtlReInitForSDUpdata
19694 .type FtlReInitForSDUpdata, %function
19695 FtlReInitForSDUpdata:
19696 adrp x0, :got:RK29_NANDC_REG_BASE
19697 stp x29, x30, [sp, -48]!
19699 ldr x0, [x0, #:got_lo12:RK29_NANDC_REG_BASE]
19705 bl FlashLoadFactorBbt
19707 bl FlashMakeFactorBbt
19709 adrp x0, :got:gFlashPageBuffer1
19710 ldr x0, [x0, #:got_lo12:gFlashPageBuffer1]
19712 bl FlashReadIdbDataRaw
19717 bl FlashReadFacBbtData
19732 adrp x0, :got:gNandIDBResBlkNum
19733 ldr x0, [x0, #:got_lo12:gNandIDBResBlkNum]
19747 adrp x0, :got:gNandIDBResBlkNum
19748 ldr x0, [x0, #:got_lo12:gNandIDBResBlkNum]
19753 adrp x1, :got:gNandIDBResBlkNum
19754 adrp x0, :got:gNandPhyInfo
19755 ldr x1, [x1, #:got_lo12:gNandIDBResBlkNum]
19756 ldr x0, [x0, #:got_lo12:gNandPhyInfo]
19762 add x1, x1, :lo12:.LC73
19763 add x0, x0, :lo12:.LC72
19766 adrp x0, :got:gNandPhyInfo
19767 ldr x0, [x0, #:got_lo12:gNandPhyInfo]
19768 bl FtlConstantsInit
19769 bl FtlVariablesInit
19770 adrp x0, :got:c_ftl_nand_max_sys_blks
19771 ldr x0, [x0, #:got_lo12:c_ftl_nand_max_sys_blks]
19773 bl FtlFreeSysBlkQueueInit
19789 adrp x1, :got:gFtlInitStatus
19791 ldr x1, [x1, #:got_lo12:gFtlInitStatus]
19797 ldp x29, x30, [sp], 48
19799 .size FtlReInitForSDUpdata, .-FtlReInitForSDUpdata
19801 .global IdBlockReadData
19802 .type IdBlockReadData, %function
19804 stp x29, x30, [sp, -176]!
19806 stp x19, x20, [sp,16]
19807 stp x23, x24, [sp,48]
19809 adrp x23, :got:gpNandParaInfo
19810 adrp x0, :got:gBlockPageAlignSize
19811 stp x21, x22, [sp,32]
19812 ldr x21, [x23, #:got_lo12:gpNandParaInfo]
19814 ldr x0, [x0, #:got_lo12:gBlockPageAlignSize]
19815 stp x27, x28, [sp,80]
19816 stp x25, x26, [sp,64]
19825 add x0, x0, :lo12:.LC118
19832 adrp x6, :got:slcPageToMlcPageTbl
19833 adrp x7, :got:gFlashPageBuffer1
19835 adrp x8, :got:gNandFlashEccBits
19837 adrp x9, :got:gNandFlashIDBEccBits
19838 msub w19, w0, w19, w20
19846 ldr x1, [x6, #:got_lo12:slcPageToMlcPageTbl]
19848 ldr x25, [x7, #:got_lo12:gFlashPageBuffer1]
19852 ldrh w24, [x1,w0,sxtw 1]
19854 ldr x0, [x26, #:got_lo12:gpNandParaInfo]
19861 ldr x0, [x8, #:got_lo12:gNandFlashEccBits]
19865 ldr x0, [x9, #:got_lo12:gNandFlashIDBEccBits]
19866 madd w24, w24, w28, w3
19881 ubfiz x0, x21, 9, 16
19901 add x0, x0, :lo12:.LC119
19904 ldp x19, x20, [sp,16]
19905 ldp x21, x22, [sp,32]
19906 ldp x23, x24, [sp,48]
19907 ldp x25, x26, [sp,64]
19908 ldp x27, x28, [sp,80]
19909 ldp x29, x30, [sp], 176
19911 .size IdBlockReadData, .-IdBlockReadData
19913 .global IDBlockWriteData
19914 .type IDBlockWriteData, %function
19916 stp x29, x30, [sp, -224]!
19918 stp x21, x22, [sp,32]
19919 stp x25, x26, [sp,64]
19920 adrp x21, :got:gpNandParaInfo
19922 adrp x0, :got:gBlockPageAlignSize
19923 stp x23, x24, [sp,48]
19924 ldr x22, [x21, #:got_lo12:gpNandParaInfo]
19926 ldr x0, [x0, #:got_lo12:gBlockPageAlignSize]
19927 stp x27, x28, [sp,80]
19928 stp x19, x20, [sp,16]
19938 add x0, x0, :lo12:.LC120
19941 adrp x0, :got:gNandPhyInfo
19944 ldr x0, [x0, #:got_lo12:gNandPhyInfo]
19951 adrp x5, :got:slcPageToMlcPageTbl
19952 adrp x6, :got:gNandFlashEccBits
19953 adrp x7, :got:gNandFlashIDBEccBits
19955 msub w26, w26, w19, w25
19965 ldr x0, [x5, #:got_lo12:slcPageToMlcPageTbl]
19968 ldrh w4, [x0,w1,sxtw 1]
19973 ldr x4, [x5, #:got_lo12:slcPageToMlcPageTbl]
19974 ubfiz x2, x24, 9, 16
19975 ldr x0, [x6, #:got_lo12:gNandFlashEccBits]
19979 ldrh w1, [x4,w19,sxtw 1]
19982 ldr x0, [x7, #:got_lo12:gNandFlashIDBEccBits]
19983 madd w1, w1, w22, w23
19992 ldr x0, [x21, #:got_lo12:gpNandParaInfo]
20007 ldrh w2, [x4,w19,sxtw 1]
20009 bl FlashPageProgMsbFFData
20019 add x0, x0, :lo12:.LC121
20022 ldp x19, x20, [sp,16]
20023 ldp x21, x22, [sp,32]
20024 ldp x23, x24, [sp,48]
20025 ldp x25, x26, [sp,64]
20026 ldp x27, x28, [sp,80]
20027 ldp x29, x30, [sp], 224
20029 .size IDBlockWriteData, .-IDBlockWriteData
20031 .global write_idblock
20032 .type write_idblock, %function
20034 stp x29, x30, [sp, -112]!
20036 stp x23, x24, [sp,48]
20038 adrp x0, :got:gpNandParaInfo
20039 stp x19, x20, [sp,16]
20040 stp x21, x22, [sp,32]
20041 ldr x0, [x0, #:got_lo12:gpNandParaInfo]
20043 stp x25, x26, [sp,64]
20044 stp x27, x28, [sp,80]
20048 movk w1, 0x240, lsl 16
20051 adrp x0, :got:gBlockPageAlignSize
20052 ldr x0, [x0, #:got_lo12:gBlockPageAlignSize]
20055 movk x0, 0x3, lsl 16
20064 ubfiz x0, x19, 9, 23
20074 adrp x26, :got:gNandIDBResBlkNum
20075 csel w19, w19, w0, ls
20077 add x0, x0, :lo12:.LC122
20081 bl rknand_print_hex
20082 ldr x26, [x26, #:got_lo12:gNandIDBResBlkNum]
20085 add x0, x0, :lo12:.LC123
20097 add x0, x0, :lo12:.LC124
20108 add x25, x25, :lo12:.LC125
20109 add x26, x26, :lo12:.LC126
20110 add x27, x27, :lo12:.LC127
20112 adrp x0, :got:gNandPhyInfo
20113 ldr w2, [x23,x28,lsl 2]
20115 ldr x0, [x0, #:got_lo12:gNandPhyInfo]
20119 adrp x0, :got:gNandFlashIdbBlockAddr
20120 ldr x0, [x0, #:got_lo12:gNandFlashIdbBlockAddr]
20129 ldr w0, [x23,x28,lsl 2]
20133 bl IDBlockWriteData
20134 ldr w0, [x23,x28,lsl 2]
20146 ldr w4, [x20,x0,lsl 2]
20149 add x1, x21, x0, lsl 2
20153 ldr w2, [x23,x28,lsl 2]
20166 bl rknand_print_hex
20172 bl rknand_print_hex
20177 ldr w0, [x23,x28,lsl 2]
20181 bl IDBlockWriteData
20183 add x0, x0, :lo12:.LC128
20197 ldp x19, x20, [sp,16]
20198 ldp x21, x22, [sp,32]
20199 ldp x23, x24, [sp,48]
20200 ldp x25, x26, [sp,64]
20201 ldp x27, x28, [sp,80]
20202 ldp x29, x30, [sp], 112
20204 .size write_idblock, .-write_idblock
20207 .type CRC_32, %function
20211 adrp x5, :got:gTable_Crc32
20218 ldr x6, [x5, #:got_lo12:gTable_Crc32]
20219 eor w3, w3, w0, lsr 24
20220 ldr w3, [x6,w3,uxtw 2]
20221 eor w0, w3, w0, lsl 8
20225 .size CRC_32, .-CRC_32
20227 .type rknand_sys_storage_ioctl, %function
20228 rknand_sys_storage_ioctl:
20230 stp x29, x30, [sp, -48]!
20232 stp x19, x20, [sp,16]
20233 stp x21, x22, [sp,32]
20238 movk w0, 0x4004, lsl 16
20242 movk w0, 0x4004, lsl 16
20246 movk w0, 0x4004, lsl 16
20250 movk w0, 0x4004, lsl 16
20254 movk w0, 0x4004, lsl 16
20258 movk w0, 0x4004, lsl 16
20262 movk w0, 0x4004, lsl 16
20265 bl rknand_dev_flush
20269 movk w0, 0x4004, lsl 16
20273 movk w0, 0x4004, lsl 16
20279 movk w0, 0x4004, lsl 16
20283 movk w0, 0x4004, lsl 16
20287 movk w0, 0x4004, lsl 16
20293 movk w0, 0x4004, lsl 16
20297 movk w0, 0x4004, lsl 16
20303 movk w0, 0x4004, lsl 16
20307 movk w0, 0x4004, lsl 16
20311 movk w0, 0x4004, lsl 16
20315 movk w0, 0x4004, lsl 16
20319 movk w0, 0x4004, lsl 16
20323 movk w0, 0x4004, lsl 16
20329 movk w0, 0x4004, lsl 16
20333 movk w0, 0x4004, lsl 16
20337 movk w0, 0x4004, lsl 16
20341 movk w0, 0x4004, lsl 16
20347 movk w0, 0x4004, lsl 16
20351 movk w0, 0x4004, lsl 16
20357 add x0, x0, :lo12:.LC129
20364 // 257 "./arch/arm64/include/asm/uaccess.h" 1
20365 adds x0, x0, 512; ccmp x0, x2, #2, cc; cset x1, ls
20372 bl __copy_from_user
20381 add x0, x0, :lo12:.LC130
20387 add x0, x0, :lo12:.LC131
20392 bl rknand_device_unlock
20397 bl rknand_device_unlock
20400 ubfiz x2, x21, 9, 23
20404 // 266 "./arch/arm64/include/asm/uaccess.h" 1
20405 adds x0, x0, x2; ccmp x0, x1, #2, cc; cset x3, ls
20416 add x0, x0, :lo12:.LC132
20424 add x0, x0, :lo12:.LC133
20431 // 257 "./arch/arm64/include/asm/uaccess.h" 1
20432 adds x0, x0, 4096; ccmp x0, x2, #2, cc; cset x1, ls
20439 bl __copy_from_user
20449 add x0, x0, :lo12:.LC134
20451 adrp x0, :got:g_idb_buffer
20453 ldr x21, [x0, #:got_lo12:g_idb_buffer]
20464 movk w1, 0x240, lsl 16
20473 movk w1, 0x3, lsl 16
20476 ldr x19, [x19, #:got_lo12:g_idb_buffer]
20479 add x0, x1, x0, uxtw
20485 add x0, x0, :lo12:.LC135
20492 // 257 "./arch/arm64/include/asm/uaccess.h" 1
20493 adds x1, x1, 28; ccmp x1, x2, #2, cc; cset x0, ls
20500 bl __copy_from_user
20504 stp xzr, xzr, [x20]
20512 add x0, x0, :lo12:.LC136
20516 movk w0, 0x3, lsl 16
20519 adrp x21, :got:g_idb_buffer
20520 ldr x21, [x21, #:got_lo12:g_idb_buffer]
20528 bl rknand_device_unlock
20533 bl rknand_device_unlock
20540 add x0, x0, :lo12:.LC137
20549 // 266 "./arch/arm64/include/asm/uaccess.h" 1
20550 adds x0, x0, 11; ccmp x0, x1, #2, cc; cset x2, ls
20560 add x0, x0, :lo12:.LC138
20562 bl rknand_device_unlock
20563 bl FtlReInitForSDUpdata
20565 bl rknand_device_unlock
20567 bl nand_blk_add_whole_disk
20568 bl rknand_device_unlock
20572 bl FlashReadFacBbtData
20573 bl rknand_device_unlock
20576 add x0, x0, :lo12:.LC139
20579 bl rknand_print_hex
20585 // 266 "./arch/arm64/include/asm/uaccess.h" 1
20586 adds x0, x0, 64; ccmp x0, x1, #2, cc; cset x2, ls
20596 add x0, x0, :lo12:.LC140
20598 adrp x0, :got:gpDrmKeyInfo
20599 ldr x0, [x0, #:got_lo12:gpDrmKeyInfo]
20608 // 266 "./arch/arm64/include/asm/uaccess.h" 1
20609 adds x0, x0, 4; ccmp x0, x1, #2, cc; cset x2, ls
20619 add x0, x0, :lo12:.LC141
20621 bl rknand_device_unlock
20627 bl rknand_device_unlock
20633 // 266 "./arch/arm64/include/asm/uaccess.h" 1
20634 adds x0, x0, 1024; ccmp x0, x1, #2, cc; cset x2, ls
20644 add x0, x0, :lo12:.LC142
20651 // 257 "./arch/arm64/include/asm/uaccess.h" 1
20652 adds x0, x0, 520; ccmp x0, x1, #2, cc; cset x2, ls
20660 bl __copy_from_user
20665 add x0, x0, :lo12:.LC143
20672 // 257 "./arch/arm64/include/asm/uaccess.h" 1
20673 adds x0, x0, 520; ccmp x0, x1, #2, cc; cset x2, ls
20685 movk w0, 0x4b4d, lsl 16
20695 adrp x1, :got:gpDrmKeyInfo
20698 ldr x1, [x1, #:got_lo12:gpDrmKeyInfo]
20701 adrp x0, :got:SecureBootCheckOK
20702 ldr x0, [x0, #:got_lo12:SecureBootCheckOK]
20705 movk w0, 0xc059, lsl 16
20726 bl __copy_from_user
20730 movk w0, 0x4b4d, lsl 16
20736 adrp x0, :got:SecureBootCheckOK
20738 ldr x0, [x0, #:got_lo12:SecureBootCheckOK]
20741 movk w0, 0xc059, lsl 16
20749 adrp x0, :got:gpDrmKeyInfo
20750 ldr x0, [x0, #:got_lo12:gpDrmKeyInfo]
20762 add x0, x0, :lo12:.LC144
20769 // 257 "./arch/arm64/include/asm/uaccess.h" 1
20770 adds x0, x0, 520; ccmp x0, x1, #2, cc; cset x2, ls
20778 bl __copy_from_user
20782 movk w0, 0x4253, lsl 16
20788 adrp x19, :got:SecureBootEn
20789 ldr x0, [x19, #:got_lo12:SecureBootEn]
20796 adrp x0, :got:gpBootConfig
20798 movk w3, 0x4453, lsl 16
20799 ldr x1, [x0, #:got_lo12:gpBootConfig]
20805 movk w3, 0x4453, lsl 16
20814 ldr x0, [x0, #:got_lo12:gpBootConfig]
20818 bl StorageSysDataStore
20819 adrp x0, :got:gpDrmKeyInfo
20821 movk w3, 0x4b4d, lsl 16
20822 ldr x1, [x0, #:got_lo12:gpDrmKeyInfo]
20828 movk w3, 0x4b4d, lsl 16
20836 ldr x0, [x0, #:got_lo12:gpDrmKeyInfo]
20845 bl StorageSysDataStore
20846 ldr x19, [x19, #:got_lo12:SecureBootEn]
20847 adrp x0, :got:SecureBootCheckOK
20849 ldr x0, [x0, #:got_lo12:SecureBootCheckOK]
20854 add x0, x0, :lo12:.LC145
20861 // 257 "./arch/arm64/include/asm/uaccess.h" 1
20862 adds x0, x0, 520; ccmp x0, x1, #2, cc; cset x2, ls
20870 bl __copy_from_user
20874 movk w1, 0x4253, lsl 16
20880 adrp x19, :got:SecureBootEn
20881 ldr x1, [x19, #:got_lo12:SecureBootEn]
20885 adrp x1, :got:gpBootConfig
20887 movk w4, 0x4453, lsl 16
20888 ldr x2, [x1, #:got_lo12:gpBootConfig]
20894 movk w4, 0x4453, lsl 16
20903 ldr x1, [x1, #:got_lo12:gpBootConfig]
20908 bl StorageSysDataStore
20909 adrp x0, :got:gpDrmKeyInfo
20911 movk w3, 0x4b4d, lsl 16
20912 ldr x1, [x0, #:got_lo12:gpDrmKeyInfo]
20918 movk w3, 0x4b4d, lsl 16
20926 ldr x0, [x0, #:got_lo12:gpDrmKeyInfo]
20935 bl StorageSysDataStore
20936 ldr x19, [x19, #:got_lo12:SecureBootEn]
20942 add x0, x0, :lo12:.LC146
20949 // 257 "./arch/arm64/include/asm/uaccess.h" 1
20950 adds x0, x0, 520; ccmp x0, x1, #2, cc; cset x2, ls
20958 bl __copy_from_user
20962 movk w0, 0x4144, lsl 16
20968 adrp x1, :got:gSnSectorData
20971 ldr x1, [x1, #:got_lo12:gSnSectorData]
20975 movk w0, 0x4004, lsl 16
20979 add x0, x0, :lo12:.LC147
20983 movk w0, 0x4004, lsl 16
20987 add x0, x0, :lo12:.LC148
20991 add x0, x0, :lo12:.LC149
20999 // 257 "./arch/arm64/include/asm/uaccess.h" 1
21000 adds x0, x0, 520; ccmp x0, x1, #2, cc; cset x2, ls
21008 bl __copy_from_user
21012 movk w0, 0x4c4f, lsl 16
21016 movk w0, 0x4004, lsl 16
21019 adrp x0, :got:gpDrmKeyInfo
21020 ldr x0, [x0, #:got_lo12:gpDrmKeyInfo]
21030 // 266 "./arch/arm64/include/asm/uaccess.h" 1
21031 adds x0, x0, 16; ccmp x0, x1, #2, cc; cset x2, ls
21042 adrp x2, :got:SecureBootUnlockTryCount
21044 ldr x19, [x2, #:got_lo12:SecureBootUnlockTryCount]
21048 adrp x0, :got:gpDrmKeyInfo
21050 ldr x0, [x0, #:got_lo12:gpDrmKeyInfo]
21057 add x0, x0, :lo12:.LC150
21064 ldr x3, [x3, #:got_lo12:SecureBootUnlockTryCount]
21066 movk w0, 0x4004, lsl 16
21081 bl StorageSysDataStore
21087 add x0, x0, :lo12:.LC151
21094 // 257 "./arch/arm64/include/asm/uaccess.h" 1
21095 adds x0, x0, 520; ccmp x0, x1, #2, cc; cset x2, ls
21103 bl __copy_from_user
21107 movk w0, 0x444e, lsl 16
21115 movk w0, 0x4004, lsl 16
21119 adrp x1, :got:gpVendor0Info
21120 ldr x1, [x1, #:got_lo12:gpVendor0Info]
21123 adrp x1, :got:gpVendor1Info
21124 ldr x1, [x1, #:got_lo12:gpVendor1Info]
21136 // 266 "./arch/arm64/include/asm/uaccess.h" 1
21137 adds x0, x0, 520; ccmp x0, x1, #2, cc; cset x2, ls
21150 add x0, x0, :lo12:.LC152
21157 // 257 "./arch/arm64/include/asm/uaccess.h" 1
21158 adds x0, x0, 520; ccmp x0, x1, #2, cc; cset x2, ls
21166 bl __copy_from_user
21170 movk w0, 0x444e, lsl 16
21178 movk w0, 0x4004, lsl 16
21181 adrp x19, :got:gpVendor0Info
21183 ldr x19, [x19, #:got_lo12:gpVendor0Info]
21189 adrp x19, :got:gpVendor1Info
21191 ldr x19, [x19, #:got_lo12:gpVendor1Info]
21198 bl StorageSysDataStore
21206 add x0, x0, :lo12:.LC153
21213 ldp x19, x20, [sp,16]
21214 ldp x21, x22, [sp,32]
21215 ldp x29, x30, [sp], 48
21218 .size rknand_sys_storage_ioctl, .-rknand_sys_storage_ioctl
21220 .global rk_ftl_storage_sys_init
21221 .type rk_ftl_storage_sys_init, %function
21222 rk_ftl_storage_sys_init:
21223 adrp x0, :got:g_idb_buffer
21224 stp x29, x30, [sp, -80]!
21226 ldr x0, [x0, #:got_lo12:g_idb_buffer]
21227 stp x19, x20, [sp,16]
21228 stp x21, x22, [sp,32]
21229 stp x23, x24, [sp,48]
21231 adrp x21, :got:gpBootConfig
21233 adrp x0, :got:gLoaderBootInfo
21234 adrp x20, :got:gpVendor0Info
21235 adrp x19, :got:gpVendor1Info
21236 ldr x21, [x21, #:got_lo12:gpBootConfig]
21237 ldr x0, [x0, #:got_lo12:gLoaderBootInfo]
21239 adrp x0, :got:gpDrmKeyInfo
21242 ldr x0, [x0, #:got_lo12:gpDrmKeyInfo]
21246 ldr x0, [x20, #:got_lo12:gpVendor0Info]
21249 ldr x0, [x19, #:got_lo12:gpVendor1Info]
21251 adrp x0, :got:gSnSectorData
21252 ldr x0, [x0, #:got_lo12:gSnSectorData]
21254 adrp x1, :got:SecureBootEn
21256 adrp x3, :got:SecureBootCheckOK
21259 ldr x22, [x1, #:got_lo12:SecureBootEn]
21263 ldr x2, [x3, #:got_lo12:SecureBootCheckOK]
21265 adrp x2, :got:SecureBootUnlockTryCount
21266 ldr x2, [x2, #:got_lo12:SecureBootUnlockTryCount]
21277 add x0, x0, :lo12:.LC154
21280 ldr x1, [x25, #:got_lo12:SecureBootEn]
21283 ldr x0, [x24, #:got_lo12:SecureBootCheckOK]
21285 movk w1, 0xc059, lsl 16
21288 ldr x20, [x20, #:got_lo12:gpVendor0Info]
21291 bl StorageSysDataLoad
21292 ldr x19, [x19, #:got_lo12:gpVendor1Info]
21295 bl StorageSysDataLoad
21297 add x0, x0, :lo12:.LANCHOR3
21300 ldp x19, x20, [sp,16]
21301 ldp x21, x22, [sp,32]
21302 ldp x23, x24, [sp,48]
21303 ldp x29, x30, [sp], 80
21305 .size rk_ftl_storage_sys_init, .-rk_ftl_storage_sys_init
21307 .global StorageSysDataDeInit
21308 .type StorageSysDataDeInit, %function
21309 StorageSysDataDeInit:
21310 stp x29, x30, [sp, -16]!
21313 add x0, x0, :lo12:.LANCHOR3
21316 ldp x29, x30, [sp], 16
21318 .size StorageSysDataDeInit, .-StorageSysDataDeInit
21319 .global rknand_sys_storage_fops
21320 .global gTable_Crc32
21321 .global SecureBootUnlockTryCount
21322 .global SecureBootCheckOK
21323 .global SecureBootEn
21324 .global gpVendor1Info
21325 .global gpVendor0Info
21326 .global g_idb_buffer
21327 .global gSnSectorData
21328 .global gpDrmKeyInfo
21329 .global gpBootConfig
21330 .global gLoaderBootInfo
21331 .global RK29_NANDC1_REG_BASE
21332 .global RK29_NANDC_REG_BASE
21333 .global gc_ink_free_return_value
21334 .global FtlUpdateVaildLpnCount
21335 .global g_ect_tbl_power_up_flush
21336 .global last_cache_match_count
21337 .global power_up_flag
21338 .global g_LowFormat
21339 .global gFtlInitStatus
21340 .global DeviceCapacity
21341 .global ToshibaRefValue
21342 .global Toshiba15RefValue
21343 .global ToshibaA19RefValue
21344 .global SamsungRefValue
21345 .global refValueDefault
21347 .global random_seed
21348 .global gNandParaInfo
21349 .global NandFlashParaTbl
21350 .global g_power_lost_recovery_flag
21351 .global c_mlc_erase_count_value
21352 .global g_recovery_ppa_tbl
21353 .global g_recovery_page_min_ver
21354 .global g_recovery_page_num
21355 .global g_cur_erase_blk
21356 .global g_gc_skip_write_count
21357 .global g_gc_head_data_block_count
21358 .global g_gc_head_data_block
21359 .global g_ftl_nand_free_count
21360 .global g_in_swl_replace
21361 .global g_in_gc_progress
21362 .global g_all_blk_used_slc_mode
21363 .global g_max_erase_count
21364 .global g_totle_sys_slc_erase_count
21365 .global g_totle_slc_erase_count
21366 .global g_min_erase_count
21367 .global g_totle_avg_erase_count
21368 .global g_totle_mlc_erase_count
21369 .global g_totle_l2p_write_count
21370 .global g_totle_cache_write_count
21371 .global g_tmp_data_superblock_id
21372 .global g_totle_read_page_count
21373 .global g_totle_discard_page_count
21374 .global g_totle_read_sector
21375 .global g_totle_write_sector
21376 .global g_totle_write_page_count
21377 .global g_totle_gc_page_count
21378 .global g_gc_blk_index
21379 .global g_gc_merge_free_blk_threshold
21380 .global g_gc_free_blk_threshold
21381 .global g_gc_bad_block_temp_tbl
21382 .global g_gc_bad_block_gc_index
21383 .global g_gc_bad_block_temp_num
21384 .global g_gc_next_blk_1
21385 .global g_gc_next_blk
21386 .global g_gc_cur_blk_max_valid_pages
21387 .global g_gc_cur_blk_valid_pages
21388 .global g_gc_page_offset
21389 .global g_gc_blk_num
21390 .global p_gc_blk_tbl
21391 .global p_gc_page_info
21392 .global g_sys_ext_data
21393 .global g_sys_save_data
21394 .global gp_last_act_superblock
21395 .global g_gc_superblock
21396 .global g_gc_temp_superblock
21397 .global g_buffer_superblock
21398 .global g_active_superblock
21399 .global g_num_data_superblocks
21400 .global g_num_free_superblocks
21401 .global p_data_block_list_tail
21402 .global p_data_block_list_head
21403 .global p_free_data_block_list_head
21404 .global p_data_block_list_table
21405 .global g_l2p_last_update_region_id
21406 .global p_l2p_map_buf
21407 .global p_l2p_ram_map
21408 .global g_totle_vendor_block
21409 .global p_vendor_region_ppn_table
21410 .global p_vendor_block_ver_table
21411 .global p_vendor_block_valid_page_count
21412 .global p_vendor_block_table
21413 .global g_totle_map_block
21414 .global p_map_region_ppn_table
21415 .global p_map_block_ver_table
21416 .global p_map_block_valid_page_count
21417 .global p_map_block_table
21418 .global p_valid_page_count_check_table
21419 .global p_valid_page_count_table
21420 .global g_totle_swl_count
21421 .global p_swl_mul_table
21422 .global p_erase_count_table
21423 .global g_ect_tbl_info_size
21424 .global gp_ect_tbl_info
21425 .global g_gc_num_req
21426 .global c_gc_page_buf_num
21427 .global gp_gc_page_buf_info
21428 .global p_gc_data_buf
21429 .global p_gc_spare_buf
21430 .global p_io_spare_buf
21431 .global p_io_data_buf_1
21432 .global p_io_data_buf_0
21433 .global p_sys_spare_buf
21434 .global p_vendor_data_buf
21435 .global p_sys_data_buf_1
21436 .global p_sys_data_buf
21437 .global g_wr_page_num
21439 .global c_wr_page_buf_num
21440 .global p_wr_io_data_buf
21441 .global p_wr_io_spare_buf
21442 .global p_plane_order_table
21443 .global g_req_cache
21450 .global gVendorBlkInfo
21451 .global gL2pMapInfo
21452 .global gSysFreeQueue
21455 .global g_inkDie_check_enable
21456 .global g_SlcPartLbaEndSector
21460 .global g_MaxLbaSector
21461 .global g_GlobalDataVersion
21462 .global g_GlobalSysVersion
21463 .global ftl_gc_temp_power_lost_recovery_flag
21464 .global c_ftl_nand_max_data_blks
21465 .global c_ftl_nand_data_op_blks_per_plane
21466 .global c_ftl_nand_data_blks_per_plane
21467 .global c_ftl_nand_max_sys_blks
21468 .global c_ftl_nand_init_sys_blks_per_plane
21469 .global c_ftl_nand_sys_blks_per_plane
21470 .global c_ftl_nand_max_vendor_blks
21471 .global c_ftl_nand_max_map_blks
21472 .global c_ftl_nand_map_blks_per_plane
21473 .global c_ftl_nand_vendor_region_num
21474 .global c_ftl_nand_l2pmap_ram_region_num
21475 .global c_ftl_nand_map_region_num
21476 .global c_ftl_nand_totle_phy_blks
21477 .global c_ftl_nand_reserved_blks
21478 .global c_ftl_nand_byte_pre_oob
21479 .global c_ftl_nand_byte_pre_page
21480 .global c_ftl_nand_sec_pre_page_shift
21481 .global c_ftl_nand_sec_pre_page
21482 .global c_ftl_nand_page_pre_super_blk
21483 .global c_ftl_nand_page_pre_slc_blk
21484 .global c_ftl_nand_page_pre_blk
21485 .global c_ftl_nand_bbm_buf_size
21486 .global c_ftl_nand_ext_blk_pre_plane
21487 .global c_ftl_nand_blk_pre_plane
21488 .global c_ftl_nand_planes_num
21489 .global c_ftl_nand_blks_per_die_shift
21490 .global c_ftl_nand_blks_per_die
21491 .global c_ftl_nand_planes_per_die
21492 .global c_ftl_nand_die_num
21493 .global c_ftl_nand_type
21494 .global gMasterTempBuf
21495 .global gMasterInfo
21496 .global gNandcDumpWriteEn
21497 .global gToggleModeClkDiv
21498 .global gBootDdrMode
21499 .global gNandcEccBits
21503 .global gNandChipMap
21504 .global gNandIDataBuf
21505 .global FlashDdrTunningReadCount
21506 .global gNandPhyInfo
21507 .global gFlashProgCheckSpareBuffer
21508 .global gFlashProgCheckBuffer
21509 .global gFlashSpareBuffer
21510 .global gFlashPageBuffer1
21511 .global gFlashPageBuffer0
21512 .global gpFlashSaveInfo
21513 .global gReadRetryInfo
21514 .global gpNandParaInfo
21515 .global gNandOptPara
21516 .global g_slc2KBNand
21517 .global g_maxRetryCount
21518 .global g_maxRegNum
21519 .global g_retryMode
21520 .global gNandIDBResBlkNumSaveInFlash
21521 .global gNandIDBResBlkNum
21522 .global gNandFlashResEndPageAddr
21523 .global gNandFlashInfoBlockAddr
21524 .global gNandFlashIdbBlockAddr
21525 .global gNandFlashInfoBlockEcc
21526 .global gNandFlashIDBEccBits
21527 .global gNandFlashEccBits
21528 .global gNandRandomizer
21529 .global gBlockPageAlignSize
21530 .global gTotleBlock
21531 .global gNandMaxChip
21532 .global gNandMaxDie
21533 .global gFlashInterfaceMode
21534 .global gFlashOnfiModeEn
21535 .global gFlashToggleModeEn
21536 .global gFlashSdrModeEn
21537 .global gMultiPageProgEn
21538 .global gMultiPageReadEn
21539 .global gpReadRetrial
21540 .global mlcPageToSlcPageTbl
21541 .global slcPageToMlcPageTbl
21546 .global read_retry_cur_offset
21547 .global gNandc1_enable
21551 .type __func__.18558, %object
21552 .size __func__.18558, 11
21554 .string "FtlMemInit"
21556 .type __func__.19412, %object
21557 .size __func__.19412, 21
21559 .string "FtlVpcCheckAndModify"
21560 .section .data.rel.local,"aw",%progbits
21562 .type rknand_sys_storage_fops, %object
21563 .size rknand_sys_storage_fops, 216
21564 rknand_sys_storage_fops:
21566 .xword rknand_sys_storage_ioctl
21567 .xword rknand_sys_storage_ioctl
21569 .xword rknand_sys_storage_open
21571 .xword rknand_sys_storage_release
21576 .type NandOptPara, %object
21577 .size NandOptPara, 128
21655 .type ftl_gc_temp_block_bops_scan_page_addr, %object
21656 .size ftl_gc_temp_block_bops_scan_page_addr, 2
21657 ftl_gc_temp_block_bops_scan_page_addr:
21660 .type gTable_Crc32, %object
21661 .size gTable_Crc32, 1024
21919 .type power_up_flag, %object
21920 .size power_up_flag, 4
21923 .type gFtlInitStatus, %object
21924 .size gFtlInitStatus, 4
21927 .type ToshibaRefValue, %object
21928 .size ToshibaRefValue, 8
21938 .type Toshiba15RefValue, %object
21939 .size Toshiba15RefValue, 95
22037 .type ToshibaA19RefValue, %object
22038 .size ToshibaA19RefValue, 45
22039 ToshibaA19RefValue:
22086 .type SamsungRefValue, %object
22087 .size SamsungRefValue, 64
22153 .type refValueDefault, %object
22154 .size refValueDefault, 28
22185 .type random_seed, %object
22186 .size random_seed, 256
22316 .type gNandParaInfo, %object
22317 .size gNandParaInfo, 32
22340 .type NandFlashParaTbl, %object
22341 .size NandFlashParaTbl, 2016
23918 .section .rodata.str1.1,"aMS",%progbits,1
23920 .string "Context allocation failed\n"
23922 .string "phyBlk = 0x%x die = %d block_in_die = 0x%x 0x%8x\n"
23924 .string "FLASH INFO:\n"
23926 .string "FLASH ID: %x\n"
23928 .string "Device Capacity: %d MB\n"
23930 .string "FMWAIT: %x %x %x %x\n"
23932 .string "FTL INFO:\n"
23934 .string "g_MaxLpn = 0x%x\n"
23936 .string "g_VaildLpn = 0x%x\n"
23938 .string "read_page_count = 0x%x\n"
23940 .string "discard_page_count = 0x%x\n"
23942 .string "write_page_count = 0x%x\n"
23944 .string "cache_write_count = 0x%x\n"
23946 .string "l2p_write_count = 0x%x\n"
23948 .string "gc_page_count = 0x%x\n"
23950 .string "totle_write = %d MB\n"
23952 .string "totle_read = %d MB\n"
23954 .string "GSV = 0x%x\n"
23956 .string "GDV = 0x%x\n"
23958 .string "bad blk num = %d %d\n"
23960 .string "free_superblocks = 0x%x\n"
23962 .string "mlc_EC = 0x%x\n"
23964 .string "slc_EC = 0x%x\n"
23966 .string "avg_EC = 0x%x\n"
23968 .string "sys_EC = 0x%x\n"
23970 .string "max_EC = 0x%x\n"
23972 .string "min_EC = 0x%x\n"
23974 .string "PLT = 0x%x\n"
23976 .string "POT = 0x%x\n"
23978 .string "MaxSector = 0x%x\n"
23980 .string "init_sys_blks_pp = 0x%x\n"
23982 .string "sys_blks_pp = 0x%x\n"
23984 .string "free sysblock = 0x%x\n"
23986 .string "data_blks_pp = 0x%x\n"
23988 .string "data_op_blks_pp = 0x%x\n"
23990 .string "max_data_blks = 0x%x\n"
23992 .string "Sys.id = 0x%x\n"
23994 .string "Bbt.id = 0x%x\n"
23996 .string "ACT.page = 0x%x\n"
23998 .string "ACT.plane = 0x%x\n"
24000 .string "ACT.id = 0x%x\n"
24002 .string "ACT.mode = 0x%x\n"
24004 .string "ACT.a_pages = 0x%x\n"
24006 .string "ACT VPC = 0x%x\n"
24008 .string "BUF.page = 0x%x\n"
24010 .string "BUF.plane = 0x%x\n"
24012 .string "BUF.id = 0x%x\n"
24014 .string "BUF.mode = 0x%x\n"
24016 .string "BUF.a_pages = 0x%x\n"
24018 .string "BUF VPC = 0x%x\n"
24020 .string "TMP.page = 0x%x\n"
24022 .string "TMP.plane = 0x%x\n"
24024 .string "TMP.id = 0x%x\n"
24026 .string "TMP.mode = 0x%x\n"
24028 .string "TMP.a_pages = 0x%x\n"
24030 .string "GC.page = 0x%x\n"
24032 .string "GC.plane = 0x%x\n"
24034 .string "GC.id = 0x%x\n"
24036 .string "GC.mode = 0x%x\n"
24038 .string "GC.a_pages = 0x%x\n"
24040 .string "WR_CHK = 0x%x %x %x %x\n"
24042 .string "Read Err Cnt = 0x%x\n"
24044 .string "Prog Err Cnt = 0x%x\n"
24046 .string "gc_free_blk_th= 0x%x\n"
24048 .string "gc_merge_free_blk_th= 0x%x\n"
24050 .string "gc_skip_write_count= 0x%x\n"
24052 .string "gc_blk_index= 0x%x\n"
24054 .string "free min EC= 0x%x\n"
24056 .string "free max EC= 0x%x\n"
24058 .string "GC__SB VPC = 0x%x\n"
24060 .string "%d. [0x%x]=0x%x 0x%x 0x%x\n"
24062 .string "free %d. [0x%x] 0x%x 0x%x\n"
24066 .string "FTL version: 5.0.28 20151015"
24068 .string "GetSwlReplaceBlock min_ec_id =%x %x\n"
24070 .string "GetSwlReplaceBlock %x ,avg = %x max= %x vpc= %x,ec=%x\n"
24072 .string "FtlGcRefreshBlock 0x%x \n"
24074 .string "FtlGcMarkBadPhyBlk %d 0x%x\n"
24076 .string "%s error allocating memory. return -1\n"
24084 .string "%d statReg->V6.mtrans_cnt=%d flReg.V6.page_num=%d\n"
24088 .string "%d flReg.d32=%x %x\n"
24090 .string "sync para %d\n"
24092 .string "TOG mode Read error %x %x\n"
24094 .string "read retry status %x %x %x\n"
24098 .string "No.%d FLASH ID:%x %x %x %x %x %x\n"
24100 .string "FlashLoadPhyInfo fail %x!!\n"
24102 .string "ReadRetry pageadd=%x ecc=%x err=%x\n"
24104 .string "Read pageadd=%x ecc=%x err=%x\n"
24108 .string "FLFB:%d %d\n"
24112 .string "prog error: = %x\n"
24114 .string "prog read error: = %x\n"
24116 .string "prog read s error: = %x %x %x\n"
24118 .string "prog read d error: = %x %x %x\n"
24120 .string "FlashMakeFactorBbt %d\n"
24122 .string "bad block:%d %d\n"
24124 .string "FMFB:%d %d\n"
24126 .string "E:bad block:%d\n"
24128 .string "FMFB:Save %d %d\n"
24130 .string "FtlBbmTblFlush id=%x,page=%x,previd=%x cnt=%d\n"
24132 .string "FtlBbmTblFlush error:%x\n"
24134 .string "FtlGcFreeBadSuperBlk 0x%x\n"
24136 .string "decrement_vpc_count %x = %d\n"
24138 .string "spuer block %x vpn is 0\n "
24140 .string "...%s enter...\n"
24142 .string "FtlCheckVpc %x = %x %x\n"
24144 .string "Ftlwrite decrement_vpc_count %x = %d\n"
24146 .string "FtlInit %x\n"
24148 .string "%d GC datablk = %x vpc %x %x\n"
24150 .string "SWL %x, FSB = %x vpc= %x,ec=%x th=%x\n"
24152 .string "FtlWrite: lpa error:%x %x\n"
24156 .string "IdBlockReadData %x %x\n"
24158 .string "IdBlockReadData %x %x ret= %x\n"
24160 .string "IDBlockWriteData %x %x\n"
24162 .string "IDBlockWriteData %x %x ret= %x\n"
24166 .string "idb reverse %x %x\n"
24168 .string "write_idblock totle_sec %x %x\n"
24170 .string "write and check error:%d idb=%x,offset=%x,r=%x,w=%x \n"
24176 .string "write_idblock error\n"
24178 .string "READ_SECTOR_IO\n"
24180 .string "copy_from_user error \n"
24182 .string "READ_SECTOR_IO %x %x\n"
24184 .string "copy_to_user error\n"
24186 .string "WRITE_SECTOR_IO\n"
24188 .string "WRITE_SECTOR_IO %x %x\n"
24190 .string "END_WRITE_SECTOR_IO\n"
24192 .string "END_WRITE_SECTOR_IO %x %x\n"
24194 .string "GET_FLASH_INFO_IO\n"
24196 .string "GET_BAD_BLOCK_IO\n"
24200 .string "GET_LOCK_FLAG_IO\n"
24202 .string "GET_PUBLIC_KEY_IO\n"
24204 .string "RKNAND_GET_DRM_KEY\n"
24206 .string "RKNAND_STORE_DRM_KEY\n"
24208 .string "RKNAND_DIASBLE_SECURE_BOOT\n"
24210 .string "RKNAND_ENASBLE_SECURE_BOOT\n"
24212 .string "RKNAND_GET_SN_SECTOR\n"
24214 .string "RKNAND_LOADER_UNLOCK\n"
24216 .string "RKNAND_LOADER_STATUS\n"
24218 .string "RKNAND_LOADER_LOCK\n"
24220 .string "LockKey not match %d\n"
24222 .string "RKNAND_GET_VENDOR_SECTOR\n"
24224 .string "RKNAND_STORE_VENDOR_SECTOR\n"
24226 .string "return ret = %lx\n"
24228 .string "secureBootEn check error\n"
24230 .string "rknand_sys_storage"
24234 .type NANDC_FMCTL, %object
24235 .size NANDC_FMCTL, 4
24238 .type NANDC_FMWAIT, %object
24239 .size NANDC_FMWAIT, 4
24242 .type NANDC_FLCTL, %object
24243 .size NANDC_FLCTL, 4
24246 .type NANDC_BCHCTL, %object
24247 .size NANDC_BCHCTL, 4
24250 .type NANDC_DLL_CTL_REG0, %object
24251 .size NANDC_DLL_CTL_REG0, 4
24252 NANDC_DLL_CTL_REG0:
24254 .type NANDC_DLL_CTL_REG1, %object
24255 .size NANDC_DLL_CTL_REG1, 4
24256 NANDC_DLL_CTL_REG1:
24258 .type NANDC_RANDMZ_CFG, %object
24259 .size NANDC_RANDMZ_CFG, 4
24262 .type NANDC_FMWAIT_SYN, %object
24263 .size NANDC_FMWAIT_SYN, 4
24266 .type gc_discard_updated, %object
24267 .size gc_discard_updated, 4
24268 gc_discard_updated:
24270 .type SecureBootUnlockTryCount, %object
24271 .size SecureBootUnlockTryCount, 4
24272 SecureBootUnlockTryCount:
24274 .type SecureBootCheckOK, %object
24275 .size SecureBootCheckOK, 4
24278 .type SecureBootEn, %object
24279 .size SecureBootEn, 4
24282 .type gpVendor1Info, %object
24283 .size gpVendor1Info, 8
24286 .type gpVendor0Info, %object
24287 .size gpVendor0Info, 8
24290 .type g_idb_buffer, %object
24291 .size g_idb_buffer, 8
24294 .type gSnSectorData, %object
24295 .size gSnSectorData, 512
24298 .type gpDrmKeyInfo, %object
24299 .size gpDrmKeyInfo, 8
24302 .type gpBootConfig, %object
24303 .size gpBootConfig, 8
24306 .type gLoaderBootInfo, %object
24307 .size gLoaderBootInfo, 8
24310 .type RK29_NANDC1_REG_BASE, %object
24311 .size RK29_NANDC1_REG_BASE, 8
24312 RK29_NANDC1_REG_BASE:
24314 .type RK29_NANDC_REG_BASE, %object
24315 .size RK29_NANDC_REG_BASE, 8
24316 RK29_NANDC_REG_BASE:
24318 .type gc_ink_free_return_value, %object
24319 .size gc_ink_free_return_value, 2
24320 gc_ink_free_return_value:
24322 .type FtlUpdateVaildLpnCount, %object
24323 .size FtlUpdateVaildLpnCount, 2
24324 FtlUpdateVaildLpnCount:
24326 .type g_ect_tbl_power_up_flush, %object
24327 .size g_ect_tbl_power_up_flush, 2
24328 g_ect_tbl_power_up_flush:
24331 .type last_cache_match_count, %object
24332 .size last_cache_match_count, 4
24333 last_cache_match_count:
24335 .type g_LowFormat, %object
24336 .size g_LowFormat, 4
24339 .type DeviceCapacity, %object
24340 .size DeviceCapacity, 4
24344 .type FbbtBlk, %object
24348 .type g_power_lost_recovery_flag, %object
24349 .size g_power_lost_recovery_flag, 2
24350 g_power_lost_recovery_flag:
24352 .type c_mlc_erase_count_value, %object
24353 .size c_mlc_erase_count_value, 2
24354 c_mlc_erase_count_value:
24357 .type g_recovery_ppa_tbl, %object
24358 .size g_recovery_ppa_tbl, 128
24359 g_recovery_ppa_tbl:
24361 .type g_recovery_page_min_ver, %object
24362 .size g_recovery_page_min_ver, 4
24363 g_recovery_page_min_ver:
24365 .type g_recovery_page_num, %object
24366 .size g_recovery_page_num, 4
24367 g_recovery_page_num:
24369 .type g_cur_erase_blk, %object
24370 .size g_cur_erase_blk, 4
24373 .type g_gc_skip_write_count, %object
24374 .size g_gc_skip_write_count, 4
24375 g_gc_skip_write_count:
24377 .type g_gc_head_data_block_count, %object
24378 .size g_gc_head_data_block_count, 4
24379 g_gc_head_data_block_count:
24381 .type g_gc_head_data_block, %object
24382 .size g_gc_head_data_block, 4
24383 g_gc_head_data_block:
24385 .type g_ftl_nand_free_count, %object
24386 .size g_ftl_nand_free_count, 4
24387 g_ftl_nand_free_count:
24389 .type g_in_swl_replace, %object
24390 .size g_in_swl_replace, 4
24393 .type g_in_gc_progress, %object
24394 .size g_in_gc_progress, 4
24397 .type g_all_blk_used_slc_mode, %object
24398 .size g_all_blk_used_slc_mode, 4
24399 g_all_blk_used_slc_mode:
24401 .type g_max_erase_count, %object
24402 .size g_max_erase_count, 4
24405 .type g_totle_sys_slc_erase_count, %object
24406 .size g_totle_sys_slc_erase_count, 4
24407 g_totle_sys_slc_erase_count:
24409 .type g_totle_slc_erase_count, %object
24410 .size g_totle_slc_erase_count, 4
24411 g_totle_slc_erase_count:
24413 .type g_min_erase_count, %object
24414 .size g_min_erase_count, 4
24417 .type g_totle_avg_erase_count, %object
24418 .size g_totle_avg_erase_count, 4
24419 g_totle_avg_erase_count:
24421 .type g_totle_mlc_erase_count, %object
24422 .size g_totle_mlc_erase_count, 4
24423 g_totle_mlc_erase_count:
24425 .type g_totle_l2p_write_count, %object
24426 .size g_totle_l2p_write_count, 4
24427 g_totle_l2p_write_count:
24429 .type g_totle_cache_write_count, %object
24430 .size g_totle_cache_write_count, 4
24431 g_totle_cache_write_count:
24433 .type g_tmp_data_superblock_id, %object
24434 .size g_tmp_data_superblock_id, 2
24435 g_tmp_data_superblock_id:
24438 .type g_totle_read_page_count, %object
24439 .size g_totle_read_page_count, 4
24440 g_totle_read_page_count:
24442 .type g_totle_discard_page_count, %object
24443 .size g_totle_discard_page_count, 4
24444 g_totle_discard_page_count:
24446 .type g_totle_read_sector, %object
24447 .size g_totle_read_sector, 4
24448 g_totle_read_sector:
24450 .type g_totle_write_sector, %object
24451 .size g_totle_write_sector, 4
24452 g_totle_write_sector:
24454 .type g_totle_write_page_count, %object
24455 .size g_totle_write_page_count, 4
24456 g_totle_write_page_count:
24458 .type g_totle_gc_page_count, %object
24459 .size g_totle_gc_page_count, 4
24460 g_totle_gc_page_count:
24462 .type g_gc_blk_index, %object
24463 .size g_gc_blk_index, 2
24466 .type g_gc_merge_free_blk_threshold, %object
24467 .size g_gc_merge_free_blk_threshold, 2
24468 g_gc_merge_free_blk_threshold:
24470 .type g_gc_free_blk_threshold, %object
24471 .size g_gc_free_blk_threshold, 2
24472 g_gc_free_blk_threshold:
24475 .type g_gc_bad_block_temp_tbl, %object
24476 .size g_gc_bad_block_temp_tbl, 34
24477 g_gc_bad_block_temp_tbl:
24479 .type g_gc_bad_block_gc_index, %object
24480 .size g_gc_bad_block_gc_index, 2
24481 g_gc_bad_block_gc_index:
24483 .type g_gc_bad_block_temp_num, %object
24484 .size g_gc_bad_block_temp_num, 2
24485 g_gc_bad_block_temp_num:
24487 .type g_gc_next_blk_1, %object
24488 .size g_gc_next_blk_1, 2
24491 .type g_gc_next_blk, %object
24492 .size g_gc_next_blk, 2
24495 .type g_gc_cur_blk_max_valid_pages, %object
24496 .size g_gc_cur_blk_max_valid_pages, 2
24497 g_gc_cur_blk_max_valid_pages:
24499 .type g_gc_cur_blk_valid_pages, %object
24500 .size g_gc_cur_blk_valid_pages, 2
24501 g_gc_cur_blk_valid_pages:
24503 .type g_gc_page_offset, %object
24504 .size g_gc_page_offset, 2
24507 .type g_gc_blk_num, %object
24508 .size g_gc_blk_num, 2
24512 .type p_gc_blk_tbl, %object
24513 .size p_gc_blk_tbl, 8
24516 .type p_gc_page_info, %object
24517 .size p_gc_page_info, 8
24520 .type g_sys_ext_data, %object
24521 .size g_sys_ext_data, 512
24524 .type g_sys_save_data, %object
24525 .size g_sys_save_data, 48
24528 .type gp_last_act_superblock, %object
24529 .size gp_last_act_superblock, 8
24530 gp_last_act_superblock:
24532 .type g_gc_superblock, %object
24533 .size g_gc_superblock, 48
24536 .type g_gc_temp_superblock, %object
24537 .size g_gc_temp_superblock, 48
24538 g_gc_temp_superblock:
24540 .type g_buffer_superblock, %object
24541 .size g_buffer_superblock, 48
24542 g_buffer_superblock:
24544 .type g_active_superblock, %object
24545 .size g_active_superblock, 48
24546 g_active_superblock:
24548 .type g_num_data_superblocks, %object
24549 .size g_num_data_superblocks, 2
24550 g_num_data_superblocks:
24552 .type g_num_free_superblocks, %object
24553 .size g_num_free_superblocks, 2
24554 g_num_free_superblocks:
24557 .type p_data_block_list_tail, %object
24558 .size p_data_block_list_tail, 8
24559 p_data_block_list_tail:
24561 .type p_data_block_list_head, %object
24562 .size p_data_block_list_head, 8
24563 p_data_block_list_head:
24565 .type p_free_data_block_list_head, %object
24566 .size p_free_data_block_list_head, 8
24567 p_free_data_block_list_head:
24569 .type p_data_block_list_table, %object
24570 .size p_data_block_list_table, 8
24571 p_data_block_list_table:
24573 .type g_l2p_last_update_region_id, %object
24574 .size g_l2p_last_update_region_id, 2
24575 g_l2p_last_update_region_id:
24578 .type p_l2p_map_buf, %object
24579 .size p_l2p_map_buf, 8
24582 .type p_l2p_ram_map, %object
24583 .size p_l2p_ram_map, 8
24586 .type g_totle_vendor_block, %object
24587 .size g_totle_vendor_block, 2
24588 g_totle_vendor_block:
24591 .type p_vendor_region_ppn_table, %object
24592 .size p_vendor_region_ppn_table, 8
24593 p_vendor_region_ppn_table:
24595 .type p_vendor_block_ver_table, %object
24596 .size p_vendor_block_ver_table, 8
24597 p_vendor_block_ver_table:
24599 .type p_vendor_block_valid_page_count, %object
24600 .size p_vendor_block_valid_page_count, 8
24601 p_vendor_block_valid_page_count:
24603 .type p_vendor_block_table, %object
24604 .size p_vendor_block_table, 8
24605 p_vendor_block_table:
24607 .type g_totle_map_block, %object
24608 .size g_totle_map_block, 2
24612 .type p_map_region_ppn_table, %object
24613 .size p_map_region_ppn_table, 8
24614 p_map_region_ppn_table:
24616 .type p_map_block_ver_table, %object
24617 .size p_map_block_ver_table, 8
24618 p_map_block_ver_table:
24620 .type p_map_block_valid_page_count, %object
24621 .size p_map_block_valid_page_count, 8
24622 p_map_block_valid_page_count:
24624 .type p_map_block_table, %object
24625 .size p_map_block_table, 8
24628 .type p_valid_page_count_check_table, %object
24629 .size p_valid_page_count_check_table, 8
24630 p_valid_page_count_check_table:
24632 .type p_valid_page_count_table, %object
24633 .size p_valid_page_count_table, 8
24634 p_valid_page_count_table:
24636 .type g_totle_swl_count, %object
24637 .size g_totle_swl_count, 4
24641 .type p_swl_mul_table, %object
24642 .size p_swl_mul_table, 8
24645 .type p_erase_count_table, %object
24646 .size p_erase_count_table, 8
24647 p_erase_count_table:
24649 .type g_ect_tbl_info_size, %object
24650 .size g_ect_tbl_info_size, 2
24651 g_ect_tbl_info_size:
24654 .type gp_ect_tbl_info, %object
24655 .size gp_ect_tbl_info, 8
24658 .type g_gc_num_req, %object
24659 .size g_gc_num_req, 4
24662 .type c_gc_page_buf_num, %object
24663 .size c_gc_page_buf_num, 4
24666 .type gp_gc_page_buf_info, %object
24667 .size gp_gc_page_buf_info, 8
24668 gp_gc_page_buf_info:
24670 .type p_gc_data_buf, %object
24671 .size p_gc_data_buf, 8
24674 .type p_gc_spare_buf, %object
24675 .size p_gc_spare_buf, 8
24678 .type p_io_spare_buf, %object
24679 .size p_io_spare_buf, 8
24682 .type p_io_data_buf_1, %object
24683 .size p_io_data_buf_1, 8
24686 .type p_io_data_buf_0, %object
24687 .size p_io_data_buf_0, 8
24690 .type p_sys_spare_buf, %object
24691 .size p_sys_spare_buf, 8
24694 .type p_vendor_data_buf, %object
24695 .size p_vendor_data_buf, 8
24698 .type p_sys_data_buf_1, %object
24699 .size p_sys_data_buf_1, 8
24702 .type p_sys_data_buf, %object
24703 .size p_sys_data_buf, 8
24706 .type g_wr_page_num, %object
24707 .size g_wr_page_num, 4
24711 .type req_wr_io, %object
24715 .type c_wr_page_buf_num, %object
24716 .size c_wr_page_buf_num, 4
24720 .type p_wr_io_data_buf, %object
24721 .size p_wr_io_data_buf, 8
24724 .type p_wr_io_spare_buf, %object
24725 .size p_wr_io_spare_buf, 8
24728 .type p_plane_order_table, %object
24729 .size p_plane_order_table, 32
24730 p_plane_order_table:
24732 .type g_req_cache, %object
24733 .size g_req_cache, 8
24736 .type req_gc_dst, %object
24737 .size req_gc_dst, 8
24740 .type req_gc, %object
24744 .type req_erase, %object
24748 .type req_prgm, %object
24752 .type req_read, %object
24756 .type req_sys, %object
24760 .type gVendorBlkInfo, %object
24761 .size gVendorBlkInfo, 64
24764 .type gL2pMapInfo, %object
24765 .size gL2pMapInfo, 64
24768 .type gSysFreeQueue, %object
24769 .size gSysFreeQueue, 2056
24772 .type gSysInfo, %object
24777 .type gBbtInfo, %object
24781 .type g_inkDie_check_enable, %object
24782 .size g_inkDie_check_enable, 4
24783 g_inkDie_check_enable:
24785 .type g_SlcPartLbaEndSector, %object
24786 .size g_SlcPartLbaEndSector, 4
24787 g_SlcPartLbaEndSector:
24789 .type g_MaxLbn, %object
24793 .type g_VaildLpn, %object
24794 .size g_VaildLpn, 4
24797 .type g_MaxLpn, %object
24801 .type g_MaxLbaSector, %object
24802 .size g_MaxLbaSector, 4
24805 .type g_GlobalDataVersion, %object
24806 .size g_GlobalDataVersion, 4
24807 g_GlobalDataVersion:
24809 .type g_GlobalSysVersion, %object
24810 .size g_GlobalSysVersion, 4
24811 g_GlobalSysVersion:
24813 .type ftl_gc_temp_power_lost_recovery_flag, %object
24814 .size ftl_gc_temp_power_lost_recovery_flag, 4
24815 ftl_gc_temp_power_lost_recovery_flag:
24817 .type c_ftl_nand_max_data_blks, %object
24818 .size c_ftl_nand_max_data_blks, 4
24819 c_ftl_nand_max_data_blks:
24821 .type c_ftl_nand_data_op_blks_per_plane, %object
24822 .size c_ftl_nand_data_op_blks_per_plane, 2
24823 c_ftl_nand_data_op_blks_per_plane:
24825 .type c_ftl_nand_data_blks_per_plane, %object
24826 .size c_ftl_nand_data_blks_per_plane, 2
24827 c_ftl_nand_data_blks_per_plane:
24829 .type c_ftl_nand_max_sys_blks, %object
24830 .size c_ftl_nand_max_sys_blks, 4
24831 c_ftl_nand_max_sys_blks:
24833 .type c_ftl_nand_init_sys_blks_per_plane, %object
24834 .size c_ftl_nand_init_sys_blks_per_plane, 4
24835 c_ftl_nand_init_sys_blks_per_plane:
24837 .type c_ftl_nand_sys_blks_per_plane, %object
24838 .size c_ftl_nand_sys_blks_per_plane, 4
24839 c_ftl_nand_sys_blks_per_plane:
24841 .type c_ftl_nand_max_vendor_blks, %object
24842 .size c_ftl_nand_max_vendor_blks, 2
24843 c_ftl_nand_max_vendor_blks:
24846 .type c_ftl_nand_max_map_blks, %object
24847 .size c_ftl_nand_max_map_blks, 4
24848 c_ftl_nand_max_map_blks:
24850 .type c_ftl_nand_map_blks_per_plane, %object
24851 .size c_ftl_nand_map_blks_per_plane, 2
24852 c_ftl_nand_map_blks_per_plane:
24854 .type c_ftl_nand_vendor_region_num, %object
24855 .size c_ftl_nand_vendor_region_num, 2
24856 c_ftl_nand_vendor_region_num:
24858 .type c_ftl_nand_l2pmap_ram_region_num, %object
24859 .size c_ftl_nand_l2pmap_ram_region_num, 2
24860 c_ftl_nand_l2pmap_ram_region_num:
24862 .type c_ftl_nand_map_region_num, %object
24863 .size c_ftl_nand_map_region_num, 2
24864 c_ftl_nand_map_region_num:
24866 .type c_ftl_nand_totle_phy_blks, %object
24867 .size c_ftl_nand_totle_phy_blks, 4
24868 c_ftl_nand_totle_phy_blks:
24870 .type c_ftl_nand_reserved_blks, %object
24871 .size c_ftl_nand_reserved_blks, 2
24872 c_ftl_nand_reserved_blks:
24874 .type c_ftl_nand_byte_pre_oob, %object
24875 .size c_ftl_nand_byte_pre_oob, 2
24876 c_ftl_nand_byte_pre_oob:
24878 .type c_ftl_nand_byte_pre_page, %object
24879 .size c_ftl_nand_byte_pre_page, 2
24880 c_ftl_nand_byte_pre_page:
24882 .type c_ftl_nand_sec_pre_page_shift, %object
24883 .size c_ftl_nand_sec_pre_page_shift, 2
24884 c_ftl_nand_sec_pre_page_shift:
24886 .type c_ftl_nand_sec_pre_page, %object
24887 .size c_ftl_nand_sec_pre_page, 2
24888 c_ftl_nand_sec_pre_page:
24890 .type c_ftl_nand_page_pre_super_blk, %object
24891 .size c_ftl_nand_page_pre_super_blk, 2
24892 c_ftl_nand_page_pre_super_blk:
24894 .type c_ftl_nand_page_pre_slc_blk, %object
24895 .size c_ftl_nand_page_pre_slc_blk, 2
24896 c_ftl_nand_page_pre_slc_blk:
24898 .type c_ftl_nand_page_pre_blk, %object
24899 .size c_ftl_nand_page_pre_blk, 2
24900 c_ftl_nand_page_pre_blk:
24902 .type c_ftl_nand_bbm_buf_size, %object
24903 .size c_ftl_nand_bbm_buf_size, 2
24904 c_ftl_nand_bbm_buf_size:
24906 .type c_ftl_nand_ext_blk_pre_plane, %object
24907 .size c_ftl_nand_ext_blk_pre_plane, 2
24908 c_ftl_nand_ext_blk_pre_plane:
24910 .type c_ftl_nand_blk_pre_plane, %object
24911 .size c_ftl_nand_blk_pre_plane, 2
24912 c_ftl_nand_blk_pre_plane:
24914 .type c_ftl_nand_planes_num, %object
24915 .size c_ftl_nand_planes_num, 2
24916 c_ftl_nand_planes_num:
24918 .type c_ftl_nand_blks_per_die_shift, %object
24919 .size c_ftl_nand_blks_per_die_shift, 2
24920 c_ftl_nand_blks_per_die_shift:
24922 .type c_ftl_nand_blks_per_die, %object
24923 .size c_ftl_nand_blks_per_die, 2
24924 c_ftl_nand_blks_per_die:
24926 .type c_ftl_nand_planes_per_die, %object
24927 .size c_ftl_nand_planes_per_die, 2
24928 c_ftl_nand_planes_per_die:
24930 .type c_ftl_nand_die_num, %object
24931 .size c_ftl_nand_die_num, 2
24932 c_ftl_nand_die_num:
24934 .type c_ftl_nand_type, %object
24935 .size c_ftl_nand_type, 2
24939 .type gMasterTempBuf, %object
24940 .size gMasterTempBuf, 8
24943 .type gMasterInfo, %object
24944 .size gMasterInfo, 48
24947 .type gNandcDumpWriteEn, %object
24948 .size gNandcDumpWriteEn, 4
24951 .type gToggleModeClkDiv, %object
24952 .size gToggleModeClkDiv, 4
24955 .type gBootDdrMode, %object
24956 .size gBootDdrMode, 4
24959 .type gNandcEccBits, %object
24960 .size gNandcEccBits, 4
24963 .type gpNandc1, %object
24967 .type gpNandc, %object
24971 .type gNandcVer, %object
24976 .type gNandChipMap, %object
24977 .size gNandChipMap, 128
24980 .type gNandIDataBuf, %object
24981 .size gNandIDataBuf, 2048
24984 .type FlashDdrTunningReadCount, %object
24985 .size FlashDdrTunningReadCount, 4
24986 FlashDdrTunningReadCount:
24989 .type gNandPhyInfo, %object
24990 .size gNandPhyInfo, 28
24994 .type gFlashProgCheckSpareBuffer, %object
24995 .size gFlashProgCheckSpareBuffer, 8
24996 gFlashProgCheckSpareBuffer:
24998 .type gFlashProgCheckBuffer, %object
24999 .size gFlashProgCheckBuffer, 8
25000 gFlashProgCheckBuffer:
25002 .type gFlashSpareBuffer, %object
25003 .size gFlashSpareBuffer, 8
25006 .type gFlashPageBuffer1, %object
25007 .size gFlashPageBuffer1, 8
25010 .type gFlashPageBuffer0, %object
25011 .size gFlashPageBuffer0, 8
25014 .type gpFlashSaveInfo, %object
25015 .size gpFlashSaveInfo, 8
25018 .type gReadRetryInfo, %object
25019 .size gReadRetryInfo, 852
25023 .type gpNandParaInfo, %object
25024 .size gpNandParaInfo, 8
25027 .type gNandOptPara, %object
25028 .size gNandOptPara, 32
25031 .type g_slc2KBNand, %object
25032 .size g_slc2KBNand, 1
25035 .type g_maxRetryCount, %object
25036 .size g_maxRetryCount, 1
25039 .type g_maxRegNum, %object
25040 .size g_maxRegNum, 1
25043 .type g_retryMode, %object
25044 .size g_retryMode, 1
25047 .type gNandIDBResBlkNumSaveInFlash, %object
25048 .size gNandIDBResBlkNumSaveInFlash, 1
25049 gNandIDBResBlkNumSaveInFlash:
25051 .type gNandIDBResBlkNum, %object
25052 .size gNandIDBResBlkNum, 1
25056 .type gNandFlashResEndPageAddr, %object
25057 .size gNandFlashResEndPageAddr, 4
25058 gNandFlashResEndPageAddr:
25060 .type gNandFlashInfoBlockAddr, %object
25061 .size gNandFlashInfoBlockAddr, 4
25062 gNandFlashInfoBlockAddr:
25064 .type gNandFlashIdbBlockAddr, %object
25065 .size gNandFlashIdbBlockAddr, 4
25066 gNandFlashIdbBlockAddr:
25068 .type gNandFlashInfoBlockEcc, %object
25069 .size gNandFlashInfoBlockEcc, 1
25070 gNandFlashInfoBlockEcc:
25072 .type gNandFlashIDBEccBits, %object
25073 .size gNandFlashIDBEccBits, 1
25074 gNandFlashIDBEccBits:
25076 .type gNandFlashEccBits, %object
25077 .size gNandFlashEccBits, 1
25080 .type gNandRandomizer, %object
25081 .size gNandRandomizer, 1
25084 .type gBlockPageAlignSize, %object
25085 .size gBlockPageAlignSize, 4
25086 gBlockPageAlignSize:
25088 .type gTotleBlock, %object
25089 .size gTotleBlock, 2
25092 .type gNandMaxChip, %object
25093 .size gNandMaxChip, 1
25096 .type gNandMaxDie, %object
25097 .size gNandMaxDie, 1
25100 .type gFlashInterfaceMode, %object
25101 .size gFlashInterfaceMode, 1
25102 gFlashInterfaceMode:
25104 .type gFlashOnfiModeEn, %object
25105 .size gFlashOnfiModeEn, 1
25108 .type gFlashToggleModeEn, %object
25109 .size gFlashToggleModeEn, 1
25110 gFlashToggleModeEn:
25112 .type gFlashSdrModeEn, %object
25113 .size gFlashSdrModeEn, 1
25116 .type gMultiPageProgEn, %object
25117 .size gMultiPageProgEn, 1
25120 .type gMultiPageReadEn, %object
25121 .size gMultiPageReadEn, 1
25125 .type gpReadRetrial, %object
25126 .size gpReadRetrial, 8
25129 .type mlcPageToSlcPageTbl, %object
25130 .size mlcPageToSlcPageTbl, 1024
25131 mlcPageToSlcPageTbl:
25133 .type slcPageToMlcPageTbl, %object
25134 .size slcPageToMlcPageTbl, 512
25135 slcPageToMlcPageTbl:
25137 .type DieAddrs, %object
25141 .type gDieOp, %object
25145 .type DieCsIndex, %object
25146 .size DieCsIndex, 16
25149 .type IDByte, %object
25153 .type read_retry_cur_offset, %object
25154 .size read_retry_cur_offset, 8
25155 read_retry_cur_offset:
25157 .type gNandc1_enable, %object
25158 .size gNandc1_enable, 1
25161 .section .data.rel,"aw",%progbits
25164 .type rknand_sys_storage_dev, %object
25165 .size rknand_sys_storage_dev, 80
25166 rknand_sys_storage_dev:
25170 .xword rknand_sys_storage_fops