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 .L__reg_num_x\num, \num
16 .equ .L__reg_num_xzr, 31
18 .macro mrs_s, rt, sreg
19 .inst 0xd5200000|(\sreg)|(.L__reg_num_\rt)
22 .macro msr_s, sreg, rt
23 .inst 0xd5000000|(\sreg)|(.L__reg_num_\rt)
29 .type rknand_sys_storage_open, %function
30 rknand_sys_storage_open:
31 adrp x0, :got:kmalloc_caches
33 stp x29, x30, [sp, -32]!
35 ldr x0, [x0, #:got_lo12:kmalloc_caches]
40 movk w1, 0x240, lsl 16
41 bl kmem_cache_alloc_trace
45 add x0, x0, :lo12:.LC0
54 ldp x29, x30, [sp], 32
56 .size rknand_sys_storage_open, .-rknand_sys_storage_open
58 .type rknand_sys_storage_release, %function
59 rknand_sys_storage_release:
60 stp x29, x30, [sp, -16]!
68 ldp x29, x30, [sp], 16
70 .size rknand_sys_storage_release, .-rknand_sys_storage_release
73 .type FlashMemCmp8, %function
75 adrp x3, :got:g_slc2KBNand
77 ldr x3, [x3, #:got_lo12:g_slc2KBNand]
103 .size FlashMemCmp8, .-FlashMemCmp8
105 .global FlashRsvdBlkChk
106 .type FlashRsvdBlkChk, %function
108 adrp x2, :got:gNandIDBResBlkNum
109 adrp x3, :got:gBlockPageAlignSize
111 ldr x2, [x2, #:got_lo12:gNandIDBResBlkNum]
112 ldr x3, [x3, #:got_lo12:gBlockPageAlignSize]
123 .size FlashRsvdBlkChk, .-FlashRsvdBlkChk
125 .global FlashGetRandomizer
126 .type FlashGetRandomizer, %function
128 adrp x2, :got:random_seed
130 stp x29, x30, [sp, -32]!
133 ldr x2, [x2, #:got_lo12:random_seed]
135 ldrh w19, [x2,w3,uxtw 1]
136 adrp x2, :got:gNandRandomizer
137 ldr x2, [x2, #:got_lo12:gNandRandomizer]
142 orr w1, w19, -1073741824
143 csel w19, w1, w19, ne
147 ldp x29, x30, [sp], 32
149 .size FlashGetRandomizer, .-FlashGetRandomizer
152 .type JSHash, %function
157 movk w0, 0x47c6, lsl 16
163 add w3, w3, w0, lsr 2
170 .size JSHash, .-JSHash
172 .global FlashLoadIdbInfo
173 .type FlashLoadIdbInfo, %function
177 .size FlashLoadIdbInfo, .-FlashLoadIdbInfo
179 .global FlashPrintInfo
180 .type FlashPrintInfo, %function
183 .size FlashPrintInfo, .-FlashPrintInfo
186 .type FlashSuspend, %function
188 adrp x0, :got:gpNandc
190 add x1, x2, :lo12:.LANCHOR0
191 ldr x0, [x0, #:got_lo12:gpNandc]
194 str w3, [x2,#:lo12:.LANCHOR0]
211 .size FlashSuspend, .-FlashSuspend
213 .global LogAddr2PhyAddr
214 .type LogAddr2PhyAddr, %function
216 adrp x6, :got:gNandPhyInfo
218 ldr x6, [x6, #:got_lo12:gNandPhyInfo]
222 adrp x6, :got:gBlockPageAlignSize
224 ldr x6, [x6, #:got_lo12:gBlockPageAlignSize]
226 adrp x6, :got:g_slc2KBNand
228 ldr x6, [x6, #:got_lo12:g_slc2KBNand]
240 adrp x1, :got:slcPageToMlcPageTbl
241 ldr x1, [x1, #:got_lo12:slcPageToMlcPageTbl]
242 ldrh w7, [x1,w7,sxtw 1]
244 adrp x1, :got:DieAddrs
246 ldr x1, [x1, #:got_lo12:DieAddrs]
247 ldr w5, [x1,w9,uxtw 2]
262 .size LogAddr2PhyAddr, .-LogAddr2PhyAddr
264 .global FlashGetPageSize
265 .type FlashGetPageSize, %function
267 adrp x0, :got:gpNandParaInfo
268 ldr x0, [x0, #:got_lo12:gpNandParaInfo]
272 .size FlashGetPageSize, .-FlashGetPageSize
274 .global NandcReadDontCaseBusyEn
275 .type NandcReadDontCaseBusyEn, %function
276 NandcReadDontCaseBusyEn:
278 .size NandcReadDontCaseBusyEn, .-NandcReadDontCaseBusyEn
280 .global NandcGetChipIf
281 .type NandcGetChipIf, %function
283 adrp x1, :got:gNandChipMap
285 ldr x1, [x1, #:got_lo12:gNandChipMap]
290 add x0, x0, x2, lsl 8
292 .size NandcGetChipIf, .-NandcGetChipIf
294 .global FlashEraseCmd
295 .type FlashEraseCmd, %function
297 stp x29, x30, [sp, -32]!
313 adrp x2, :got:gBlockPageAlignSize
314 ldr x2, [x2, #:got_lo12:gBlockPageAlignSize]
328 ldp x29, x30, [sp], 32
330 .size FlashEraseCmd, .-FlashEraseCmd
332 .global FlashProgSecondCmd
333 .type FlashProgSecondCmd, %function
335 stp x29, x30, [sp, -16]!
340 ldp x29, x30, [sp], 16
342 .size FlashProgSecondCmd, .-FlashProgSecondCmd
344 .global FlashProgDpFirstCmd
345 .type FlashProgDpFirstCmd, %function
347 stp x29, x30, [sp, -16]!
350 adrp x1, :got:gNandOptPara
351 ldr x1, [x1, #:got_lo12:gNandOptPara]
354 ldp x29, x30, [sp], 16
356 .size FlashProgDpFirstCmd, .-FlashProgDpFirstCmd
358 .global NandcSetDdrPara
359 .type NandcSetDdrPara, %function
361 adrp x1, :got:gpNandc
364 orr w0, w2, w0, lsl 16
365 ldr x1, [x1, #:got_lo12:gpNandc]
370 .size NandcSetDdrPara, .-NandcSetDdrPara
372 .global NandcSetDdrMode
373 .type NandcSetDdrMode, %function
375 adrp x1, :got:gpNandc
377 ldr x1, [x1, #:got_lo12:gpNandc]
385 .size NandcSetDdrMode, .-NandcSetDdrMode
388 .type NandcSetMode, %function
390 stp x29, x30, [sp, -48]!
391 adrp x1, :got:gpNandc
396 ldr x21, [x1, #:got_lo12:gpNandc]
397 stp x19, x20, [sp,16]
409 csel w19, w1, w19, ne
410 bl rknand_get_clk_rate
415 movk w1, 0x10, lsl 16
425 ldr x1, [x20, #:got_lo12:gpNandc]
429 ldp x19, x20, [sp,16]
431 ldp x29, x30, [sp], 48
433 .size NandcSetMode, .-NandcSetMode
435 .global NandcFlashCsDebug
436 .type NandcFlashCsDebug, %function
438 adrp x1, :got:gNandChipMap
440 ldr x1, [x1, #:got_lo12:gNandChipMap]
446 .size NandcFlashCsDebug, .-NandcFlashCsDebug
449 .type NandcFlashCs, %function
451 adrp x1, :got:gNandChipMap
453 ldr x1, [x1, #:got_lo12:gNandChipMap]
463 .size NandcFlashCs, .-NandcFlashCs
465 .global NandcFlashDeCs
466 .type NandcFlashDeCs, %function
468 adrp x1, :got:gNandChipMap
470 ldr x1, [x1, #:got_lo12:gNandChipMap]
477 .size NandcFlashDeCs, .-NandcFlashDeCs
480 .type NandcDelayns, %function
492 .size NandcDelayns, .-NandcDelayns
494 .global FlashReadStatus
495 .type FlashReadStatus, %function
497 stp x29, x30, [sp, -32]!
508 ldp x29, x30, [sp], 32
510 .size FlashReadStatus, .-FlashReadStatus
512 .global ToshibaSetRRPara
513 .type ToshibaSetRRPara, %function
515 stp x29, x30, [sp, -96]!
516 adrp x2, :got:Toshiba15RefValue
518 stp x23, x24, [sp,48]
520 ldr x2, [x2, #:got_lo12:Toshiba15RefValue]
521 stp x19, x20, [sp,16]
522 stp x21, x22, [sp,32]
527 stp x25, x26, [sp,64]
529 adrp x0, :got:ToshibaA19RefValue
530 adrp x25, :got:g_maxRegNum
531 stp x27, x28, [sp,80]
534 ldr x24, [x0, #:got_lo12:ToshibaA19RefValue]
535 adrp x27, :got:g_retryMode
536 adrp x28, :got:ToshibaRefValue
540 ldr x0, [x25, #:got_lo12:g_maxRegNum]
545 ldr x0, [x22, #:got_lo12:ToshibaA19RefValue]
550 ldr x0, [x27, #:got_lo12:g_retryMode]
562 ldr x0, [x28, #:got_lo12:ToshibaRefValue]
569 ldp x19, x20, [sp,16]
570 ldp x21, x22, [sp,32]
571 ldp x23, x24, [sp,48]
572 ldp x25, x26, [sp,64]
573 ldp x27, x28, [sp,80]
574 ldp x29, x30, [sp], 96
576 .size ToshibaSetRRPara, .-ToshibaSetRRPara
578 .global SamsungSetRRPara
579 .type SamsungSetRRPara, %function
581 stp x29, x30, [sp, -64]!
584 stp x21, x22, [sp,32]
586 adrp x0, :got:SamsungRefValue
587 stp x19, x20, [sp,16]
590 ldr x20, [x0, #:got_lo12:SamsungRefValue]
592 stp x23, x24, [sp,48]
593 add x20, x20, x1, lsl 2
594 adrp x23, :got:g_maxRegNum
597 ldr x0, [x23, #:got_lo12:g_maxRegNum]
603 ldr x0, [x22, #:got_lo12:SamsungRefValue]
613 ldp x19, x20, [sp,16]
614 ldp x21, x22, [sp,32]
615 ldp x23, x24, [sp,48]
616 ldp x29, x30, [sp], 64
618 .size SamsungSetRRPara, .-SamsungSetRRPara
620 .global HynixSetRRPara
621 .type HynixSetRRPara, %function
623 stp x29, x30, [sp, -80]!
624 adrp x4, :got:gReadRetryInfo
626 stp x21, x22, [sp,32]
628 adrp x0, :got:gpNandParaInfo
629 stp x23, x24, [sp,48]
630 stp x19, x20, [sp,16]
631 ldr x0, [x0, #:got_lo12:gpNandParaInfo]
633 stp x25, x26, [sp,64]
641 ldr x4, [x4, #:got_lo12:gReadRetryInfo]
643 add x4, x4, x22, lsl 6
645 add x19, x4, x19, sxtw
648 ldr x4, [x4, #:got_lo12:gReadRetryInfo]
650 add x19, x19, x23, sxtw
651 add x4, x4, x19, lsl 3
679 adrp x0, :got:read_retry_cur_offset
680 ldr x0, [x0, #:got_lo12:read_retry_cur_offset]
682 ldp x19, x20, [sp,16]
683 ldp x21, x22, [sp,32]
684 ldp x23, x24, [sp,48]
685 ldp x25, x26, [sp,64]
686 ldp x29, x30, [sp], 80
688 .size HynixSetRRPara, .-HynixSetRRPara
690 .global FlashSetReadRetryDefault
691 .type FlashSetReadRetryDefault, %function
692 FlashSetReadRetryDefault:
693 adrp x0, :got:gpNandParaInfo
694 stp x29, x30, [sp, -48]!
696 ldr x0, [x0, #:got_lo12:gpNandParaInfo]
697 stp x19, x20, [sp,16]
706 adrp x20, :got:IDByte
707 adrp x21, :got:gReadRetryInfo
710 ldr x2, [x20, #:got_lo12:IDByte]
715 ldr x2, [x21, #:got_lo12:gReadRetryInfo]
725 ldp x19, x20, [sp,16]
727 ldp x29, x30, [sp], 48
729 .size FlashSetReadRetryDefault, .-FlashSetReadRetryDefault
731 .global FlashReadStatusEN
732 .type FlashReadStatusEN, %function
734 stp x29, x30, [sp, -48]!
736 stp x19, x20, [sp,16]
741 adrp x0, :got:gpNandParaInfo
743 ldr x0, [x0, #:got_lo12:gpNandParaInfo]
748 adrp x3, :got:gNandOptPara
749 ldr x0, [x3, #:got_lo12:gNandOptPara]
758 ldr x0, [x3, #:got_lo12:gNandOptPara]
762 ldr x0, [x3, #:got_lo12:gNandOptPara]
779 ldp x19, x20, [sp,16]
780 ldp x29, x30, [sp], 48
783 .size FlashReadStatusEN, .-FlashReadStatusEN
785 .global FlashWaitReadyEN
786 .type FlashWaitReadyEN, %function
788 stp x29, x30, [sp, -48]!
790 stp x19, x20, [sp,16]
804 ldp x19, x20, [sp,16]
806 ldp x29, x30, [sp], 48
808 .size FlashWaitReadyEN, .-FlashWaitReadyEN
810 .global FlashWaitCmdDone
811 .type FlashWaitCmdDone, %function
813 stp x29, x30, [sp, -48]!
818 stp x19, x20, [sp,16]
819 ldr x2, [x2, #:got_lo12:gDieOp]
829 adrp x1, :got:DieAddrs
830 ldr x1, [x1, #:got_lo12:DieAddrs]
831 ldr w0, [x1,w20,sxtw 2]
851 ldp x19, x20, [sp,16]
852 ldp x29, x30, [sp], 48
854 .size FlashWaitCmdDone, .-FlashWaitCmdDone
856 .global NandcWaitFlashReady
857 .type NandcWaitFlashReady, %function
859 adrp x1, :got:gNandChipMap
861 stp x29, x30, [sp, -48]!
863 ldr x1, [x1, #:got_lo12:gNandChipMap]
864 stp x19, x20, [sp,16]
867 movk w19, 0x1, lsl 16
882 ldp x19, x20, [sp,16]
883 ldp x29, x30, [sp], 48
885 .size NandcWaitFlashReady, .-NandcWaitFlashReady
888 .type FlashReset, %function
890 stp x29, x30, [sp, -32]!
892 stp x19, x20, [sp,16]
902 bl NandcWaitFlashReady
905 ldp x19, x20, [sp,16]
906 ldp x29, x30, [sp], 32
908 .size FlashReset, .-FlashReset
910 .global FlashEraseBlock
911 .type FlashEraseBlock, %function
913 stp x29, x30, [sp, -48]!
915 stp x19, x20, [sp,16]
920 bl NandcWaitFlashReady
928 bl NandcWaitFlashReady
936 ldp x19, x20, [sp,16]
937 ldp x29, x30, [sp], 48
939 .size FlashEraseBlock, .-FlashEraseBlock
941 .global FlashSetInterfaceMode
942 .type FlashSetInterfaceMode, %function
943 FlashSetInterfaceMode:
944 stp x29, x30, [sp, -80]!
946 stp x19, x20, [sp,16]
947 stp x21, x22, [sp,32]
948 stp x23, x24, [sp,48]
949 stp x25, x26, [sp,64]
952 adrp x25, :got:IDByte
953 adrp x21, :got:gFlashInterfaceMode
962 ldr x2, [x25, #:got_lo12:IDByte]
973 ldr x2, [x21, #:got_lo12:gFlashInterfaceMode]
1022 bl NandcWaitFlashReady
1024 ldp x19, x20, [sp,16]
1025 ldp x21, x22, [sp,32]
1026 ldp x23, x24, [sp,48]
1027 ldp x25, x26, [sp,64]
1028 ldp x29, x30, [sp], 80
1030 .size FlashSetInterfaceMode, .-FlashSetInterfaceMode
1032 .global FlashReadSpare
1033 .type FlashReadSpare, %function
1035 adrp x3, :got:gNandParaInfo
1036 stp x29, x30, [sp, -64]!
1038 ldr x3, [x3, #:got_lo12:gNandParaInfo]
1039 stp x19, x20, [sp,16]
1063 bl NandcWaitFlashReady
1067 ldp x19, x20, [sp,16]
1069 ldp x29, x30, [sp], 64
1071 .size FlashReadSpare, .-FlashReadSpare
1073 .global SandiskProgTestBadBlock
1074 .type SandiskProgTestBadBlock, %function
1075 SandiskProgTestBadBlock:
1076 stp x29, x30, [sp, -48]!
1078 stp x19, x20, [sp,16]
1100 bl NandcWaitFlashReady
1106 ldp x19, x20, [sp,16]
1108 ldp x29, x30, [sp], 48
1110 .size SandiskProgTestBadBlock, .-SandiskProgTestBadBlock
1112 .global SandiskSetRRPara
1113 .type SandiskSetRRPara, %function
1115 stp x29, x30, [sp, -32]!
1117 stp x19, x20, [sp,16]
1127 adrp x3, :got:ToshibaA19RefValue
1128 adrp x2, :got:Toshiba15RefValue
1130 adrp x4, :got:g_maxRegNum
1131 adrp x5, :got:g_retryMode
1133 ldr x2, [x2, #:got_lo12:Toshiba15RefValue]
1134 ldr x3, [x3, #:got_lo12:ToshibaA19RefValue]
1139 ldr x0, [x4, #:got_lo12:g_maxRegNum]
1143 ldr x0, [x5, #:got_lo12:g_retryMode]
1157 bl NandcWaitFlashReady
1158 ldp x19, x20, [sp,16]
1159 ldp x29, x30, [sp], 32
1161 .size SandiskSetRRPara, .-SandiskSetRRPara
1163 .global NandcRandmzSel
1164 .type NandcRandmzSel, %function
1166 adrp x2, :got:gNandChipMap
1168 ldr x2, [x2, #:got_lo12:gNandChipMap]
1172 .size NandcRandmzSel, .-NandcRandmzSel
1174 .global FlashSetRandomizer
1175 .type FlashSetRandomizer, %function
1177 stp x29, x30, [sp, -48]!
1181 adrp x0, :got:gNandcVer
1182 stp x19, x20, [sp,16]
1184 ldr x0, [x0, #:got_lo12:gNandcVer]
1188 adrp x0, :got:random_seed
1190 ldr x0, [x0, #:got_lo12:random_seed]
1191 ldrh w19, [x0,w19,uxtw 1]
1192 adrp x0, :got:gNandRandomizer
1193 ldr x0, [x0, #:got_lo12:gNandRandomizer]
1199 orr w1, w19, -1073741824
1200 csel w19, w1, w19, ne
1208 adrp x0, :got:random_seed
1210 ldr x0, [x0, #:got_lo12:random_seed]
1211 ldrh w20, [x0,w2,uxtw 1]
1216 adrp x0, :got:gNandRandomizer
1217 ldr x0, [x0, #:got_lo12:gNandRandomizer]
1220 ubfiz w19, w19, 1, 7
1229 ldp x19, x20, [sp,16]
1231 ldp x29, x30, [sp], 48
1233 .size FlashSetRandomizer, .-FlashSetRandomizer
1235 .global FlashReadCmd
1236 .type FlashReadCmd, %function
1238 stp x29, x30, [sp, -48]!
1258 bl FlashSetRandomizer
1260 ldp x29, x30, [sp], 48
1262 .size FlashReadCmd, .-FlashReadCmd
1264 .global HynixGetReadRetryDefault
1265 .type HynixGetReadRetryDefault, %function
1266 HynixGetReadRetryDefault:
1267 stp x29, x30, [sp, -144]!
1271 stp x19, x20, [sp,16]
1272 adrp x19, :got:gReadRetryInfo
1273 stp x27, x28, [sp,80]
1274 stp x21, x22, [sp,32]
1275 ldr x1, [x19, #:got_lo12:gReadRetryInfo]
1277 stp x23, x24, [sp,48]
1278 stp x25, x26, [sp,64]
1290 adrp x0, :got:refValueDefault
1292 ldr x0, [x0, #:got_lo12:refValueDefault]
1369 adrp x23, :got:gNandMaxDie
1370 adrp x24, :got:DieCsIndex
1372 adrp x26, :got:refValueDefault
1374 ldr x0, [x23, #:got_lo12:gNandMaxDie]
1378 ldr x0, [x24, #:got_lo12:DieCsIndex]
1380 ldr x22, [x19, #:got_lo12:gReadRetryInfo]
1381 ldrb w0, [x0,w27,sxtw]
1390 ldr x0, [x19, #:got_lo12:gReadRetryInfo]
1407 ldr x3, [x26, #:got_lo12:refValueDefault]
1415 strb w3, [x22,w2,sxtw]
1453 adrp x0, :got:gNandMaxDie
1454 ldr x0, [x0, #:got_lo12:gNandMaxDie]
1459 ldr x19, [x19, #:got_lo12:gReadRetryInfo]
1462 ldp x19, x20, [sp,16]
1463 ldp x21, x22, [sp,32]
1464 ldp x23, x24, [sp,48]
1465 ldp x25, x26, [sp,64]
1466 ldp x27, x28, [sp,80]
1467 ldp x29, x30, [sp], 144
1470 adrp x0, :got:DieCsIndex
1471 ldr x3, [x19, #:got_lo12:gReadRetryInfo]
1473 ldr x0, [x0, #:got_lo12:DieCsIndex]
1474 ldrb w23, [x0,w22,sxtw]
1476 sbfiz x26, x23, 6, 32
1485 bl NandcWaitFlashReady
1540 bl NandcWaitFlashReady
1552 adrp x4, :got:gFlashPageBuffer0
1553 ldr x0, [x4, #:got_lo12:gFlashPageBuffer0]
1565 ldr x0, [x4, #:got_lo12:gFlashPageBuffer0]
1587 ldr x0, [x4, #:got_lo12:gFlashPageBuffer0]
1597 ldr w11, [x12,w10,sxtw 2]
1601 csinc w9, w9, w9, ne
1610 str w3, [x12,x5,lsl 2]
1622 strb w6, [x26,w5,sxtw]
1634 bl NandcWaitFlashReady
1640 ldr x0, [x19, #:got_lo12:gReadRetryInfo]
1655 bl NandcWaitFlashReady
1658 .size HynixGetReadRetryDefault, .-HynixGetReadRetryDefault
1660 .global FlashReadDpDataOutCmd
1661 .type FlashReadDpDataOutCmd, %function
1662 FlashReadDpDataOutCmd:
1663 stp x29, x30, [sp, -48]!
1670 adrp x2, :got:gNandOptPara
1674 ldr x2, [x2, #:got_lo12:gNandOptPara]
1702 bl FlashSetRandomizer
1704 ldp x29, x30, [sp], 48
1706 .size FlashReadDpDataOutCmd, .-FlashReadDpDataOutCmd
1708 .global FlashReadDpCmd
1709 .type FlashReadDpCmd, %function
1711 stp x29, x30, [sp, -80]!
1713 stp x21, x22, [sp,32]
1718 stp x19, x20, [sp,16]
1721 adrp x3, :got:gNandOptPara
1725 ldr x3, [x3, #:got_lo12:gNandOptPara]
1746 bl NandcWaitFlashReady
1772 bl FlashSetRandomizer
1774 ldp x19, x20, [sp,16]
1775 ldp x21, x22, [sp,32]
1776 ldp x29, x30, [sp], 80
1778 .size FlashReadDpCmd, .-FlashReadDpCmd
1780 .global FlashProgFirstCmd
1781 .type FlashProgFirstCmd, %function
1783 stp x29, x30, [sp, -48]!
1802 bl FlashSetRandomizer
1804 ldp x29, x30, [sp], 48
1806 .size FlashProgFirstCmd, .-FlashProgFirstCmd
1808 .global FlashProgDpSecondCmd
1809 .type FlashProgDpSecondCmd, %function
1810 FlashProgDpSecondCmd:
1811 stp x29, x30, [sp, -48]!
1818 adrp x2, :got:gNandOptPara
1820 ldr x2, [x2, #:got_lo12:gNandOptPara]
1832 bl FlashSetRandomizer
1834 ldp x29, x30, [sp], 48
1836 .size FlashProgDpSecondCmd, .-FlashProgDpSecondCmd
1839 .type FlashDeInit, %function
1841 stp x29, x30, [sp, -32]!
1845 adrp x19, :got:gFlashToggleModeEn
1846 bl NandcWaitFlashReady
1847 bl FlashSetReadRetryDefault
1848 ldr x19, [x19, #:got_lo12:gFlashToggleModeEn]
1851 adrp x0, :got:gFlashInterfaceMode
1852 ldr x0, [x0, #:got_lo12:gFlashInterfaceMode]
1856 bl FlashSetInterfaceMode
1866 ldp x29, x30, [sp], 32
1868 .size FlashDeInit, .-FlashDeInit
1870 .global NandcTimeCfg
1871 .type NandcTimeCfg, %function
1873 stp x29, x30, [sp, -32]!
1878 bl rknand_get_clk_rate
1880 adrp x1, :got:gpNandc
1881 movk w2, 0xf, lsl 16
1883 ldr x1, [x1, #:got_lo12:gpNandc]
1918 ldp x29, x30, [sp], 32
1920 .size NandcTimeCfg, .-NandcTimeCfg
1922 .global FlashTimingCfg
1923 .type FlashTimingCfg, %function
1927 stp x29, x30, [sp, -16]!
1936 adrp x1, :got:gpNandc
1937 ldr x1, [x1, #:got_lo12:gpNandc]
1941 adrp x0, :got:gNandParaInfo
1942 ldr x0, [x0, #:got_lo12:gNandParaInfo]
1945 ldp x29, x30, [sp], 16
1947 .size FlashTimingCfg, .-FlashTimingCfg
1949 .global NandcGetTimeCfg
1950 .type NandcGetTimeCfg, %function
1952 adrp x4, :got:gpNandc
1953 ldr x4, [x4, #:got_lo12:gpNandc]
1967 orr w0, w0, w1, lsl 16
1970 .size NandcGetTimeCfg, .-NandcGetTimeCfg
1973 .type NandcBchSel, %function
1975 adrp x1, :got:gpNandc
1978 ldr x1, [x1, #:got_lo12:gpNandc]
1982 adrp x1, :got:gNandcEccBits
1983 ldr x1, [x1, #:got_lo12:gNandcEccBits]
2004 .size NandcBchSel, .-NandcBchSel
2007 .type FlashBchSel, %function
2009 adrp x1, :got:gNandFlashEccBits
2011 stp x29, x30, [sp, -16]!
2013 ldr x1, [x1, #:got_lo12:gNandFlashEccBits]
2016 ldp x29, x30, [sp], 16
2018 .size FlashBchSel, .-FlashBchSel
2021 .type FlashResume, %function
2023 adrp x1, :got:gpNandc
2024 stp x29, x30, [sp, -48]!
2026 ldr x1, [x1, #:got_lo12:gpNandc]
2027 stp x19, x20, [sp,16]
2030 add x0, x19, :lo12:.LANCHOR0
2033 adrp x21, :got:IDByte
2034 ldr w3, [x19,#:lo12:.LANCHOR0]
2054 ldr x1, [x21, #:got_lo12:IDByte]
2066 adrp x0, :got:gFlashToggleModeEn
2067 ldr x0, [x0, #:got_lo12:gFlashToggleModeEn]
2070 adrp x20, :got:gFlashInterfaceMode
2072 add x19, x19, :lo12:.LANCHOR0
2074 ldr x20, [x20, #:got_lo12:gFlashInterfaceMode]
2076 bl FlashSetInterfaceMode
2083 adrp x0, :got:gpNandParaInfo
2084 ldr x0, [x0, #:got_lo12:gpNandParaInfo]
2090 ldp x19, x20, [sp,16]
2091 ldp x29, x30, [sp], 48
2093 .size FlashResume, .-FlashResume
2095 .global NandCIrqEnable
2096 .type NandCIrqEnable, %function
2107 .size NandCIrqEnable, .-NandCIrqEnable
2109 .global NandCIrqDisable
2110 .type NandCIrqDisable, %function
2121 .size NandCIrqDisable, .-NandCIrqDisable
2123 .global rk_nandc_get_irq_status
2124 .type rk_nandc_get_irq_status, %function
2125 rk_nandc_get_irq_status:
2128 .size rk_nandc_get_irq_status, .-rk_nandc_get_irq_status
2130 .global rk_nandc_flash_ready
2131 .type rk_nandc_flash_ready, %function
2132 rk_nandc_flash_ready:
2133 stp x29, x30, [sp, -16]!
2137 ldp x29, x30, [sp], 16
2139 .size rk_nandc_flash_ready, .-rk_nandc_flash_ready
2141 .global NandcIqrWaitFlashReady
2142 .type NandcIqrWaitFlashReady, %function
2143 NandcIqrWaitFlashReady:
2144 stp x29, x30, [sp, -32]!
2148 bl rk_nandc_rb_irq_flag_init
2155 bl wait_for_nand_flash_ready
2163 ldp x29, x30, [sp], 32
2165 .size NandcIqrWaitFlashReady, .-NandcIqrWaitFlashReady
2167 .global FlashEraseBlocks
2168 .type FlashEraseBlocks, %function
2170 stp x29, x30, [sp, -128]!
2172 stp x19, x20, [sp,16]
2173 stp x21, x22, [sp,32]
2174 stp x25, x26, [sp,64]
2175 stp x27, x28, [sp,80]
2176 stp x23, x24, [sp,48]
2183 adrp x27, :got:gMultiPageProgEn
2184 adrp x28, :got:gDieOp
2187 adrp x23, :got:gNandMaxDie
2199 adrp x1, :got:gNandMaxDie
2202 ldr x1, [x1, #:got_lo12:gNandMaxDie]
2210 ldr x1, [x27, #:got_lo12:gMultiPageProgEn]
2212 ldr x4, [x28, #:got_lo12:gDieOp]
2216 csel w24, w24, wzr, ne
2218 adrp x4, :got:gDieOp
2225 ldr x2, [x4, #:got_lo12:gDieOp]
2239 adrp x1, :got:DieCsIndex
2240 ldr x4, [x4, #:got_lo12:gDieOp]
2242 ldr x1, [x1, #:got_lo12:DieCsIndex]
2249 adrp x0, :got:DieAddrs
2251 ldr x0, [x0, #:got_lo12:DieAddrs]
2252 ldr w0, [x0,x1,lsl 2]
2268 adrp x0, :got:gpNandc
2270 ldr x0, [x0, #:got_lo12:gpNandc]
2272 bl NandcIqrWaitFlashReady
2274 ldr x0, [x23, #:got_lo12:gNandMaxDie]
2284 ldp x19, x20, [sp,16]
2285 ldp x21, x22, [sp,32]
2286 ldp x23, x24, [sp,48]
2287 ldp x25, x26, [sp,64]
2288 ldp x27, x28, [sp,80]
2289 ldp x29, x30, [sp], 128
2291 .size FlashEraseBlocks, .-FlashEraseBlocks
2293 .global rk_nandc_flash_xfer_completed
2294 .type rk_nandc_flash_xfer_completed, %function
2295 rk_nandc_flash_xfer_completed:
2296 stp x29, x30, [sp, -16]!
2300 ldp x29, x30, [sp], 16
2302 .size rk_nandc_flash_xfer_completed, .-rk_nandc_flash_xfer_completed
2304 .global NandcSendDumpDataStart
2305 .type NandcSendDumpDataStart, %function
2306 NandcSendDumpDataStart:
2313 orr w1, w1, 536870912
2326 .size NandcSendDumpDataStart, .-NandcSendDumpDataStart
2328 .global NandcSendDumpDataDone
2329 .type NandcSendDumpDataDone, %function
2330 NandcSendDumpDataDone:
2339 .size NandcSendDumpDataDone, .-NandcSendDumpDataDone
2341 .global NandcXferStart
2342 .type NandcXferStart, %function
2344 stp x29, x30, [sp, -96]!
2350 adrp x1, :got:gNandChipMap
2351 stp x19, x20, [sp,16]
2352 stp x21, x22, [sp,32]
2353 ldr x1, [x1, #:got_lo12:gNandChipMap]
2354 ubfiz w19, w25, 1, 1
2355 stp x23, x24, [sp,48]
2369 adrp x0, :got:gNandcVer
2370 orr w19, w19, 536870912
2372 ldr x0, [x0, #:got_lo12:gNandcVer]
2387 adrp x20, :got:gMasterInfo
2393 bl rk_nandc_xfer_irq_flag_init
2400 ldr x0, [x20, #:got_lo12:gMasterInfo]
2404 adrp x0, :got:gNandcEccBits
2410 ldr x0, [x0, #:got_lo12:gNandcEccBits]
2419 ldr x4, [x20, #:got_lo12:gMasterInfo]
2425 orr w4, w10, w4, lsl 16
2436 ldr x20, [x20, #:got_lo12:gMasterInfo]
2437 ubfx x23, x19, 22, 5
2444 bl rknand_dma_map_single
2449 bl rknand_dma_map_single
2490 ldp x19, x20, [sp,16]
2491 ldp x21, x22, [sp,32]
2492 ldp x23, x24, [sp,48]
2494 ldp x29, x30, [sp], 96
2496 .size NandcXferStart, .-NandcXferStart
2499 .type Ftl_log2, %function
2513 .size Ftl_log2, .-Ftl_log2
2515 .global FtlPrintInfo
2516 .type FtlPrintInfo, %function
2519 .size FtlPrintInfo, .-FtlPrintInfo
2521 .global FtlSysBlkNumInit
2522 .type FtlSysBlkNumInit, %function
2527 adrp x2, :got:c_ftl_nand_max_sys_blks
2529 adrp x1, :got:c_ftl_nand_sys_blks_per_plane
2530 adrp x3, :got:c_ftl_nand_blk_pre_plane
2531 ldr x1, [x1, #:got_lo12:c_ftl_nand_sys_blks_per_plane]
2533 adrp x1, :got:c_ftl_nand_planes_num
2534 ldr x2, [x2, #:got_lo12:c_ftl_nand_max_sys_blks]
2535 ldr x1, [x1, #:got_lo12:c_ftl_nand_planes_num]
2539 adrp x2, :got:c_ftl_nand_data_blks_per_plane
2540 ldr x3, [x3, #:got_lo12:c_ftl_nand_blk_pre_plane]
2541 ldr x2, [x2, #:got_lo12:c_ftl_nand_data_blks_per_plane]
2545 adrp x2, :got:c_ftl_nand_totle_phy_blks
2546 adrp x0, :got:c_ftl_nand_max_data_blks
2547 ldr x2, [x2, #:got_lo12:c_ftl_nand_totle_phy_blks]
2548 ldr x0, [x0, #:got_lo12:c_ftl_nand_max_data_blks]
2554 .size FtlSysBlkNumInit, .-FtlSysBlkNumInit
2556 .global FtlConstantsInit
2557 .type FtlConstantsInit, %function
2559 stp x29, x30, [sp, -96]!
2560 adrp x3, :got:c_ftl_nand_planes_per_die
2561 adrp x6, :got:p_plane_order_table
2563 stp x19, x20, [sp,16]
2564 stp x21, x22, [sp,32]
2565 stp x23, x24, [sp,48]
2566 stp x25, x26, [sp,64]
2567 stp x27, x28, [sp,80]
2569 adrp x20, :got:c_ftl_nand_blk_pre_plane
2571 adrp x0, :got:c_ftl_nand_type
2573 ldr x0, [x0, #:got_lo12:c_ftl_nand_type]
2576 adrp x0, :got:c_ftl_nand_die_num
2577 ldr x1, [x0, #:got_lo12:c_ftl_nand_die_num]
2580 ldr x3, [x3, #:got_lo12:c_ftl_nand_planes_per_die]
2582 ldr x3, [x20, #:got_lo12:c_ftl_nand_blk_pre_plane]
2586 ldr x4, [x6, #:got_lo12:p_plane_order_table]
2587 adrp x13, :got:p_plane_order_table
2609 ldr x10, [x13, #:got_lo12:p_plane_order_table]
2613 strb w3, [x10,w6,uxtw]
2623 ldr x3, [x0, #:got_lo12:c_ftl_nand_die_num]
2627 ldr x2, [x20, #:got_lo12:c_ftl_nand_blk_pre_plane]
2630 adrp x2, :got:c_mlc_erase_count_value
2631 adrp x21, :got:c_ftl_nand_ext_blk_pre_plane
2634 ldr x2, [x2, #:got_lo12:c_mlc_erase_count_value]
2636 ldr x3, [x21, #:got_lo12:c_ftl_nand_ext_blk_pre_plane]
2641 adrp x23, :got:c_ftl_vendor_part_size
2643 ldr x3, [x23, #:got_lo12:c_ftl_vendor_part_size]
2645 adrp x2, :got:g_slc2KBNand
2646 ldr x2, [x2, #:got_lo12:g_slc2KBNand]
2652 ldr x0, [x0, #:got_lo12:c_ftl_nand_die_num]
2653 adrp x24, :got:c_ftl_nand_planes_num
2654 adrp x25, :got:c_ftl_nand_page_pre_blk
2655 adrp x28, :got:c_ftl_nand_page_pre_slc_blk
2656 adrp x27, :got:c_ftl_nand_sec_pre_page
2657 adrp x22, :got:c_ftl_nand_sec_pre_page_shift
2659 ldr x24, [x24, #:got_lo12:c_ftl_nand_planes_num]
2662 ldr x20, [x20, #:got_lo12:c_ftl_nand_blk_pre_plane]
2665 adrp x0, :got:c_ftl_nand_blks_per_die
2667 ldr x0, [x0, #:got_lo12:c_ftl_nand_blks_per_die]
2671 adrp x1, :got:c_ftl_nand_blks_per_die_shift
2673 ldr x1, [x1, #:got_lo12:c_ftl_nand_blks_per_die_shift]
2676 ldr x1, [x25, #:got_lo12:c_ftl_nand_page_pre_blk]
2678 ldr x1, [x28, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
2680 adrp x1, :got:c_ftl_nand_page_pre_super_blk
2682 ldr x1, [x1, #:got_lo12:c_ftl_nand_page_pre_super_blk]
2686 ldr x26, [x27, #:got_lo12:c_ftl_nand_sec_pre_page]
2689 ldr x1, [x22, #:got_lo12:c_ftl_nand_sec_pre_page_shift]
2695 adrp x0, :got:c_ftl_nand_byte_pre_page
2697 ldr x0, [x0, #:got_lo12:c_ftl_nand_byte_pre_page]
2699 adrp x0, :got:c_ftl_nand_byte_pre_oob
2702 ldr x0, [x0, #:got_lo12:c_ftl_nand_byte_pre_oob]
2704 adrp x0, :got:c_ftl_nand_reserved_blks
2707 ldr x0, [x0, #:got_lo12:c_ftl_nand_reserved_blks]
2709 adrp x1, :got:c_ftl_nand_totle_phy_blks
2712 ldr x1, [x1, #:got_lo12:c_ftl_nand_totle_phy_blks]
2717 ldr x1, [x21, #:got_lo12:c_ftl_nand_ext_blk_pre_plane]
2721 ldr x21, [x21, #:got_lo12:c_ftl_nand_ext_blk_pre_plane]
2722 adrp x3, :got:DeviceCapacity
2723 ldr x7, [x19, #:got_lo12:c_ftl_nand_page_pre_blk]
2727 ldr x3, [x3, #:got_lo12:DeviceCapacity]
2733 ldr x4, [x4, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
2734 ldr x23, [x23, #:got_lo12:c_ftl_vendor_part_size]
2740 adrp x3, :got:c_ftl_nand_max_vendor_blks
2744 ldr x4, [x3, #:got_lo12:c_ftl_nand_max_vendor_blks]
2748 ldr x2, [x3, #:got_lo12:c_ftl_nand_max_vendor_blks]
2752 adrp x2, :got:c_ftl_nand_vendor_region_num
2757 ldr x2, [x2, #:got_lo12:c_ftl_nand_vendor_region_num]
2761 adrp x1, :got:c_ftl_nand_map_blks_per_plane
2762 ldr x1, [x1, #:got_lo12:c_ftl_nand_map_blks_per_plane]
2764 adrp x1, :got:c_ftl_nand_max_map_blks
2766 ldr x1, [x1, #:got_lo12:c_ftl_nand_max_map_blks]
2770 ldr x3, [x3, #:got_lo12:c_ftl_nand_max_vendor_blks]
2774 adrp x1, :got:c_ftl_nand_sys_blks_per_plane
2775 ldr x2, [x1, #:got_lo12:c_ftl_nand_sys_blks_per_plane]
2780 ldr x21, [x1, #:got_lo12:c_ftl_nand_sys_blks_per_plane]
2783 adrp x0, :got:c_ftl_nand_init_sys_blks_per_plane
2785 adrp x2, :got:c_ftl_nand_map_region_num
2786 ldr x0, [x0, #:got_lo12:c_ftl_nand_init_sys_blks_per_plane]
2788 adrp x0, :got:c_ftl_nand_max_data_blks
2789 ldr x19, [x19, #:got_lo12:c_ftl_nand_page_pre_blk]
2790 ldr x0, [x0, #:got_lo12:c_ftl_nand_max_data_blks]
2791 ldr x22, [x22, #:got_lo12:c_ftl_nand_sec_pre_page_shift]
2794 ldr x2, [x2, #:got_lo12:c_ftl_nand_map_region_num]
2803 adrp x0, :got:c_ftl_nand_l2pmap_ram_region_num
2804 ldr x20, [x20, #:got_lo12:c_ftl_nand_sec_pre_page]
2805 ldr x0, [x0, #:got_lo12:c_ftl_nand_l2pmap_ram_region_num]
2809 adrp x0, :got:g_MaxLbaSector
2810 ldr x0, [x0, #:got_lo12:g_MaxLbaSector]
2813 ldp x19, x20, [sp,16]
2814 ldp x21, x22, [sp,32]
2815 ldp x23, x24, [sp,48]
2816 ldp x25, x26, [sp,64]
2817 ldp x27, x28, [sp,80]
2818 ldp x29, x30, [sp], 96
2820 .size FtlConstantsInit, .-FtlConstantsInit
2822 .global IsBlkInVendorPart
2823 .type IsBlkInVendorPart, %function
2825 adrp x1, :got:g_totle_vendor_block
2828 ldr x1, [x1, #:got_lo12:g_totle_vendor_block]
2831 adrp x1, :got:c_ftl_nand_max_vendor_blks
2832 ldr x1, [x1, #:got_lo12:c_ftl_nand_max_vendor_blks]
2834 adrp x1, :got:p_vendor_block_table
2835 ldr x1, [x1, #:got_lo12:p_vendor_block_table]
2842 add x0, x3, x1, lsl 1
2852 .size IsBlkInVendorPart, .-IsBlkInVendorPart
2854 .global FtlCacheMetchLpa
2855 .type FtlCacheMetchLpa, %function
2857 adrp x2, :got:g_wr_page_num
2860 ldr x2, [x2, #:got_lo12:g_wr_page_num]
2863 adrp x2, :got:req_wr_io
2865 ldr x2, [x2, #:got_lo12:req_wr_io]
2884 .size FtlCacheMetchLpa, .-FtlCacheMetchLpa
2887 .type FtlGetCap, %function
2889 adrp x0, :got:g_MaxLbaSector
2890 ldr x0, [x0, #:got_lo12:g_MaxLbaSector]
2893 .size FtlGetCap, .-FtlGetCap
2895 .global FtlGetCapacity
2896 .type FtlGetCapacity, %function
2898 adrp x0, :got:g_MaxLbaSector
2899 ldr x0, [x0, #:got_lo12:g_MaxLbaSector]
2902 .size FtlGetCapacity, .-FtlGetCapacity
2905 .type FtlGetLpn, %function
2907 adrp x0, :got:g_MaxLpn
2908 ldr x0, [x0, #:got_lo12:g_MaxLpn]
2911 .size FtlGetLpn, .-FtlGetLpn
2913 .global FtlGetCurEraseBlock
2914 .type FtlGetCurEraseBlock, %function
2915 FtlGetCurEraseBlock:
2916 adrp x0, :got:c_ftl_nand_planes_num
2917 adrp x1, :got:g_cur_erase_blk
2918 ldr x0, [x0, #:got_lo12:c_ftl_nand_planes_num]
2919 ldr x1, [x1, #:got_lo12:g_cur_erase_blk]
2924 .size FtlGetCurEraseBlock, .-FtlGetCurEraseBlock
2926 .global FtlGetAllBlockNum
2927 .type FtlGetAllBlockNum, %function
2929 adrp x0, :got:c_ftl_nand_blk_pre_plane
2930 adrp x1, :got:c_ftl_nand_planes_num
2931 ldr x0, [x0, #:got_lo12:c_ftl_nand_blk_pre_plane]
2932 ldr x1, [x1, #:got_lo12:c_ftl_nand_planes_num]
2937 .size FtlGetAllBlockNum, .-FtlGetAllBlockNum
2939 .global FtlBbmMapBadBlock
2940 .type FtlBbmMapBadBlock, %function
2943 adrp x0, :got:c_ftl_nand_blks_per_die
2944 stp x29, x30, [sp, -32]!
2947 ldr x0, [x0, #:got_lo12:c_ftl_nand_blks_per_die]
2949 adrp x19, :got:gBbtInfo
2951 ldr x19, [x19, #:got_lo12:gBbtInfo]
2953 add x0, x19, x2, uxth 3
2964 add x0, x0, :lo12:.LC1
2971 ldp x29, x30, [sp], 32
2973 .size FtlBbmMapBadBlock, .-FtlBbmMapBadBlock
2975 .global FtlBbmIsBadBlock
2976 .type FtlBbmIsBadBlock, %function
2978 adrp x2, :got:c_ftl_nand_blks_per_die
2980 ldr x2, [x2, #:got_lo12:c_ftl_nand_blks_per_die]
2984 adrp x1, :got:gBbtInfo
2986 ldr x1, [x1, #:got_lo12:gBbtInfo]
2988 add x2, x1, x2, uxth 3
2990 ldr w1, [x1,x3,lsl 2]
2994 .size FtlBbmIsBadBlock, .-FtlBbmIsBadBlock
2996 .global FtlBbtInfoPrint
2997 .type FtlBbtInfoPrint, %function
3000 .size FtlBbtInfoPrint, .-FtlBbtInfoPrint
3002 .global FtlBbtCalcTotleCnt
3003 .type FtlBbtCalcTotleCnt, %function
3005 stp x29, x30, [sp, -48]!
3007 stp x19, x20, [sp,16]
3009 stp x21, x22, [sp,32]
3011 adrp x22, :got:c_ftl_nand_blks_per_die
3012 adrp x21, :got:c_ftl_nand_die_num
3014 ldr x0, [x22, #:got_lo12:c_ftl_nand_blks_per_die]
3015 ldr x1, [x21, #:got_lo12:c_ftl_nand_die_num]
3032 ldp x19, x20, [sp,16]
3033 ldp x21, x22, [sp,32]
3034 ldp x29, x30, [sp], 48
3036 .size FtlBbtCalcTotleCnt, .-FtlBbtCalcTotleCnt
3039 .type V2P_block, %function
3041 adrp x2, :got:c_ftl_nand_planes_per_die
3044 ldr x2, [x2, #:got_lo12:c_ftl_nand_planes_per_die]
3049 adrp x1, :got:c_ftl_nand_blks_per_die
3050 ldr x1, [x1, #:got_lo12:c_ftl_nand_blks_per_die]
3054 .size V2P_block, .-V2P_block
3057 .type P2V_plane, %function
3059 adrp x1, :got:c_ftl_nand_planes_per_die
3060 adrp x2, :got:c_ftl_nand_blks_per_die
3062 ldr x1, [x1, #:got_lo12:c_ftl_nand_planes_per_die]
3063 ldr x2, [x2, #:got_lo12:c_ftl_nand_blks_per_die]
3071 .size P2V_plane, .-P2V_plane
3073 .global P2V_block_in_plane
3074 .type P2V_block_in_plane, %function
3076 adrp x1, :got:c_ftl_nand_blks_per_die
3078 ldr x1, [x1, #:got_lo12:c_ftl_nand_blks_per_die]
3082 adrp x1, :got:c_ftl_nand_planes_per_die
3084 ldr x1, [x1, #:got_lo12:c_ftl_nand_planes_per_die]
3088 .size P2V_block_in_plane, .-P2V_block_in_plane
3090 .global ftl_cmp_data_ver
3091 .type ftl_cmp_data_ver, %function
3106 .size ftl_cmp_data_ver, .-ftl_cmp_data_ver
3108 .global FtlFreeSysBlkQueueEmpty
3109 .type FtlFreeSysBlkQueueEmpty, %function
3110 FtlFreeSysBlkQueueEmpty:
3111 adrp x0, :got:gSysFreeQueue
3112 ldr x0, [x0, #:got_lo12:gSysFreeQueue]
3117 .size FtlFreeSysBlkQueueEmpty, .-FtlFreeSysBlkQueueEmpty
3119 .global FtlFreeSysBlkQueueFull
3120 .type FtlFreeSysBlkQueueFull, %function
3121 FtlFreeSysBlkQueueFull:
3122 adrp x0, :got:gSysFreeQueue
3123 ldr x0, [x0, #:got_lo12:gSysFreeQueue]
3128 .size FtlFreeSysBlkQueueFull, .-FtlFreeSysBlkQueueFull
3130 .global FtlFreeSysBlkQueueIn
3131 .type FtlFreeSysBlkQueueIn, %function
3132 FtlFreeSysBlkQueueIn:
3133 stp x29, x30, [sp, -32]!
3135 stp x19, x20, [sp,16]
3138 bl FtlFreeSysBlkQueueFull
3143 bl P2V_block_in_plane
3145 adrp x1, :got:req_erase
3147 ldr x1, [x1, #:got_lo12:req_erase]
3153 adrp x0, :got:p_erase_count_table
3154 ubfiz x1, x19, 1, 16
3155 ldr x0, [x0, #:got_lo12:p_erase_count_table]
3160 adrp x1, :got:g_totle_sys_slc_erase_count
3161 ldr x1, [x1, #:got_lo12:g_totle_sys_slc_erase_count]
3166 adrp x1, :got:gSysFreeQueue
3167 ldr x1, [x1, #:got_lo12:gSysFreeQueue]
3172 add x0, x1, x2, sxtw 1
3178 ldp x19, x20, [sp,16]
3179 ldp x29, x30, [sp], 32
3181 .size FtlFreeSysBlkQueueIn, .-FtlFreeSysBlkQueueIn
3183 .global FtlFreeSysBLkSort
3184 .type FtlFreeSysBLkSort, %function
3186 stp x29, x30, [sp, -48]!
3188 stp x19, x20, [sp,16]
3189 stp x21, x22, [sp,32]
3191 adrp x20, :got:gSysFreeQueue
3192 adrp x21, :got:p_sys_data_buf
3193 adrp x22, :got:p_erase_count_table
3195 ldr x1, [x20, #:got_lo12:gSysFreeQueue]
3196 adrp x6, :got:gSysFreeQueue
3202 add x0, x1, x0, sxtw 1
3204 bl P2V_block_in_plane
3206 ldr x3, [x22, #:got_lo12:p_erase_count_table]
3207 ubfiz x1, x19, 2, 16
3208 ldr x2, [x21, #:got_lo12:p_sys_data_buf]
3218 adrp x7, :got:p_sys_data_buf
3220 ldr x1, [x6, #:got_lo12:gSysFreeQueue]
3225 ldr x1, [x7, #:got_lo12:p_sys_data_buf]
3235 ldr w9, [x3,w1,uxtw 2]
3250 adrp x2, :got:p_sys_data_buf
3251 ldr x2, [x2, #:got_lo12:p_sys_data_buf]
3254 ldr x2, [x6, #:got_lo12:gSysFreeQueue]
3258 add x1, x2, x1, sxtw 1
3259 add x0, x2, x0, sxtw 1
3268 ldp x19, x20, [sp,16]
3269 ldp x21, x22, [sp,32]
3270 ldp x29, x30, [sp], 48
3272 .size FtlFreeSysBLkSort, .-FtlFreeSysBLkSort
3274 .global IsInFreeQueue
3275 .type IsInFreeQueue, %function
3277 stp x29, x30, [sp, -32]!
3281 bl FtlFreeSysBlkQueueFull
3285 adrp x2, :got:gSysFreeQueue
3287 ldr x3, [x2, #:got_lo12:gSysFreeQueue]
3293 ldr x5, [x2, #:got_lo12:gSysFreeQueue]
3309 ldp x29, x30, [sp], 32
3311 .size IsInFreeQueue, .-IsInFreeQueue
3313 .global FtlFreeSysBlkQueueOut
3314 .type FtlFreeSysBlkQueueOut, %function
3315 FtlFreeSysBlkQueueOut:
3316 stp x29, x30, [sp, -16]!
3318 bl FtlFreeSysBlkQueueEmpty
3322 adrp x1, :got:gSysFreeQueue
3323 ldr x1, [x1, #:got_lo12:gSysFreeQueue]
3325 add x0, x1, x2, sxtw 1
3334 ldp x29, x30, [sp], 16
3336 .size FtlFreeSysBlkQueueOut, .-FtlFreeSysBlkQueueOut
3338 .global insert_data_list
3339 .type insert_data_list, %function
3345 adrp x3, :got:p_data_block_list_table
3348 adrp x2, :got:p_data_block_list_head
3350 ldr x8, [x3, #:got_lo12:p_data_block_list_table]
3357 ldr x7, [x2, #:got_lo12:p_data_block_list_head]
3363 adrp x2, :got:p_valid_page_count_table
3366 mov x8, -6148914691236517206
3367 ldr x2, [x2, #:got_lo12:p_valid_page_count_table]
3375 csinv w3, w3, wzr, ne
3377 adrp x8, :got:p_erase_count_table
3379 ldr x8, [x8, #:got_lo12:p_erase_count_table]
3384 ubfiz x16, x2, 1, 16
3389 csinv w4, w4, wzr, ne
3405 adrp x0, :got:p_data_block_list_tail
3406 ldr x0, [x0, #:got_lo12:p_data_block_list_tail]
3418 ldr x2, [x5, #:got_lo12:p_data_block_list_head]
3429 ldr x3, [x10, #:got_lo12:p_data_block_list_table]
3436 .size insert_data_list, .-insert_data_list
3438 .global INSERT_DATA_LIST
3439 .type INSERT_DATA_LIST, %function
3441 stp x29, x30, [sp, -16]!
3444 adrp x0, :got:g_num_data_superblocks
3445 ldr x0, [x0, #:got_lo12:g_num_data_superblocks]
3449 ldp x29, x30, [sp], 16
3451 .size INSERT_DATA_LIST, .-INSERT_DATA_LIST
3453 .global insert_free_list
3454 .type insert_free_list, %function
3460 adrp x3, :got:p_data_block_list_table
3463 adrp x2, :got:p_free_data_block_list_head
3465 ldr x9, [x3, #:got_lo12:p_data_block_list_table]
3472 ldr x10, [x2, #:got_lo12:p_free_data_block_list_head]
3478 adrp x2, :got:p_erase_count_table
3480 mov x9, -6148914691236517206
3481 ldr x2, [x2, #:got_lo12:p_erase_count_table]
3509 ldr x2, [x3, #:got_lo12:p_free_data_block_list_head]
3520 ldr x3, [x12, #:got_lo12:p_data_block_list_table]
3527 .size insert_free_list, .-insert_free_list
3529 .global INSERT_FREE_LIST
3530 .type INSERT_FREE_LIST, %function
3532 stp x29, x30, [sp, -16]!
3535 adrp x0, :got:g_num_free_superblocks
3536 ldr x0, [x0, #:got_lo12:g_num_free_superblocks]
3540 ldp x29, x30, [sp], 16
3542 .size INSERT_FREE_LIST, .-INSERT_FREE_LIST
3544 .global List_remove_node
3545 .type List_remove_node, %function
3547 adrp x6, :got:p_data_block_list_table
3552 ldr x6, [x6, #:got_lo12:p_data_block_list_table]
3594 .size List_remove_node, .-List_remove_node
3596 .global List_pop_index_node
3597 .type List_pop_index_node, %function
3598 List_pop_index_node:
3599 stp x29, x30, [sp, -32]!
3606 adrp x3, :got:p_data_block_list_table
3609 ldr x3, [x3, #:got_lo12:p_data_block_list_table]
3615 mov x1, -6148914691236517206
3634 ldp x29, x30, [sp], 32
3636 .size List_pop_index_node, .-List_pop_index_node
3638 .global List_pop_head_node
3639 .type List_pop_head_node, %function
3641 stp x29, x30, [sp, -16]!
3644 bl List_pop_index_node
3645 ldp x29, x30, [sp], 16
3647 .size List_pop_head_node, .-List_pop_head_node
3649 .global List_get_gc_head_node
3650 .type List_get_gc_head_node, %function
3651 List_get_gc_head_node:
3653 adrp x0, :got:p_data_block_list_head
3654 ldr x0, [x0, #:got_lo12:p_data_block_list_head]
3658 adrp x0, :got:p_data_block_list_table
3661 ldr x0, [x0, #:got_lo12:p_data_block_list_table]
3667 mov x0, -6148914691236517206
3683 .size List_get_gc_head_node, .-List_get_gc_head_node
3685 .global List_update_data_list
3686 .type List_update_data_list, %function
3687 List_update_data_list:
3688 stp x29, x30, [sp, -32]!
3692 adrp x0, :got:g_active_superblock
3693 ldr x0, [x0, #:got_lo12:g_active_superblock]
3697 adrp x0, :got:g_buffer_superblock
3698 ldr x0, [x0, #:got_lo12:g_buffer_superblock]
3702 adrp x0, :got:g_gc_temp_superblock
3703 ldr x0, [x0, #:got_lo12:g_gc_temp_superblock]
3707 adrp x0, :got:p_data_block_list_table
3710 ldr x0, [x0, #:got_lo12:p_data_block_list_table]
3712 adrp x0, :got:p_data_block_list_head
3714 ldr x0, [x0, #:got_lo12:p_data_block_list_head]
3718 adrp x1, :got:p_valid_page_count_table
3720 ldr x1, [x1, #:got_lo12:p_valid_page_count_table]
3722 ubfiz x1, x19, 1, 16
3726 mov x4, -6148914691236517206
3728 csinv w2, w2, wzr, ne
3734 ldrh w1, [x6,x1,lsl 1]
3737 csinv w1, w1, wzr, ne
3742 adrp x0, :got:g_num_data_superblocks
3743 ldr x0, [x0, #:got_lo12:g_num_data_superblocks]
3752 ldp x29, x30, [sp], 32
3754 .size List_update_data_list, .-List_update_data_list
3756 .global ftl_map_blk_alloc_new_blk
3757 .type ftl_map_blk_alloc_new_blk, %function
3758 ftl_map_blk_alloc_new_blk:
3759 stp x29, x30, [sp, -48]!
3761 stp x19, x20, [sp,16]
3762 stp x21, x22, [sp,32]
3773 bl FtlFreeSysBlkQueueOut
3792 ldp x19, x20, [sp,16]
3793 ldp x21, x22, [sp,32]
3794 ldp x29, x30, [sp], 48
3796 .size ftl_map_blk_alloc_new_blk, .-ftl_map_blk_alloc_new_blk
3798 .global select_l2p_ram_region
3799 .type select_l2p_ram_region, %function
3800 select_l2p_ram_region:
3801 adrp x0, :got:c_ftl_nand_l2pmap_ram_region_num
3804 ldr x0, [x0, #:got_lo12:c_ftl_nand_l2pmap_ram_region_num]
3806 adrp x0, :got:p_l2p_ram_map
3807 ldr x0, [x0, #:got_lo12:p_l2p_ram_map]
3814 add x5, x1, x3, lsl 4
3827 add x4, x1, x3, lsl 4
3843 adrp x0, :got:g_l2p_last_update_region_id
3847 ldr x0, [x0, #:got_lo12:g_l2p_last_update_region_id]
3868 .size select_l2p_ram_region, .-select_l2p_ram_region
3870 .global FtlUpdateVaildLpn
3871 .type FtlUpdateVaildLpn, %function
3873 adrp x1, :got:FtlUpdateVaildLpnCount
3874 ldr x3, [x1, #:got_lo12:FtlUpdateVaildLpnCount]
3883 ldr x1, [x1, #:got_lo12:FtlUpdateVaildLpnCount]
3886 adrp x1, :got:g_VaildLpn
3887 ldr x0, [x1, #:got_lo12:g_VaildLpn]
3889 adrp x0, :got:c_ftl_nand_data_blks_per_plane
3890 ldr x0, [x0, #:got_lo12:c_ftl_nand_data_blks_per_plane]
3892 adrp x0, :got:p_valid_page_count_table
3893 ldr x0, [x0, #:got_lo12:p_valid_page_count_table]
3899 ldrh w4, [x6,x0,lsl 1]
3902 ldr x3, [x1, #:got_lo12:g_VaildLpn]
3911 .size FtlUpdateVaildLpn, .-FtlUpdateVaildLpn
3913 .global ftl_sb_update_avl_pages
3914 .type ftl_sb_update_avl_pages, %function
3915 ftl_sb_update_avl_pages:
3916 adrp x3, :got:c_ftl_nand_planes_num
3921 ldr x3, [x3, #:got_lo12:c_ftl_nand_planes_num]
3926 add x4, x0, x2, sxtw 1
3938 adrp x2, :got:c_ftl_nand_page_pre_blk
3941 add x3, x0, x3, uxth 1
3942 ldr x2, [x2, #:got_lo12:c_ftl_nand_page_pre_blk]
3960 .size ftl_sb_update_avl_pages, .-ftl_sb_update_avl_pages
3962 .global make_superblock
3963 .type make_superblock, %function
3965 stp x29, x30, [sp, -80]!
3967 stp x19, x20, [sp,16]
3968 stp x23, x24, [sp,48]
3969 stp x21, x22, [sp,32]
3975 adrp x22, :got:c_ftl_nand_planes_num
3976 adrp x24, :got:p_plane_order_table
3979 ldr x0, [x22, #:got_lo12:c_ftl_nand_planes_num]
3983 ldr x0, [x24, #:got_lo12:p_plane_order_table]
3984 add x21, x19, x20, uxth 1
3986 ldrb w0, [x0,w20,sxtw]
4001 adrp x1, :got:c_ftl_nand_page_pre_blk
4003 ldr x1, [x1, #:got_lo12:c_ftl_nand_page_pre_blk]
4008 adrp x0, :got:g_inkDie_check_enable
4009 ldr x0, [x0, #:got_lo12:g_inkDie_check_enable]
4012 adrp x0, :got:p_erase_count_table
4014 ldr x0, [x0, #:got_lo12:p_erase_count_table]
4016 ldrh w0, [x0,x1,lsl 1]
4024 ldp x19, x20, [sp,16]
4025 ldp x21, x22, [sp,32]
4026 ldp x23, x24, [sp,48]
4027 ldp x29, x30, [sp], 80
4029 .size make_superblock, .-make_superblock
4031 .global update_multiplier_value
4032 .type update_multiplier_value, %function
4033 update_multiplier_value:
4034 stp x29, x30, [sp, -64]!
4036 stp x19, x20, [sp,16]
4039 stp x21, x22, [sp,32]
4040 stp x23, x24, [sp,48]
4042 adrp x22, :got:c_ftl_nand_planes_num
4043 adrp x23, :got:p_plane_order_table
4044 adrp x24, :got:c_ftl_nand_page_pre_blk
4046 ldr x0, [x22, #:got_lo12:c_ftl_nand_planes_num]
4050 ldr x0, [x23, #:got_lo12:p_plane_order_table]
4052 ldrb w0, [x0,w21,sxtw]
4056 ldr x0, [x24, #:got_lo12:c_ftl_nand_page_pre_blk]
4071 adrp x0, :got:p_data_block_list_table
4072 ldr x0, [x0, #:got_lo12:p_data_block_list_table]
4077 ldp x19, x20, [sp,16]
4078 ldp x21, x22, [sp,32]
4079 ldp x23, x24, [sp,48]
4080 ldp x29, x30, [sp], 64
4082 .size update_multiplier_value, .-update_multiplier_value
4084 .global GetFreeBlockMinEraseCount
4085 .type GetFreeBlockMinEraseCount, %function
4086 GetFreeBlockMinEraseCount:
4087 adrp x0, :got:p_free_data_block_list_head
4088 ldr x0, [x0, #:got_lo12:p_free_data_block_list_head]
4092 adrp x0, :got:p_data_block_list_table
4093 ldr x0, [x0, #:got_lo12:p_data_block_list_table]
4096 mov x0, -6148914691236517206
4099 adrp x0, :got:p_erase_count_table
4101 ldr x0, [x0, #:got_lo12:p_erase_count_table]
4103 ldrh w0, [x0,x1,lsl 1]
4106 .size GetFreeBlockMinEraseCount, .-GetFreeBlockMinEraseCount
4108 .global GetFreeBlockMaxEraseCount
4109 .type GetFreeBlockMaxEraseCount, %function
4110 GetFreeBlockMaxEraseCount:
4112 adrp x0, :got:p_free_data_block_list_head
4113 ldr x0, [x0, #:got_lo12:p_free_data_block_list_head]
4117 adrp x0, :got:g_num_free_superblocks
4120 ldr x0, [x0, #:got_lo12:g_num_free_superblocks]
4124 adrp x0, :got:p_data_block_list_table
4127 ldr x0, [x0, #:got_lo12:p_data_block_list_table]
4129 mov x2, -6148914691236517206
4144 adrp x0, :got:p_erase_count_table
4146 ldr x0, [x0, #:got_lo12:p_erase_count_table]
4157 .size GetFreeBlockMaxEraseCount, .-GetFreeBlockMaxEraseCount
4159 .global FtlPrintInfo2buf
4160 .type FtlPrintInfo2buf, %function
4162 stp x29, x30, [sp, -128]!
4165 add x1, x1, :lo12:.LC2
4166 stp x19, x20, [sp,16]
4167 stp x21, x22, [sp,32]
4168 stp x23, x24, [sp,48]
4170 stp x25, x26, [sp,64]
4171 stp x27, x28, [sp,80]
4174 adrp x2, :got:gNandPhyInfo
4177 add x1, x1, :lo12:.LC3
4178 ldr x2, [x2, #:got_lo12:gNandPhyInfo]
4181 add x20, x20, x0, sxtw
4182 adrp x2, :got:DeviceCapacity
4185 add x1, x1, :lo12:.LC4
4186 ldr x2, [x2, #:got_lo12:DeviceCapacity]
4189 add x20, x20, x0, sxtw
4190 adrp x0, :got:gFtlInitStatus
4191 ldr x0, [x0, #:got_lo12:gFtlInitStatus]
4202 adrp x19, :got:gBbtInfo
4203 adrp x25, :got:g_num_free_superblocks
4205 adrp x23, :got:p_valid_page_count_table
4211 add x1, x1, :lo12:.LC5
4213 adrp x26, :got:g_sys_ext_data
4215 add x21, x20, x0, sxtw
4218 add x1, x1, :lo12:.LC6
4220 adrp x20, :got:g_sys_save_data
4222 adrp x2, :got:g_MaxLpn
4225 add x1, x1, :lo12:.LC7
4226 ldr x2, [x2, #:got_lo12:g_MaxLpn]
4229 add x21, x21, x0, sxtw
4230 adrp x2, :got:g_VaildLpn
4233 add x1, x1, :lo12:.LC8
4234 ldr x2, [x2, #:got_lo12:g_VaildLpn]
4237 add x21, x21, x0, sxtw
4238 adrp x2, :got:g_totle_read_page_count
4241 add x1, x1, :lo12:.LC9
4242 ldr x2, [x2, #:got_lo12:g_totle_read_page_count]
4245 add x21, x21, x0, sxtw
4246 adrp x2, :got:g_totle_discard_page_count
4249 add x1, x1, :lo12:.LC10
4250 ldr x2, [x2, #:got_lo12:g_totle_discard_page_count]
4253 add x21, x21, x0, sxtw
4254 adrp x2, :got:g_totle_write_page_count
4257 add x1, x1, :lo12:.LC11
4258 ldr x2, [x2, #:got_lo12:g_totle_write_page_count]
4261 add x21, x21, x0, sxtw
4262 adrp x2, :got:g_totle_cache_write_count
4265 add x1, x1, :lo12:.LC12
4266 ldr x2, [x2, #:got_lo12:g_totle_cache_write_count]
4269 add x21, x21, x0, sxtw
4270 adrp x2, :got:g_totle_l2p_write_count
4273 add x1, x1, :lo12:.LC13
4274 ldr x2, [x2, #:got_lo12:g_totle_l2p_write_count]
4277 add x21, x21, x0, sxtw
4278 adrp x2, :got:g_totle_gc_page_count
4281 add x1, x1, :lo12:.LC14
4282 ldr x2, [x2, #:got_lo12:g_totle_gc_page_count]
4285 add x21, x21, x0, sxtw
4286 adrp x0, :got:g_totle_write_sector
4288 add x1, x1, :lo12:.LC15
4289 ldr x0, [x0, #:got_lo12:g_totle_write_sector]
4294 add x21, x21, x0, sxtw
4295 adrp x0, :got:g_totle_read_sector
4297 add x1, x1, :lo12:.LC16
4298 ldr x0, [x0, #:got_lo12:g_totle_read_sector]
4303 add x21, x21, x0, sxtw
4304 adrp x2, :got:g_GlobalSysVersion
4307 add x1, x1, :lo12:.LC17
4308 ldr x2, [x2, #:got_lo12:g_GlobalSysVersion]
4311 add x21, x21, x0, sxtw
4312 adrp x2, :got:g_GlobalDataVersion
4314 add x1, x1, :lo12:.LC18
4316 ldr x2, [x2, #:got_lo12:g_GlobalDataVersion]
4319 ldr x19, [x19, #:got_lo12:gBbtInfo]
4320 add x21, x21, x0, sxtw
4323 bl FtlBbtCalcTotleCnt
4328 add x1, x1, :lo12:.LC19
4330 ldr x25, [x25, #:got_lo12:g_num_free_superblocks]
4332 add x21, x21, x0, sxtw
4333 add x1, x1, :lo12:.LC20
4337 add x21, x21, x0, sxtw
4338 adrp x2, :got:g_totle_mlc_erase_count
4341 add x1, x1, :lo12:.LC21
4342 ldr x2, [x2, #:got_lo12:g_totle_mlc_erase_count]
4345 add x21, x21, x0, sxtw
4346 adrp x2, :got:g_totle_slc_erase_count
4349 add x1, x1, :lo12:.LC22
4350 ldr x2, [x2, #:got_lo12:g_totle_slc_erase_count]
4353 add x21, x21, x0, sxtw
4354 adrp x2, :got:g_totle_avg_erase_count
4357 add x1, x1, :lo12:.LC23
4358 ldr x2, [x2, #:got_lo12:g_totle_avg_erase_count]
4361 add x21, x21, x0, sxtw
4362 adrp x2, :got:g_totle_sys_slc_erase_count
4365 add x1, x1, :lo12:.LC24
4366 ldr x2, [x2, #:got_lo12:g_totle_sys_slc_erase_count]
4369 add x21, x21, x0, sxtw
4370 adrp x2, :got:g_max_erase_count
4373 add x1, x1, :lo12:.LC25
4374 ldr x2, [x2, #:got_lo12:g_max_erase_count]
4377 add x21, x21, x0, sxtw
4378 adrp x2, :got:g_min_erase_count
4381 add x1, x1, :lo12:.LC26
4382 ldr x2, [x2, #:got_lo12:g_min_erase_count]
4385 ldr x20, [x20, #:got_lo12:g_sys_save_data]
4387 add x21, x21, x0, sxtw
4388 add x1, x1, :lo12:.LC27
4392 add x21, x21, x0, sxtw
4396 add x1, x1, :lo12:.LC28
4397 adrp x20, :got:g_gc_superblock
4399 add x21, x21, x0, sxtw
4400 adrp x2, :got:g_MaxLbaSector
4403 add x1, x1, :lo12:.LC29
4404 ldr x2, [x2, #:got_lo12:g_MaxLbaSector]
4407 add x21, x21, x0, sxtw
4408 adrp x2, :got:c_ftl_nand_init_sys_blks_per_plane
4411 add x1, x1, :lo12:.LC30
4412 ldr x2, [x2, #:got_lo12:c_ftl_nand_init_sys_blks_per_plane]
4415 add x21, x21, x0, sxtw
4416 adrp x2, :got:c_ftl_nand_sys_blks_per_plane
4419 add x1, x1, :lo12:.LC31
4420 ldr x2, [x2, #:got_lo12:c_ftl_nand_sys_blks_per_plane]
4423 add x21, x21, x0, sxtw
4424 adrp x2, :got:gSysFreeQueue
4427 add x1, x1, :lo12:.LC32
4428 ldr x2, [x2, #:got_lo12:gSysFreeQueue]
4431 add x21, x21, x0, sxtw
4432 adrp x2, :got:c_ftl_nand_data_blks_per_plane
4435 add x1, x1, :lo12:.LC33
4436 ldr x2, [x2, #:got_lo12:c_ftl_nand_data_blks_per_plane]
4439 add x21, x21, x0, sxtw
4440 adrp x2, :got:c_ftl_nand_data_op_blks_per_plane
4443 add x1, x1, :lo12:.LC34
4444 ldr x2, [x2, #:got_lo12:c_ftl_nand_data_op_blks_per_plane]
4447 add x21, x21, x0, sxtw
4448 adrp x2, :got:c_ftl_nand_max_data_blks
4451 add x1, x1, :lo12:.LC35
4452 ldr x2, [x2, #:got_lo12:c_ftl_nand_max_data_blks]
4455 add x21, x21, x0, sxtw
4456 adrp x2, :got:gSysInfo
4459 add x1, x1, :lo12:.LC36
4460 ldr x2, [x2, #:got_lo12:gSysInfo]
4463 add x21, x21, x0, sxtw
4466 adrp x19, :got:g_active_superblock
4468 add x1, x1, :lo12:.LC37
4470 ldr x19, [x19, #:got_lo12:g_active_superblock]
4472 add x21, x21, x0, sxtw
4473 add x1, x1, :lo12:.LC38
4477 add x21, x21, x0, sxtw
4481 add x1, x1, :lo12:.LC39
4483 add x21, x21, x0, sxtw
4487 add x1, x1, :lo12:.LC40
4489 add x21, x21, x0, sxtw
4493 add x1, x1, :lo12:.LC41
4495 add x21, x21, x0, sxtw
4499 add x1, x1, :lo12:.LC42
4501 ldr x24, [x23, #:got_lo12:p_valid_page_count_table]
4504 adrp x19, :got:g_buffer_superblock
4505 add x21, x21, x0, sxtw
4508 add x1, x1, :lo12:.LC43
4509 ldrh w2, [x2,x3,lsl 1]
4511 ldr x19, [x19, #:got_lo12:g_buffer_superblock]
4513 add x21, x21, x0, sxtw
4514 add x1, x1, :lo12:.LC44
4518 add x21, x21, x0, sxtw
4522 add x1, x1, :lo12:.LC45
4524 add x21, x21, x0, sxtw
4528 add x1, x1, :lo12:.LC46
4530 add x21, x21, x0, sxtw
4534 add x1, x1, :lo12:.LC47
4536 add x21, x21, x0, sxtw
4540 add x1, x1, :lo12:.LC48
4542 add x21, x21, x0, sxtw
4546 adrp x19, :got:g_gc_temp_superblock
4548 add x1, x1, :lo12:.LC49
4549 ldrh w2, [x2,x3,lsl 1]
4551 ldr x19, [x19, #:got_lo12:g_gc_temp_superblock]
4553 add x21, x21, x0, sxtw
4554 add x1, x1, :lo12:.LC50
4558 add x21, x21, x0, sxtw
4562 add x1, x1, :lo12:.LC51
4564 add x21, x21, x0, sxtw
4568 add x1, x1, :lo12:.LC52
4570 add x21, x21, x0, sxtw
4574 add x1, x1, :lo12:.LC53
4576 add x21, x21, x0, sxtw
4580 add x1, x1, :lo12:.LC54
4582 ldr x20, [x20, #:got_lo12:g_gc_superblock]
4584 add x21, x21, x0, sxtw
4585 add x1, x1, :lo12:.LC55
4589 add x21, x21, x0, sxtw
4593 add x1, x1, :lo12:.LC56
4595 add x21, x21, x0, sxtw
4599 add x1, x1, :lo12:.LC57
4601 add x21, x21, x0, sxtw
4605 add x1, x1, :lo12:.LC58
4607 add x21, x21, x0, sxtw
4611 add x1, x1, :lo12:.LC59
4613 add x21, x21, x0, sxtw
4614 adrp x0, :got:g_all_blk_used_slc_mode
4615 ldr x26, [x26, #:got_lo12:g_sys_ext_data]
4617 add x1, x1, :lo12:.LC60
4618 ldr x0, [x0, #:got_lo12:g_all_blk_used_slc_mode]
4622 adrp x0, :got:g_inkDie_check_enable
4623 ldr x0, [x0, #:got_lo12:g_inkDie_check_enable]
4626 orr w2, w2, w3, lsl 8
4629 add x19, x21, x0, sxtw
4633 add x1, x1, :lo12:.LC61
4635 add x19, x19, x0, sxtw
4639 add x1, x1, :lo12:.LC62
4641 add x19, x19, x0, sxtw
4642 adrp x2, :got:g_gc_free_blk_threshold
4645 add x1, x1, :lo12:.LC63
4646 ldr x2, [x2, #:got_lo12:g_gc_free_blk_threshold]
4649 add x19, x19, x0, sxtw
4650 adrp x2, :got:g_gc_merge_free_blk_threshold
4653 add x1, x1, :lo12:.LC64
4654 ldr x2, [x2, #:got_lo12:g_gc_merge_free_blk_threshold]
4657 add x19, x19, x0, sxtw
4658 adrp x2, :got:g_gc_skip_write_count
4661 add x1, x1, :lo12:.LC65
4662 ldr x2, [x2, #:got_lo12:g_gc_skip_write_count]
4665 add x19, x19, x0, sxtw
4666 adrp x2, :got:g_gc_blk_index
4668 add x1, x1, :lo12:.LC66
4670 ldr x2, [x2, #:got_lo12:g_gc_blk_index]
4673 add x19, x19, x0, sxtw
4674 bl GetFreeBlockMinEraseCount
4678 add x1, x1, :lo12:.LC67
4680 add x19, x19, x0, sxtw
4682 bl GetFreeBlockMaxEraseCount
4686 add x1, x1, :lo12:.LC68
4688 add x19, x19, x0, sxtw
4697 add x1, x1, :lo12:.LC69
4700 add x19, x19, x0, sxtw
4705 adrp x28, :got:p_data_block_list_table
4706 bl List_get_gc_head_node
4707 add x24, x24, :lo12:.LC70
4711 adrp x27, :got:p_erase_count_table
4715 adrp x21, :got:p_data_block_list_table
4717 ldr x0, [x23, #:got_lo12:p_valid_page_count_table]
4719 ldr x26, [x28, #:got_lo12:p_data_block_list_table]
4724 ldr x0, [x27, #:got_lo12:p_erase_count_table]
4735 add x19, x19, x0, sxtw
4743 adrp x0, :got:p_free_data_block_list_head
4744 ldr x1, [x21, #:got_lo12:p_data_block_list_table]
4749 ldr x0, [x0, #:got_lo12:p_free_data_block_list_head]
4750 add x23, x23, :lo12:.LC71
4752 adrp x26, :got:p_erase_count_table
4755 mov x0, -6148914691236517206
4762 ldr x25, [x21, #:got_lo12:p_data_block_list_table]
4764 ldr x0, [x26, #:got_lo12:p_erase_count_table]
4776 add x19, x19, x0, sxtw
4784 ldp x19, x20, [sp,16]
4785 ldp x21, x22, [sp,32]
4786 ldp x23, x24, [sp,48]
4787 ldp x25, x26, [sp,64]
4788 ldp x27, x28, [sp,80]
4789 ldp x29, x30, [sp], 128
4791 .size FtlPrintInfo2buf, .-FtlPrintInfo2buf
4793 .global rknand_proc_ftlread
4794 .type rknand_proc_ftlread, %function
4795 rknand_proc_ftlread:
4796 stp x29, x30, [sp, -32]!
4800 add x1, x1, :lo12:.LC72
4801 add x2, x2, :lo12:.LC73
4802 stp x19, x20, [sp,16]
4805 add x19, x20, x0, sxtw
4808 add x0, x19, x0, sxtw
4810 ldp x19, x20, [sp,16]
4811 ldp x29, x30, [sp], 32
4813 .size rknand_proc_ftlread, .-rknand_proc_ftlread
4815 .global GetSwlReplaceBlock
4816 .type GetSwlReplaceBlock, %function
4818 adrp x1, :got:g_totle_avg_erase_count
4819 adrp x2, :got:g_min_erase_count
4820 stp x29, x30, [sp, -96]!
4822 ldr x0, [x1, #:got_lo12:g_totle_avg_erase_count]
4823 stp x23, x24, [sp,48]
4826 stp x19, x20, [sp,16]
4827 stp x21, x22, [sp,32]
4830 ldr x0, [x2, #:got_lo12:g_min_erase_count]
4834 adrp x0, :got:g_totle_mlc_erase_count
4835 adrp x2, :got:p_erase_count_table
4836 ldr x1, [x0, #:got_lo12:g_totle_mlc_erase_count]
4838 adrp x1, :got:c_ftl_nand_data_blks_per_plane
4839 ldr x2, [x2, #:got_lo12:p_erase_count_table]
4840 ldr x1, [x1, #:got_lo12:c_ftl_nand_data_blks_per_plane]
4847 ldr x4, [x0, #:got_lo12:g_totle_mlc_erase_count]
4848 ldrh w6, [x5,x2,lsl 1]
4855 ldr x0, [x0, #:got_lo12:g_totle_mlc_erase_count]
4856 ldr x2, [x24, #:got_lo12:g_totle_avg_erase_count]
4860 adrp x1, :got:g_totle_slc_erase_count
4861 ldr x1, [x1, #:got_lo12:g_totle_slc_erase_count]
4864 adrp x1, :got:c_mlc_erase_count_value
4865 ldr x1, [x1, #:got_lo12:c_mlc_erase_count_value]
4871 adrp x0, :got:g_max_erase_count
4872 ldr x0, [x0, #:got_lo12:g_max_erase_count]
4877 adrp x4, :got:c_ftl_nand_data_blks_per_plane
4879 adrp x5, :got:p_erase_count_table
4882 ldr x1, [x4, #:got_lo12:c_ftl_nand_data_blks_per_plane]
4886 ldr x1, [x5, #:got_lo12:p_erase_count_table]
4895 ldr x0, [x25, #:got_lo12:g_min_erase_count]
4896 ldr x1, [x24, #:got_lo12:g_totle_avg_erase_count]
4902 adrp x2, :got:g_max_erase_count
4904 ldr x2, [x2, #:got_lo12:g_max_erase_count]
4908 adrp x1, :got:g_inkDie_check_enable
4909 ldr x1, [x1, #:got_lo12:g_inkDie_check_enable]
4918 adrp x0, :got:g_num_free_superblocks
4919 ldr x0, [x0, #:got_lo12:g_num_free_superblocks]
4921 add w0, w0, w0, lsl 1
4923 bl GetFreeBlockMaxEraseCount
4925 ldr x0, [x25, #:got_lo12:g_min_erase_count]
4933 adrp x0, :got:p_data_block_list_head
4934 ldr x0, [x0, #:got_lo12:p_data_block_list_head]
4937 adrp x0, :got:p_data_block_list_table
4938 adrp x21, :got:p_erase_count_table
4943 ldr x0, [x0, #:got_lo12:p_data_block_list_table]
4945 ldr x0, [x21, #:got_lo12:p_erase_count_table]
4947 mov x0, -6148914691236517206
4960 ldrh w2, [x5,x3,lsl 1]
4977 ubfiz x23, x19, 1, 16
4982 bl GetFreeBlockMinEraseCount
4983 ldr x2, [x25, #:got_lo12:g_min_erase_count]
4992 adrp x0, :got:g_inkDie_check_enable
4993 ldr x0, [x0, #:got_lo12:g_inkDie_check_enable]
4996 ldr x1, [x24, #:got_lo12:g_totle_avg_erase_count]
5001 adrp x0, :got:c_mlc_erase_count_value
5002 ldr x0, [x0, #:got_lo12:c_mlc_erase_count_value]
5007 adrp x0, :got:g_num_data_superblocks
5008 ldr x0, [x0, #:got_lo12:g_num_data_superblocks]
5012 ldr x21, [x21, #:got_lo12:p_erase_count_table]
5015 add x0, x0, :lo12:.LC74
5021 ldr x1, [x24, #:got_lo12:g_totle_avg_erase_count]
5029 adrp x1, :got:g_max_erase_count
5032 ldr x0, [x1, #:got_lo12:g_max_erase_count]
5038 adrp x0, :got:p_valid_page_count_table
5039 ldr x21, [x21, #:got_lo12:p_erase_count_table]
5040 ldr x3, [x1, #:got_lo12:g_max_erase_count]
5042 ldr x0, [x0, #:got_lo12:p_valid_page_count_table]
5048 add x0, x0, :lo12:.LC75
5052 adrp x0, :got:g_in_swl_replace
5054 ldr x0, [x0, #:got_lo12:g_in_swl_replace]
5058 ldp x19, x20, [sp,16]
5059 ldp x21, x22, [sp,32]
5060 ldp x23, x24, [sp,48]
5062 ldp x29, x30, [sp], 96
5064 .size GetSwlReplaceBlock, .-GetSwlReplaceBlock
5066 .global free_data_superblock
5067 .type free_data_superblock, %function
5068 free_data_superblock:
5069 stp x29, x30, [sp, -16]!
5075 adrp x1, :got:p_valid_page_count_table
5077 ldr x1, [x1, #:got_lo12:p_valid_page_count_table]
5083 ldp x29, x30, [sp], 16
5085 .size free_data_superblock, .-free_data_superblock
5087 .global FtlGcBufInit
5088 .type FtlGcBufInit, %function
5090 adrp x0, :got:g_gc_num_req
5092 adrp x6, :got:c_ftl_nand_planes_num
5094 adrp x8, :got:gp_gc_page_buf_info
5096 ldr x0, [x0, #:got_lo12:g_gc_num_req]
5097 adrp x10, :got:c_ftl_nand_byte_pre_page
5099 adrp x11, :got:p_gc_data_buf
5100 adrp x12, :got:c_ftl_nand_byte_pre_oob
5101 adrp x13, :got:p_gc_spare_buf
5103 adrp x14, :got:req_gc
5106 ldr x0, [x6, #:got_lo12:c_ftl_nand_planes_num]
5110 ldr x4, [x8, #:got_lo12:gp_gc_page_buf_info]
5115 ldr x0, [x10, #:got_lo12:c_ftl_nand_byte_pre_page]
5116 ldr x16, [x11, #:got_lo12:p_gc_data_buf]
5121 add x0, x16, x0, sxtw 2
5123 ldr x0, [x12, #:got_lo12:c_ftl_nand_byte_pre_oob]
5125 ldr x16, [x13, #:got_lo12:p_gc_spare_buf]
5131 add x0, x16, x0, sxtw 2
5134 ldr x16, [x14, #:got_lo12:req_gc]
5145 adrp x6, :got:c_gc_page_buf_num
5147 adrp x8, :got:gp_gc_page_buf_info
5148 adrp x9, :got:c_ftl_nand_byte_pre_page
5150 adrp x10, :got:p_gc_data_buf
5151 adrp x11, :got:c_ftl_nand_byte_pre_oob
5152 adrp x12, :got:p_gc_spare_buf
5154 ldr x1, [x6, #:got_lo12:c_gc_page_buf_num]
5158 ldr x4, [x8, #:got_lo12:gp_gc_page_buf_info]
5163 ldr x1, [x9, #:got_lo12:c_ftl_nand_byte_pre_page]
5164 ldr x13, [x10, #:got_lo12:p_gc_data_buf]
5169 add x1, x13, x1, sxtw 2
5171 ldr x1, [x11, #:got_lo12:c_ftl_nand_byte_pre_oob]
5175 ldr x4, [x12, #:got_lo12:p_gc_spare_buf]
5181 add x1, x4, x1, sxtw 2
5186 .size FtlGcBufInit, .-FtlGcBufInit
5188 .global FtlGcBufFree
5189 .type FtlGcBufFree, %function
5191 adrp x2, :got:c_gc_page_buf_num
5195 ldr x2, [x2, #:got_lo12:c_gc_page_buf_num]
5197 adrp x2, :got:gp_gc_page_buf_info
5198 ldr x2, [x2, #:got_lo12:gp_gc_page_buf_info]
5227 .size FtlGcBufFree, .-FtlGcBufFree
5229 .global FtlGcBufAlloc
5230 .type FtlGcBufAlloc, %function
5232 adrp x2, :got:c_gc_page_buf_num
5236 ldr x2, [x2, #:got_lo12:c_gc_page_buf_num]
5238 adrp x2, :got:gp_gc_page_buf_info
5239 ldr x2, [x2, #:got_lo12:gp_gc_page_buf_info]
5271 .size FtlGcBufAlloc, .-FtlGcBufAlloc
5273 .global IsBlkInGcList
5274 .type IsBlkInGcList, %function
5276 adrp x1, :got:g_gc_blk_num
5278 ldr x1, [x1, #:got_lo12:g_gc_blk_num]
5280 adrp x1, :got:p_gc_blk_tbl
5281 ldr x1, [x1, #:got_lo12:p_gc_blk_tbl]
5288 add x4, x3, x1, lsl 1
5298 .size IsBlkInGcList, .-IsBlkInGcList
5300 .global FtlGcUpdatePage
5301 .type FtlGcUpdatePage, %function
5303 stp x29, x30, [sp, -48]!
5310 bl P2V_block_in_plane
5311 adrp x3, :got:g_gc_blk_num
5316 ldr x4, [x3, #:got_lo12:g_gc_blk_num]
5318 adrp x4, :got:p_gc_blk_tbl
5319 ldr x4, [x4, #:got_lo12:p_gc_blk_tbl]
5326 add x9, x6, x5, lsl 1
5335 ldr x3, [x3, #:got_lo12:g_gc_blk_num]
5340 adrp x3, :got:g_gc_page_offset
5341 adrp x5, :got:p_gc_page_info
5343 ldr x3, [x3, #:got_lo12:g_gc_page_offset]
5344 ldr x5, [x5, #:got_lo12:p_gc_page_info]
5358 ldp x29, x30, [sp], 48
5360 .size FtlGcUpdatePage, .-FtlGcUpdatePage
5362 .global FtlGcRefreshBlock
5363 .type FtlGcRefreshBlock, %function
5365 stp x29, x30, [sp, -32]!
5371 add x0, x0, :lo12:.LC76
5373 adrp x2, :got:g_gc_next_blk
5375 ldr x2, [x2, #:got_lo12:g_gc_next_blk]
5379 adrp x2, :got:g_gc_next_blk_1
5380 ldr x2, [x2, #:got_lo12:g_gc_next_blk_1]
5389 ldp x29, x30, [sp], 32
5391 .size FtlGcRefreshBlock, .-FtlGcRefreshBlock
5393 .global FtlGcMarkBadPhyBlk
5394 .type FtlGcMarkBadPhyBlk, %function
5396 stp x29, x30, [sp, -48]!
5398 stp x19, x20, [sp,16]
5400 adrp x19, :got:g_gc_bad_block_temp_num
5402 stp x21, x22, [sp,32]
5403 bl P2V_block_in_plane
5405 ldr x1, [x19, #:got_lo12:g_gc_bad_block_temp_num]
5408 add x0, x0, :lo12:.LC77
5412 bl FtlGcRefreshBlock
5413 adrp x0, :got:g_inkDie_check_enable
5414 ldr x0, [x0, #:got_lo12:g_inkDie_check_enable]
5417 adrp x1, :got:p_erase_count_table
5418 ubfiz x0, x21, 1, 16
5419 ldr x1, [x1, #:got_lo12:p_erase_count_table]
5427 ldr x0, [x19, #:got_lo12:g_gc_bad_block_temp_num]
5428 adrp x3, :got:g_gc_bad_block_temp_tbl
5435 ldr x2, [x3, #:got_lo12:g_gc_bad_block_temp_tbl]
5436 add x2, x2, x0, lsl 1
5444 ldr x19, [x19, #:got_lo12:g_gc_bad_block_temp_num]
5447 adrp x0, :got:g_gc_bad_block_temp_tbl
5448 ldr x0, [x0, #:got_lo12:g_gc_bad_block_temp_tbl]
5449 strh w20, [x0,w1,sxtw 1]
5452 ldp x19, x20, [sp,16]
5453 ldp x21, x22, [sp,32]
5454 ldp x29, x30, [sp], 48
5456 .size FtlGcMarkBadPhyBlk, .-FtlGcMarkBadPhyBlk
5458 .global FtlGcReFreshBadBlk
5459 .type FtlGcReFreshBadBlk, %function
5461 adrp x0, :got:g_gc_bad_block_temp_num
5462 stp x29, x30, [sp, -32]!
5464 ldr x0, [x0, #:got_lo12:g_gc_bad_block_temp_num]
5468 adrp x0, :got:g_gc_next_blk
5469 ldr x0, [x0, #:got_lo12:g_gc_next_blk]
5474 adrp x19, :got:g_gc_bad_block_gc_index
5475 ldr x0, [x19, #:got_lo12:g_gc_bad_block_gc_index]
5481 ldr x19, [x19, #:got_lo12:g_gc_bad_block_gc_index]
5482 adrp x0, :got:g_gc_bad_block_temp_tbl
5484 ldr x0, [x0, #:got_lo12:g_gc_bad_block_temp_tbl]
5485 ldrh w0, [x0,w1,sxtw 1]
5486 bl P2V_block_in_plane
5487 bl FtlGcRefreshBlock
5494 ldp x29, x30, [sp], 32
5496 .size FtlGcReFreshBadBlk, .-FtlGcReFreshBadBlk
5499 .type ftl_malloc, %function
5501 stp x29, x30, [sp, -16]!
5505 movk w1, 0x240, lsl 16
5507 ldp x29, x30, [sp], 16
5509 .size ftl_malloc, .-ftl_malloc
5512 .type NandcInit, %function
5514 adrp x1, :got:gNandChipMap
5516 stp x29, x30, [sp, -32]!
5518 ldr x1, [x1, #:got_lo12:gNandChipMap]
5520 adrp x19, :got:gpNandc
5529 adrp x2, :got:gBootDdrMode
5532 ldr x19, [x19, #:got_lo12:gpNandc]
5534 ldr x2, [x2, #:got_lo12:gBootDdrMode]
5538 adrp x2, :got:gNandcVer
5543 ldr x2, [x2, #:got_lo12:gNandcVer]
5554 movk w1, 0x18, lsl 16
5558 adrp x1, :got:gMasterTempBuf
5559 ldr x1, [x1, #:got_lo12:gMasterTempBuf]
5561 adrp x1, :got:gMasterInfo
5562 ldr x1, [x1, #:got_lo12:gMasterInfo]
5566 adrp x0, :got:gNandcDumpWriteEn
5568 ldr x0, [x0, #:got_lo12:gNandcDumpWriteEn]
5571 ldp x29, x30, [sp], 32
5573 .size NandcInit, .-NandcInit
5576 .type ftl_free, %function
5578 stp x29, x30, [sp, -16]!
5581 ldp x29, x30, [sp], 16
5583 .size ftl_free, .-ftl_free
5586 .type ftl_memset, %function
5588 stp x29, x30, [sp, -16]!
5592 ldp x29, x30, [sp], 16
5594 .size ftl_memset, .-ftl_memset
5596 .global BuildFlashLsbPageTable
5597 .type BuildFlashLsbPageTable, %function
5598 BuildFlashLsbPageTable:
5599 stp x29, x30, [sp, -32]!
5601 stp x19, x20, [sp,16]
5605 adrp x2, :got:slcPageToMlcPageTbl
5607 ldr x1, [x2, #:got_lo12:slcPageToMlcPageTbl]
5608 strh w0, [x1,x0,lsl 1]
5613 adrp x20, :got:mlcPageToSlcPageTbl
5617 ldr x0, [x20, #:got_lo12:mlcPageToSlcPageTbl]
5620 adrp x2, :got:slcPageToMlcPageTbl
5628 adrp x3, :got:slcPageToMlcPageTbl
5641 ldr x1, [x3, #:got_lo12:slcPageToMlcPageTbl]
5642 strh w2, [x1,x0,lsl 1]
5652 adrp x4, :got:slcPageToMlcPageTbl
5654 ldr x3, [x4, #:got_lo12:slcPageToMlcPageTbl]
5659 strh w1, [x3,x0,lsl 1]
5671 adrp x4, :got:slcPageToMlcPageTbl
5684 ldr x1, [x4, #:got_lo12:slcPageToMlcPageTbl]
5685 strh w2, [x1,x0,lsl 1]
5693 adrp x2, :got:slcPageToMlcPageTbl
5697 ldr x2, [x2, #:got_lo12:slcPageToMlcPageTbl]
5731 adrp x4, :got:slcPageToMlcPageTbl
5737 add w0, w3, w3, lsl 1
5745 ldr x1, [x4, #:got_lo12:slcPageToMlcPageTbl]
5746 strh w0, [x1,x2,lsl 1]
5754 ldr x1, [x2, #:got_lo12:slcPageToMlcPageTbl]
5755 ldr x3, [x20, #:got_lo12:mlcPageToSlcPageTbl]
5756 ldrh w1, [x1,x0,lsl 1]
5758 strh w1, [x3,w1,sxtw 1]
5761 ldp x19, x20, [sp,16]
5762 ldp x29, x30, [sp], 32
5764 .size BuildFlashLsbPageTable, .-BuildFlashLsbPageTable
5766 .global FlashDieInfoInit
5767 .type FlashDieInfoInit, %function
5769 stp x29, x30, [sp, -96]!
5771 stp x19, x20, [sp,16]
5772 adrp x19, :got:gNandMaxDie
5773 stp x21, x22, [sp,32]
5774 stp x23, x24, [sp,48]
5775 ldr x0, [x19, #:got_lo12:gNandMaxDie]
5776 adrp x23, :got:gNandMaxChip
5777 stp x25, x26, [sp,64]
5778 stp x27, x28, [sp,80]
5780 adrp x22, :got:gBlockPageAlignSize
5781 ldr x0, [x23, #:got_lo12:gNandMaxChip]
5783 adrp x0, :got:gNandParaInfo
5784 ldr x0, [x0, #:got_lo12:gNandParaInfo]
5788 ldr x0, [x22, #:got_lo12:gBlockPageAlignSize]
5794 ldr x1, [x22, #:got_lo12:gBlockPageAlignSize]
5798 ldr x0, [x22, #:got_lo12:gBlockPageAlignSize]
5803 adrp x20, :got:DieCsIndex
5806 adrp x21, :got:DieAddrs
5808 adrp x27, :got:gpNandParaInfo
5809 ldr x0, [x20, #:got_lo12:DieCsIndex]
5810 adrp x28, :got:IDByte
5812 ldr x0, [x21, #:got_lo12:DieAddrs]
5816 adrp x0, :got:gDieOp
5819 ldr x0, [x0, #:got_lo12:gDieOp]
5822 ldr x0, [x27, #:got_lo12:gpNandParaInfo]
5823 adrp x24, :got:gpNandParaInfo
5824 ldr x1, [x28, #:got_lo12:IDByte]
5825 adrp x26, :got:IDByte
5827 add x1, x1, x25, lsl 3
5832 ldr x2, [x19, #:got_lo12:gNandMaxDie]
5833 ldr x3, [x21, #:got_lo12:DieAddrs]
5835 str w0, [x3,w1,sxtw 2]
5838 ldr x0, [x20, #:got_lo12:DieCsIndex]
5839 strb w25, [x0,w1,sxtw]
5844 ldr x0, [x19, #:got_lo12:gNandMaxDie]
5845 ldr x23, [x23, #:got_lo12:gNandMaxChip]
5848 ldr x0, [x24, #:got_lo12:gpNandParaInfo]
5854 ldr x24, [x24, #:got_lo12:gpNandParaInfo]
5855 adrp x1, :got:gTotleBlock
5856 ldr x19, [x19, #:got_lo12:gNandMaxDie]
5859 ldr x1, [x1, #:got_lo12:gTotleBlock]
5865 ldp x19, x20, [sp,16]
5866 ldp x21, x22, [sp,32]
5867 ldp x23, x24, [sp,48]
5868 ldp x25, x26, [sp,64]
5869 ldp x27, x28, [sp,80]
5870 ldp x29, x30, [sp], 96
5875 ldr x25, [x24, #:got_lo12:gpNandParaInfo]
5876 ldr x1, [x26, #:got_lo12:IDByte]
5878 add x1, x1, x23, lsl 3
5883 ldr x0, [x19, #:got_lo12:gNandMaxDie]
5885 ldr x1, [x22, #:got_lo12:gBlockPageAlignSize]
5894 ldr x1, [x21, #:got_lo12:DieAddrs]
5895 str w0, [x1,w4,sxtw 2]
5899 str w0, [x1,w4,sxtw 2]
5901 ldr x0, [x19, #:got_lo12:gNandMaxDie]
5904 ldr x0, [x20, #:got_lo12:DieCsIndex]
5911 .size FlashDieInfoInit, .-FlashDieInfoInit
5913 .global ReadFlashInfo
5914 .type ReadFlashInfo, %function
5916 stp x29, x30, [sp, -32]!
5923 adrp x2, :got:gpNandParaInfo
5924 adrp x1, :got:gBlockPageAlignSize
5925 adrp x4, :got:DieCsIndex
5927 ldr x2, [x2, #:got_lo12:gpNandParaInfo]
5928 ldr x1, [x1, #:got_lo12:gBlockPageAlignSize]
5932 adrp x1, :got:gNandFlashEccBits
5936 ldr x1, [x1, #:got_lo12:gNandFlashEccBits]
5955 adrp x0, :got:gNandMaxDie
5957 ldr x0, [x0, #:got_lo12:gNandMaxDie]
5963 ldr x1, [x4, #:got_lo12:DieCsIndex]
5973 ldp x29, x30, [sp], 32
5975 .size ReadFlashInfo, .-ReadFlashInfo
5978 .type FtlMemInit, %function
5980 adrp x0, :got:g_SlcPartLbaEndSector
5982 stp x29, x30, [sp, -224]!
5984 ldr x0, [x0, #:got_lo12:g_SlcPartLbaEndSector]
5985 stp x19, x20, [sp,16]
5986 stp x23, x24, [sp,48]
5987 stp x21, x22, [sp,32]
5988 stp x25, x26, [sp,64]
5989 stp x27, x28, [sp,80]
5991 adrp x0, :got:g_all_blk_used_slc_mode
5992 adrp x20, :got:c_ftl_nand_planes_num
5993 ldr x0, [x0, #:got_lo12:g_all_blk_used_slc_mode]
5995 adrp x0, :got:g_GlobalSysVersion
5996 ldr x0, [x0, #:got_lo12:g_GlobalSysVersion]
5998 adrp x0, :got:g_GlobalDataVersion
5999 ldr x0, [x0, #:got_lo12:g_GlobalDataVersion]
6001 adrp x0, :got:g_totle_gc_page_count
6002 ldr x0, [x0, #:got_lo12:g_totle_gc_page_count]
6004 adrp x0, :got:g_totle_write_page_count
6005 ldr x0, [x0, #:got_lo12:g_totle_write_page_count]
6007 adrp x0, :got:g_totle_discard_page_count
6008 ldr x0, [x0, #:got_lo12:g_totle_discard_page_count]
6010 adrp x0, :got:g_totle_cache_write_count
6011 ldr x0, [x0, #:got_lo12:g_totle_cache_write_count]
6013 adrp x0, :got:g_totle_l2p_write_count
6014 ldr x0, [x0, #:got_lo12:g_totle_l2p_write_count]
6016 adrp x0, :got:g_totle_read_page_count
6017 ldr x0, [x0, #:got_lo12:g_totle_read_page_count]
6019 adrp x0, :got:g_totle_mlc_erase_count
6020 ldr x0, [x0, #:got_lo12:g_totle_mlc_erase_count]
6022 adrp x0, :got:g_totle_slc_erase_count
6023 ldr x0, [x0, #:got_lo12:g_totle_slc_erase_count]
6025 adrp x0, :got:g_totle_sys_slc_erase_count
6026 ldr x0, [x0, #:got_lo12:g_totle_sys_slc_erase_count]
6028 adrp x0, :got:g_max_erase_count
6029 ldr x0, [x0, #:got_lo12:g_max_erase_count]
6031 adrp x0, :got:g_min_erase_count
6032 ldr x0, [x0, #:got_lo12:g_min_erase_count]
6034 adrp x0, :got:g_in_gc_progress
6035 ldr x0, [x0, #:got_lo12:g_in_gc_progress]
6037 adrp x0, :got:g_in_swl_replace
6038 ldr x0, [x0, #:got_lo12:g_in_swl_replace]
6040 adrp x0, :got:g_gc_head_data_block
6041 ldr x0, [x0, #:got_lo12:g_gc_head_data_block]
6043 adrp x0, :got:g_gc_head_data_block_count
6045 ldr x0, [x0, #:got_lo12:g_gc_head_data_block_count]
6047 adrp x0, :got:g_gc_skip_write_count
6048 ldr x0, [x0, #:got_lo12:g_gc_skip_write_count]
6050 adrp x0, :got:g_cur_erase_blk
6051 ldr x0, [x0, #:got_lo12:g_cur_erase_blk]
6053 adrp x0, :got:g_gc_next_blk
6054 ldr x0, [x0, #:got_lo12:g_gc_next_blk]
6056 adrp x0, :got:g_gc_next_blk_1
6057 ldr x0, [x0, #:got_lo12:g_gc_next_blk_1]
6059 adrp x0, :got:g_gc_free_blk_threshold
6061 ldr x0, [x0, #:got_lo12:g_gc_free_blk_threshold]
6063 adrp x0, :got:g_gc_merge_free_blk_threshold
6065 ldr x0, [x0, #:got_lo12:g_gc_merge_free_blk_threshold]
6067 adrp x0, :got:g_gc_blk_index
6068 adrp x1, :got:c_wr_page_buf_num
6070 ldr x0, [x0, #:got_lo12:g_gc_blk_index]
6072 adrp x0, :got:g_gc_bad_block_temp_num
6073 ldr x0, [x0, #:got_lo12:g_gc_bad_block_temp_num]
6075 adrp x0, :got:g_gc_bad_block_gc_index
6076 ldr x0, [x0, #:got_lo12:g_gc_bad_block_gc_index]
6078 adrp x0, :got:c_ftl_nand_sec_pre_page
6079 ldr x3, [x1, #:got_lo12:c_wr_page_buf_num]
6080 ldr x0, [x0, #:got_lo12:c_ftl_nand_sec_pre_page]
6085 ldr x0, [x20, #:got_lo12:c_ftl_nand_planes_num]
6092 adrp x0, :got:g_wr_page_num
6093 adrp x19, :got:c_ftl_nand_page_pre_super_blk
6095 adrp x28, :got:req_gc_dst
6096 adrp x27, :got:p_sys_data_buf
6097 adrp x26, :got:p_sys_data_buf_1
6098 ldr x0, [x0, #:got_lo12:g_wr_page_num]
6099 adrp x25, :got:p_vendor_data_buf
6100 adrp x24, :got:p_gc_data_buf
6102 ldr x19, [x19, #:got_lo12:c_ftl_nand_page_pre_super_blk]
6106 adrp x8, :got:p_gc_blk_tbl
6108 ldr x1, [x8, #:got_lo12:p_gc_blk_tbl]
6114 adrp x7, :got:p_gc_page_info
6116 ldr x1, [x7, #:got_lo12:p_gc_page_info]
6118 ldr x20, [x20, #:got_lo12:c_ftl_nand_planes_num]
6124 adrp x6, :got:req_read
6126 ldr x1, [x6, #:got_lo12:req_read]
6130 ldr x1, [x28, #:got_lo12:req_gc_dst]
6134 adrp x5, :got:req_prgm
6136 ldr x1, [x5, #:got_lo12:req_prgm]
6140 adrp x4, :got:req_erase
6142 ldr x1, [x4, #:got_lo12:req_erase]
6146 adrp x3, :got:req_gc
6148 ldr x1, [x3, #:got_lo12:req_gc]
6150 ldr x22, [x23, #:got_lo12:c_wr_page_buf_num]
6154 adrp x2, :got:req_wr_io
6155 adrp x12, :got:c_ftl_nand_byte_pre_page
6156 adrp x9, :got:c_gc_page_buf_num
6157 ldr x2, [x2, #:got_lo12:req_wr_io]
6160 ldr x12, [x12, #:got_lo12:c_ftl_nand_byte_pre_page]
6161 ldr x23, [x9, #:got_lo12:c_gc_page_buf_num]
6169 ldr x2, [x27, #:got_lo12:p_sys_data_buf]
6173 ldr x2, [x26, #:got_lo12:p_sys_data_buf_1]
6177 ldr x2, [x25, #:got_lo12:p_vendor_data_buf]
6182 ldr x2, [x24, #:got_lo12:p_gc_data_buf]
6187 adrp x2, :got:p_wr_io_data_buf
6188 ldr x2, [x2, #:got_lo12:p_wr_io_data_buf]
6192 adrp x1, :got:p_io_data_buf_0
6193 ldr x2, [x1, #:got_lo12:p_io_data_buf_0]
6197 adrp x1, :got:p_io_data_buf_1
6198 ldr x2, [x1, #:got_lo12:p_io_data_buf_1]
6205 adrp x1, :got:gp_gc_page_buf_info
6206 ldr x2, [x1, #:got_lo12:gp_gc_page_buf_info]
6208 adrp x2, :got:c_ftl_nand_byte_pre_oob
6209 ldr x21, [x2, #:got_lo12:c_ftl_nand_byte_pre_oob]
6214 adrp x1, :got:p_sys_spare_buf
6215 ldr x10, [x1, #:got_lo12:p_sys_spare_buf]
6219 adrp x1, :got:p_io_spare_buf
6220 ldr x10, [x1, #:got_lo12:p_io_spare_buf]
6224 adrp x23, :got:p_io_data_buf_0
6227 adrp x15, :got:p_gc_spare_buf
6230 adrp x21, :got:gp_gc_page_buf_info
6231 ldr x9, [x15, #:got_lo12:p_gc_spare_buf]
6234 adrp x22, :got:p_io_data_buf_1
6237 adrp x1, :got:p_wr_io_spare_buf
6238 adrp x13, :got:c_ftl_nand_blk_pre_plane
6239 ldr x1, [x1, #:got_lo12:p_wr_io_spare_buf]
6241 adrp x1, :got:g_ect_tbl_info_size
6242 ldr x19, [x13, #:got_lo12:c_ftl_nand_blk_pre_plane]
6243 ldr x20, [x1, #:got_lo12:g_ect_tbl_info_size]
6249 adrp x2, :got:p_swl_mul_table
6250 ldr x2, [x2, #:got_lo12:p_swl_mul_table]
6258 adrp x1, :got:gp_ect_tbl_info
6259 adrp x14, :got:p_erase_count_table
6261 ldr x1, [x1, #:got_lo12:gp_ect_tbl_info]
6264 ldr x1, [x14, #:got_lo12:p_erase_count_table]
6270 adrp x2, :got:p_valid_page_count_check_table
6271 ldr x2, [x2, #:got_lo12:p_valid_page_count_check_table]
6275 adrp x9, :got:p_valid_page_count_table
6276 adrp x16, :got:c_ftl_nand_max_map_blks
6278 ldr x1, [x9, #:got_lo12:p_valid_page_count_table]
6280 ldr x16, [x16, #:got_lo12:c_ftl_nand_max_map_blks]
6286 adrp x11, :got:p_map_block_table
6288 ldr x2, [x11, #:got_lo12:p_map_block_table]
6292 adrp x10, :got:p_map_block_valid_page_count
6294 ldr x1, [x10, #:got_lo12:p_map_block_valid_page_count]
6296 adrp x1, :got:c_ftl_nand_max_vendor_blks
6297 ldr x20, [x1, #:got_lo12:c_ftl_nand_max_vendor_blks]
6301 adrp x2, :got:p_vendor_block_table
6302 ldr x2, [x2, #:got_lo12:p_vendor_block_table]
6307 adrp x2, :got:p_vendor_block_valid_page_count
6308 ldr x2, [x2, #:got_lo12:p_vendor_block_valid_page_count]
6311 adrp x20, :got:p_sys_spare_buf
6314 adrp x1, :got:p_vendor_block_ver_table
6315 ldr x1, [x1, #:got_lo12:p_vendor_block_ver_table]
6317 adrp x1, :got:c_ftl_nand_vendor_region_num
6318 ldr x1, [x1, #:got_lo12:c_ftl_nand_vendor_region_num]
6323 adrp x2, :got:p_vendor_region_ppn_table
6325 ldr x2, [x2, #:got_lo12:p_vendor_region_ppn_table]
6331 adrp x0, :got:c_ftl_nand_map_region_num
6332 ldr x0, [x0, #:got_lo12:c_ftl_nand_map_region_num]
6336 adrp x2, :got:p_map_region_ppn_table
6339 ldr x1, [x2, #:got_lo12:p_map_region_ppn_table]
6344 adrp x1, :got:p_map_block_ver_table
6346 ldr x16, [x1, #:got_lo12:p_map_block_ver_table]
6348 adrp x16, :got:c_ftl_nand_l2pmap_ram_region_num
6349 ldr x16, [x16, #:got_lo12:c_ftl_nand_l2pmap_ram_region_num]
6354 adrp x17, :got:p_l2p_ram_map
6357 ldr x17, [x17, #:got_lo12:p_l2p_ram_map]
6363 adrp x12, :got:p_l2p_map_buf
6364 ldr x12, [x12, #:got_lo12:p_l2p_map_buf]
6368 adrp x19, :got:p_io_spare_buf
6371 adrp x12, :got:p_data_block_list_table
6372 adrp x16, :got:c_ftl_nand_bbm_buf_size
6373 adrp x17, :got:c_ftl_nand_die_num
6374 ldr x12, [x12, #:got_lo12:p_data_block_list_table]
6376 adrp x0, :got:c_ftl_nand_blks_per_die
6377 ldr x16, [x16, #:got_lo12:c_ftl_nand_bbm_buf_size]
6378 ldr x0, [x0, #:got_lo12:c_ftl_nand_blks_per_die]
6384 ldr x17, [x17, #:got_lo12:c_ftl_nand_die_num]
6390 adrp x13, :got:gBbtInfo
6394 ldr x12, [x13, #:got_lo12:gBbtInfo]
6419 ldr x14, [x15, #:got_lo12:gBbtInfo]
6422 add x14, x14, x16, uxtw 2
6429 ldr x12, [x13, #:got_lo12:gBbtInfo]
6430 add x12, x12, x0, uxtw 3
6435 ldr x11, [x11, #:got_lo12:p_map_block_table]
6441 add x0, x0, :lo12:.LC78
6442 add x1, x1, :lo12:.LANCHOR1
6447 ldr x10, [x10, #:got_lo12:p_map_block_valid_page_count]
6450 ldr x2, [x2, #:got_lo12:p_map_region_ppn_table]
6453 ldr x1, [x1, #:got_lo12:p_map_block_ver_table]
6456 adrp x0, :got:p_l2p_ram_map
6457 ldr x0, [x0, #:got_lo12:p_l2p_ram_map]
6460 adrp x0, :got:p_l2p_map_buf
6461 ldr x0, [x0, #:got_lo12:p_l2p_map_buf]
6464 adrp x0, :got:p_data_block_list_table
6465 ldr x0, [x0, #:got_lo12:p_data_block_list_table]
6468 adrp x0, :got:gBbtInfo
6469 ldr x0, [x0, #:got_lo12:gBbtInfo]
6472 ldr x9, [x9, #:got_lo12:p_valid_page_count_table]
6475 ldr x8, [x8, #:got_lo12:p_gc_blk_tbl]
6478 ldr x7, [x7, #:got_lo12:p_gc_page_info]
6481 ldr x6, [x6, #:got_lo12:req_read]
6484 ldr x5, [x5, #:got_lo12:req_prgm]
6487 ldr x4, [x4, #:got_lo12:req_erase]
6490 ldr x3, [x3, #:got_lo12:req_gc]
6493 ldr x28, [x28, #:got_lo12:req_gc_dst]
6496 ldr x27, [x27, #:got_lo12:p_sys_data_buf]
6499 ldr x26, [x26, #:got_lo12:p_sys_data_buf_1]
6502 ldr x25, [x25, #:got_lo12:p_vendor_data_buf]
6505 ldr x24, [x24, #:got_lo12:p_gc_data_buf]
6508 ldr x23, [x23, #:got_lo12:p_io_data_buf_0]
6511 ldr x22, [x22, #:got_lo12:p_io_data_buf_1]
6514 ldr x21, [x21, #:got_lo12:gp_gc_page_buf_info]
6517 ldr x20, [x20, #:got_lo12:p_sys_spare_buf]
6520 ldr x19, [x19, #:got_lo12:p_io_spare_buf]
6524 ldr x15, [x0, #:got_lo12:p_gc_spare_buf]
6528 ldr x14, [x0, #:got_lo12:p_erase_count_table]
6531 adrp x0, :got:p_swl_mul_table
6532 ldr x0, [x0, #:got_lo12:p_swl_mul_table]
6535 adrp x0, :got:p_vendor_block_table
6536 ldr x0, [x0, #:got_lo12:p_vendor_block_table]
6539 adrp x0, :got:p_vendor_block_valid_page_count
6540 ldr x0, [x0, #:got_lo12:p_vendor_block_valid_page_count]
6543 adrp x0, :got:p_vendor_block_ver_table
6544 ldr x0, [x0, #:got_lo12:p_vendor_block_ver_table]
6547 adrp x0, :got:p_vendor_region_ppn_table
6548 ldr x0, [x0, #:got_lo12:p_vendor_region_ppn_table]
6553 ldp x19, x20, [sp,16]
6554 ldp x21, x22, [sp,32]
6555 ldp x23, x24, [sp,48]
6556 ldp x25, x26, [sp,64]
6557 ldp x27, x28, [sp,80]
6558 ldp x29, x30, [sp], 224
6560 .size FtlMemInit, .-FtlMemInit
6562 .global FtlBbt2Bitmap
6563 .type FtlBbt2Bitmap, %function
6565 stp x29, x30, [sp, -32]!
6567 stp x19, x20, [sp,16]
6569 adrp x1, :got:c_ftl_nand_bbm_buf_size
6572 ldr x1, [x1, #:got_lo12:c_ftl_nand_bbm_buf_size]
6594 ldp x19, x20, [sp,16]
6595 ldp x29, x30, [sp], 32
6597 .size FtlBbt2Bitmap, .-FtlBbt2Bitmap
6599 .global FtlBbtMemInit
6600 .type FtlBbtMemInit, %function
6602 adrp x0, :got:gBbtInfo
6604 stp x29, x30, [sp, -16]!
6607 ldr x0, [x0, #:got_lo12:gBbtInfo]
6613 ldp x29, x30, [sp], 16
6615 .size FtlBbtMemInit, .-FtlBbtMemInit
6617 .global FtlFreeSysBlkQueueInit
6618 .type FtlFreeSysBlkQueueInit, %function
6619 FtlFreeSysBlkQueueInit:
6620 adrp x1, :got:gSysFreeQueue
6622 stp x29, x30, [sp, -16]!
6624 ldr x1, [x1, #:got_lo12:gSysFreeQueue]
6633 ldp x29, x30, [sp], 16
6635 .size FtlFreeSysBlkQueueInit, .-FtlFreeSysBlkQueueInit
6637 .global ftl_free_no_use_map_blk
6638 .type ftl_free_no_use_map_blk, %function
6639 ftl_free_no_use_map_blk:
6640 stp x29, x30, [sp, -96]!
6643 stp x19, x20, [sp,16]
6644 stp x21, x22, [sp,32]
6645 stp x23, x24, [sp,48]
6646 stp x25, x26, [sp,64]
6688 adrp x27, :got:c_ftl_nand_page_pre_slc_blk
6697 ldr x0, [x27, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
6702 strh w0, [x21,x22,lsl 1]
6715 bl FtlFreeSysBlkQueueIn
6727 ldp x19, x20, [sp,16]
6728 ldp x21, x22, [sp,32]
6729 ldp x23, x24, [sp,48]
6730 ldp x25, x26, [sp,64]
6731 ldp x29, x30, [sp], 96
6733 .size ftl_free_no_use_map_blk, .-ftl_free_no_use_map_blk
6735 .global FtlL2PDataInit
6736 .type FtlL2PDataInit, %function
6738 stp x29, x30, [sp, -64]!
6740 stp x21, x22, [sp,32]
6741 adrp x22, :got:c_ftl_nand_max_map_blks
6743 adrp x23, :got:p_map_block_valid_page_count
6744 adrp x21, :got:c_ftl_nand_byte_pre_page
6745 stp x19, x20, [sp,16]
6746 ldr x1, [x22, #:got_lo12:c_ftl_nand_max_map_blks]
6747 adrp x19, :got:c_ftl_nand_l2pmap_ram_region_num
6748 ldr x0, [x23, #:got_lo12:p_map_block_valid_page_count]
6749 adrp x20, :got:p_l2p_map_buf
6755 ldr x1, [x21, #:got_lo12:c_ftl_nand_byte_pre_page]
6756 ldr x0, [x20, #:got_lo12:p_l2p_map_buf]
6758 ldr x1, [x19, #:got_lo12:c_ftl_nand_l2pmap_ram_region_num]
6766 adrp x5, :got:p_l2p_ram_map
6769 ldr x0, [x19, #:got_lo12:c_ftl_nand_l2pmap_ram_region_num]
6773 ldr x2, [x5, #:got_lo12:p_l2p_ram_map]
6781 ldr x4, [x20, #:got_lo12:p_l2p_map_buf]
6783 ldr x0, [x21, #:got_lo12:c_ftl_nand_byte_pre_page]
6795 adrp x0, :got:gL2pMapInfo
6797 ldr x0, [x0, #:got_lo12:gL2pMapInfo]
6800 ldr x1, [x22, #:got_lo12:c_ftl_nand_max_map_blks]
6805 adrp x1, :got:g_totle_map_block
6806 ldr x1, [x1, #:got_lo12:g_totle_map_block]
6809 adrp x1, :got:c_ftl_nand_map_region_num
6810 ldr x1, [x1, #:got_lo12:c_ftl_nand_map_region_num]
6813 adrp x1, :got:p_map_block_table
6814 ldr x1, [x1, #:got_lo12:p_map_block_table]
6817 adrp x1, :got:p_map_block_ver_table
6818 ldr x1, [x1, #:got_lo12:p_map_block_ver_table]
6821 ldr x1, [x3, #:got_lo12:p_map_block_valid_page_count]
6824 adrp x1, :got:p_map_region_ppn_table
6825 ldr x1, [x1, #:got_lo12:p_map_region_ppn_table]
6828 ldp x19, x20, [sp,16]
6829 ldp x21, x22, [sp,32]
6831 ldp x29, x30, [sp], 64
6833 .size FtlL2PDataInit, .-FtlL2PDataInit
6835 .global FtlVariablesInit
6836 .type FtlVariablesInit, %function
6838 adrp x0, :got:g_req_cache
6840 stp x29, x30, [sp, -32]!
6842 ldr x0, [x0, #:got_lo12:g_req_cache]
6844 adrp x19, :got:c_ftl_nand_blk_pre_plane
6846 adrp x0, :got:g_tmp_data_superblock_id
6847 ldr x0, [x0, #:got_lo12:g_tmp_data_superblock_id]
6849 adrp x0, :got:g_totle_swl_count
6851 ldr x0, [x0, #:got_lo12:g_totle_swl_count]
6853 adrp x0, :got:ftl_gc_temp_power_lost_recovery_flag
6854 ldr x0, [x0, #:got_lo12:ftl_gc_temp_power_lost_recovery_flag]
6856 adrp x0, :got:g_recovery_page_min_ver
6857 ldr x0, [x0, #:got_lo12:g_recovery_page_min_ver]
6859 adrp x0, :got:g_inkDie_check_enable
6860 adrp x1, :got:c_ftl_nand_max_vendor_blks
6861 ldr x0, [x0, #:got_lo12:g_inkDie_check_enable]
6863 adrp x0, :got:g_totle_vendor_block
6864 ldr x0, [x0, #:got_lo12:g_totle_vendor_block]
6866 adrp x0, :got:p_vendor_block_table
6867 ldr x1, [x1, #:got_lo12:c_ftl_nand_max_vendor_blks]
6868 ldr x0, [x0, #:got_lo12:p_vendor_block_table]
6874 ldr x19, [x19, #:got_lo12:c_ftl_nand_blk_pre_plane]
6875 adrp x0, :got:p_erase_count_table
6878 ldr x0, [x0, #:got_lo12:p_erase_count_table]
6882 adrp x0, :got:p_swl_mul_table
6886 ldr x0, [x0, #:got_lo12:p_swl_mul_table]
6889 adrp x0, :got:g_sys_save_data
6892 ldr x0, [x0, #:got_lo12:g_sys_save_data]
6894 adrp x0, :got:g_sys_ext_data
6897 ldr x0, [x0, #:got_lo12:g_sys_ext_data]
6903 ldp x29, x30, [sp], 32
6905 .size FtlVariablesInit, .-FtlVariablesInit
6907 .global SupperBlkListInit
6908 .type SupperBlkListInit, %function
6910 stp x29, x30, [sp, -112]!
6911 adrp x0, :got:c_ftl_nand_blk_pre_plane
6914 stp x23, x24, [sp,48]
6915 ldr x0, [x0, #:got_lo12:c_ftl_nand_blk_pre_plane]
6916 adrp x23, :got:p_data_block_list_table
6917 stp x19, x20, [sp,16]
6918 stp x21, x22, [sp,32]
6919 stp x25, x26, [sp,64]
6920 stp x27, x28, [sp,80]
6921 ldr x1, [x23, #:got_lo12:p_data_block_list_table]
6922 adrp x21, :got:g_num_data_superblocks
6924 adrp x20, :got:g_num_free_superblocks
6926 adrp x25, :got:c_ftl_nand_planes_num
6932 adrp x26, :got:p_plane_order_table
6933 adrp x27, :got:c_ftl_nand_page_pre_blk
6936 adrp x0, :got:p_free_data_block_list_head
6937 ldr x0, [x0, #:got_lo12:p_free_data_block_list_head]
6939 adrp x0, :got:p_data_block_list_head
6940 ldr x0, [x0, #:got_lo12:p_data_block_list_head]
6942 adrp x0, :got:p_data_block_list_tail
6943 ldr x0, [x0, #:got_lo12:p_data_block_list_tail]
6945 ldr x0, [x21, #:got_lo12:g_num_data_superblocks]
6947 ldr x0, [x20, #:got_lo12:g_num_free_superblocks]
6950 adrp x0, :got:c_ftl_nand_data_blks_per_plane
6951 ldr x0, [x0, #:got_lo12:c_ftl_nand_data_blks_per_plane]
6958 ldr x0, [x25, #:got_lo12:c_ftl_nand_planes_num]
6962 ldr x0, [x26, #:got_lo12:p_plane_order_table]
6966 ldrb w0, [x0,w4,sxtw]
6972 ldr x0, [x27, #:got_lo12:c_ftl_nand_page_pre_blk]
6984 ldr x1, [x23, #:got_lo12:p_data_block_list_table]
6990 adrp x0, :got:g_active_superblock
6991 ldr x0, [x0, #:got_lo12:g_active_superblock]
6995 adrp x0, :got:g_buffer_superblock
6996 ldr x0, [x0, #:got_lo12:g_buffer_superblock]
7000 adrp x0, :got:g_gc_temp_superblock
7001 ldr x0, [x0, #:got_lo12:g_gc_temp_superblock]
7005 adrp x1, :got:p_valid_page_count_table
7006 ubfiz x0, x19, 1, 16
7007 ldr x1, [x1, #:got_lo12:p_valid_page_count_table]
7026 ldr x21, [x21, #:got_lo12:g_num_data_superblocks]
7029 ldr x20, [x20, #:got_lo12:g_num_free_superblocks]
7031 ldp x19, x20, [sp,16]
7032 ldp x21, x22, [sp,32]
7033 ldp x23, x24, [sp,48]
7034 ldp x25, x26, [sp,64]
7035 ldp x27, x28, [sp,80]
7036 ldp x29, x30, [sp], 112
7038 .size SupperBlkListInit, .-SupperBlkListInit
7040 .global FtlGcPageVarInit
7041 .type FtlGcPageVarInit, %function
7043 adrp x0, :got:g_gc_blk_num
7045 stp x29, x30, [sp, -32]!
7047 ldr x0, [x0, #:got_lo12:g_gc_blk_num]
7049 adrp x19, :got:c_ftl_nand_page_pre_super_blk
7051 adrp x0, :got:g_gc_page_offset
7052 ldr x0, [x0, #:got_lo12:g_gc_page_offset]
7054 adrp x0, :got:p_gc_blk_tbl
7055 ldr x19, [x19, #:got_lo12:c_ftl_nand_page_pre_super_blk]
7056 ldr x0, [x0, #:got_lo12:p_gc_blk_tbl]
7061 adrp x0, :got:p_gc_page_info
7065 ldr x0, [x0, #:got_lo12:p_gc_page_info]
7071 ldp x29, x30, [sp], 32
7073 .size FtlGcPageVarInit, .-FtlGcPageVarInit
7076 .type ftl_memcpy, %function
7078 stp x29, x30, [sp, -16]!
7082 ldp x29, x30, [sp], 16
7084 .size ftl_memcpy, .-ftl_memcpy
7086 .global FlashGetReadRetryDefault
7087 .type FlashGetReadRetryDefault, %function
7088 FlashGetReadRetryDefault:
7089 stp x29, x30, [sp, -16]!
7096 bl HynixGetReadRetryDefault
7101 adrp x0, :got:gReadRetryInfo
7103 ldr x0, [x0, #:got_lo12:gReadRetryInfo]
7110 adrp x1, :got:SamsungRefValue
7111 ldr x1, [x1, #:got_lo12:SamsungRefValue]
7120 adrp x0, :got:gReadRetryInfo
7121 ldr x0, [x0, #:got_lo12:gReadRetryInfo]
7131 adrp x0, :got:gReadRetryInfo
7132 ldr x0, [x0, #:got_lo12:gReadRetryInfo]
7139 adrp x1, :got:ToshibaA19RefValue
7142 ldr x1, [x1, #:got_lo12:ToshibaA19RefValue]
7150 adrp x0, :got:gReadRetryInfo
7152 ldr x0, [x0, #:got_lo12:gReadRetryInfo]
7159 adrp x1, :got:Toshiba15RefValue
7160 ldr x1, [x1, #:got_lo12:Toshiba15RefValue]
7164 ldp x29, x30, [sp], 16
7166 .size FlashGetReadRetryDefault, .-FlashGetReadRetryDefault
7168 .global FlashReadIdbData
7169 .type FlashReadIdbData, %function
7171 adrp x1, :got:gNandIDataBuf
7173 stp x29, x30, [sp, -16]!
7175 ldr x1, [x1, #:got_lo12:gNandIDataBuf]
7178 ldp x29, x30, [sp], 16
7180 .size FlashReadIdbData, .-FlashReadIdbData
7182 .global FlashLoadPhyInfoInRam
7183 .type FlashLoadPhyInfoInRam, %function
7184 FlashLoadPhyInfoInRam:
7185 stp x29, x30, [sp, -64]!
7187 stp x19, x20, [sp,16]
7188 adrp x19, :got:NandFlashParaTbl
7190 stp x21, x22, [sp,32]
7192 adrp x23, :got:IDByte
7193 ldr x22, [x19, #:got_lo12:NandFlashParaTbl]
7195 ldr x1, [x23, #:got_lo12:IDByte]
7201 ldr x19, [x19, #:got_lo12:NandFlashParaTbl]
7202 ubfiz x20, x20, 5, 32
7217 add x5, x4, :lo12:.LANCHOR2
7227 adrp x0, :got:gNandOptPara
7229 add x2, x2, :lo12:.LANCHOR2
7233 ldr x0, [x0, #:got_lo12:gNandOptPara]
7235 adrp x0, :got:gNandParaInfo
7238 ldr x0, [x0, #:got_lo12:gNandParaInfo]
7246 ldp x19, x20, [sp,16]
7247 ldp x21, x22, [sp,32]
7248 ldp x29, x30, [sp], 64
7250 .size FlashLoadPhyInfoInRam, .-FlashLoadPhyInfoInRam
7252 .global NandcCopy1KB
7253 .type NandcCopy1KB, %function
7255 stp x29, x30, [sp, -48]!
7258 stp x19, x20, [sp,16]
7282 orr w0, w0, w1, lsl 8
7286 orr w0, w0, w1, lsl 24
7287 str w0, [x21,w19,sxtw 2]
7301 ldr w0, [x21,w19,sxtw 2]
7310 ldp x19, x20, [sp,16]
7312 ldp x29, x30, [sp], 48
7314 .size NandcCopy1KB, .-NandcCopy1KB
7317 .type ftl_memcmp, %function
7319 stp x29, x30, [sp, -16]!
7323 ldp x29, x30, [sp], 16
7325 .size ftl_memcmp, .-ftl_memcmp
7327 .global FlashSramLoadStore
7328 .type FlashSramLoadStore, %function
7330 adrp x4, :got:RK29_NANDC_REG_BASE
7332 stp x29, x30, [sp, -16]!
7335 ldr x4, [x4, #:got_lo12:RK29_NANDC_REG_BASE]
7347 ldp x29, x30, [sp], 16
7349 .size FlashSramLoadStore, .-FlashSramLoadStore
7351 .global FlashCs123Init
7352 .type FlashCs123Init, %function
7355 .size FlashCs123Init, .-FlashCs123Init
7357 .global rk_nand_de_init
7358 .type rk_nand_de_init, %function
7360 stp x29, x30, [sp, -16]!
7363 ldp x29, x30, [sp], 16
7365 .size rk_nand_de_init, .-rk_nand_de_init
7367 .global rk_nand_suspend
7368 .type rk_nand_suspend, %function
7370 stp x29, x30, [sp, -16]!
7373 ldp x29, x30, [sp], 16
7375 .size rk_nand_suspend, .-rk_nand_suspend
7377 .global rk_nand_resume
7378 .type rk_nand_resume, %function
7380 stp x29, x30, [sp, -16]!
7383 ldp x29, x30, [sp], 16
7385 .size rk_nand_resume, .-rk_nand_resume
7387 .global rk_ftl_get_capacity
7388 .type rk_ftl_get_capacity, %function
7389 rk_ftl_get_capacity:
7390 stp x29, x30, [sp, -16]!
7394 ldp x29, x30, [sp], 16
7396 .size rk_ftl_get_capacity, .-rk_ftl_get_capacity
7398 .global rknand_print_hex
7399 .type rknand_print_hex, %function
7401 stp x29, x30, [sp, -96]!
7403 stp x19, x20, [sp,16]
7404 stp x21, x22, [sp,32]
7405 stp x23, x24, [sp,48]
7410 stp x25, x26, [sp,64]
7417 add x23, x23, :lo12:.LC79
7418 add x21, x21, :lo12:.LC80
7419 add x24, x24, :lo12:.LC72
7432 ldr w1, [x22,x19,lsl 2]
7437 ldrsh w1, [x22,x19,lsl 1]
7448 add x1, x1, :lo12:.LC81
7457 add x1, x1, :lo12:.LC81
7458 add x0, x0, :lo12:.LC72
7461 ldp x19, x20, [sp,16]
7462 ldp x21, x22, [sp,32]
7463 ldp x23, x24, [sp,48]
7464 ldp x25, x26, [sp,64]
7465 ldp x29, x30, [sp], 96
7467 .size rknand_print_hex, .-rknand_print_hex
7469 .global NandcXferComp
7470 .type NandcXferComp, %function
7472 stp x29, x30, [sp, -80]!
7473 adrp x1, :got:gNandChipMap
7476 stp x21, x22, [sp,32]
7477 ldr x1, [x1, #:got_lo12:gNandChipMap]
7478 adrp x21, :got:gNandcVer
7479 stp x19, x20, [sp,16]
7482 ldr x0, [x21, #:got_lo12:gNandcVer]
7489 bl wait_for_nandc_xfer_completed
7498 add x22, x22, :lo12:.LC82
7499 add x23, x23, :lo12:.LC83
7507 ldr x0, [x21, #:got_lo12:gNandcVer]
7513 and w0, w20, 16777215
7536 adrp x19, :got:gMasterInfo
7537 ldr x19, [x19, #:got_lo12:gMasterInfo]
7545 bl rknand_dma_unmap_single
7551 bl rknand_dma_unmap_single
7556 add x21, x21, :lo12:.LC84
7557 add x22, x22, :lo12:.LC83
7564 and w0, w20, 16777215
7579 adrp x0, :got:gNandcDumpWriteEn
7581 ldr x1, [x0, #:got_lo12:gNandcDumpWriteEn]
7585 bl NandcSendDumpDataStart
7587 adrp x21, :got:gMasterInfo
7588 ldr x21, [x21, #:got_lo12:gMasterInfo]
7596 bl rknand_dma_unmap_single
7602 bl rknand_dma_unmap_single
7604 ldr x0, [x20, #:got_lo12:gNandcDumpWriteEn]
7608 bl NandcSendDumpDataDone
7610 adrp x0, :got:gMasterInfo
7611 ldr x0, [x0, #:got_lo12:gMasterInfo]
7620 ldp x19, x20, [sp,16]
7621 ldp x21, x22, [sp,32]
7623 ldp x29, x30, [sp], 80
7625 .size NandcXferComp, .-NandcXferComp
7627 .global NandcXferData
7628 .type NandcXferData, %function
7630 stp x29, x30, [sp, -176]!
7632 stp x23, x24, [sp,48]
7634 adrp x0, :got:gNandChipMap
7635 stp x19, x20, [sp,16]
7637 sbfiz x1, x24, 4, 32
7638 ldr x0, [x0, #:got_lo12:gNandChipMap]
7640 stp x21, x22, [sp,32]
7641 stp x25, x26, [sp,64]
7642 stp x27, x28, [sp,80]
7666 adrp x0, :got:gNandcEccBits
7669 adrp x5, :got:gMasterInfo
7670 add x2, x21, x2, lsl 2
7671 ldr x1, [x0, #:got_lo12:gNandcEccBits]
7681 ldr x6, [x5, #:got_lo12:gMasterInfo]
7682 and x1, x1, 4294967292
7696 ldr x0, [x0, #:got_lo12:gNandcEccBits]
7699 adrp x0, :got:gNandcVer
7700 ldr x0, [x0, #:got_lo12:gNandcVer]
7710 ldr w1, [x19,x1,lsl 2]
7726 orr w2, w6, w2, lsl 5
7728 orr w1, w3, w1, lsl 5
7735 orr w3, w3, w1, lsl 5
7752 orr w2, w6, w2, lsl 5
7754 orr w1, w3, w1, lsl 5
7767 orr w3, w1, w3, lsl 5
7770 csel w22, w22, w3, cs
7791 ubfiz x0, x22, 9, 23
7796 csel w4, w27, wzr, ne
7851 orr w0, w1, w0, lsl 5
7853 csel w22, w22, w0, cs
7861 ubfiz x3, x26, 9, 23
7866 csel w4, w27, wzr, ne
7875 adrp x0, :got:gNandcVer
7876 ldr x0, [x0, #:got_lo12:gNandcVer]
7882 movk w1, 0x2, lsl 16
7891 ldp x19, x20, [sp,16]
7892 ldp x21, x22, [sp,32]
7893 ldp x23, x24, [sp,48]
7894 ldp x25, x26, [sp,64]
7895 ldp x27, x28, [sp,80]
7896 ldp x29, x30, [sp], 176
7898 .size NandcXferData, .-NandcXferData
7900 .global FlashReadRawPage
7901 .type FlashReadRawPage, %function
7903 stp x29, x30, [sp, -64]!
7906 stp x19, x20, [sp,16]
7908 adrp x0, :got:gNandParaInfo
7911 ldr x0, [x0, #:got_lo12:gNandParaInfo]
7914 adrp x0, :got:gNandIDBResBlkNum
7915 adrp x5, :got:gBlockPageAlignSize
7916 ldr x0, [x0, #:got_lo12:gNandIDBResBlkNum]
7917 ldr x5, [x5, #:got_lo12:gBlockPageAlignSize]
7923 csel w20, w20, w0, cs
7928 bl NandcWaitFlashReady
7935 bl NandcWaitFlashReady
7947 ldp x19, x20, [sp,16]
7948 ldp x29, x30, [sp], 64
7950 .size FlashReadRawPage, .-FlashReadRawPage
7952 .global FlashDdrTunningRead
7953 .type FlashDdrTunningRead, %function
7954 FlashDdrTunningRead:
7955 stp x29, x30, [sp, -128]!
7957 stp x23, x24, [sp,48]
7959 adrp x0, :got:gpNandc
7960 stp x21, x22, [sp,32]
7961 stp x25, x26, [sp,64]
7962 ldr x0, [x0, #:got_lo12:gpNandc]
7964 stp x27, x28, [sp,80]
7965 stp x19, x20, [sp,16]
7974 adrp x0, :got:gNandcVer
7975 ldr x0, [x0, #:got_lo12:gNandcVer]
7979 csel w22, w22, w0, cc
7982 adrp x19, :got:gFlashInterfaceMode
7983 bl FlashSetInterfaceMode
7993 ldr x19, [x19, #:got_lo12:gFlashInterfaceMode]
7996 bl FlashSetInterfaceMode
8007 add x0, x0, :lo12:.LC85
8012 adrp x1, :got:IDByte
8015 ldr x1, [x1, #:got_lo12:IDByte]
8019 adrp x1, :got:gNandChipMap
8021 ldr x1, [x1, #:got_lo12:gNandChipMap]
8028 adrp x0, :got:FlashDdrTunningReadCount
8029 ldr x0, [x0, #:got_lo12:FlashDdrTunningReadCount]
8091 csel w19, w19, w5, cc
8099 add x0, x0, :lo12:.LC86
8107 add x0, x0, :lo12:.LC87
8116 ldp x19, x20, [sp,16]
8117 ldp x21, x22, [sp,32]
8118 ldp x23, x24, [sp,48]
8119 ldp x25, x26, [sp,64]
8120 ldp x27, x28, [sp,80]
8121 ldp x29, x30, [sp], 128
8123 .size FlashDdrTunningRead, .-FlashDdrTunningRead
8125 .global FlashReadPage
8126 .type FlashReadPage, %function
8128 stp x29, x30, [sp, -80]!
8130 stp x19, x20, [sp,16]
8134 stp x23, x24, [sp,48]
8135 stp x21, x22, [sp,32]
8143 adrp x21, :got:gNandRandomizer
8144 ldr x21, [x21, #:got_lo12:gNandRandomizer]
8148 adrp x0, :got:gFlashToggleModeEn
8149 ldr x0, [x0, #:got_lo12:gFlashToggleModeEn]
8166 adrp x0, :got:gpNandc
8171 ldr x0, [x0, #:got_lo12:gpNandc]
8175 bl FlashDdrTunningRead
8179 adrp x1, :got:gNandFlashEccBits
8180 ldr x1, [x1, #:got_lo12:gNandFlashEccBits]
8188 adrp x0, :got:gpReadRetrial
8190 ldr x0, [x0, #:got_lo12:gpReadRetrial]
8202 add x0, x0, :lo12:.LC88
8209 ldp x19, x20, [sp,16]
8210 ldp x21, x22, [sp,32]
8211 ldp x23, x24, [sp,48]
8212 ldp x29, x30, [sp], 80
8214 .size FlashReadPage, .-FlashReadPage
8216 .global FlashDdrParaScan
8217 .type FlashDdrParaScan, %function
8219 stp x29, x30, [sp, -48]!
8221 stp x19, x20, [sp,16]
8222 adrp x19, :got:gFlashInterfaceMode
8224 stp x21, x22, [sp,32]
8226 ldr x22, [x19, #:got_lo12:gFlashInterfaceMode]
8228 bl FlashSetInterfaceMode
8236 bl FlashDdrTunningRead
8245 adrp x19, :got:gFlashToggleModeEn
8250 ldr x0, [x1, #:got_lo12:gFlashInterfaceMode]
8254 bl FlashSetInterfaceMode
8257 ldr x19, [x19, #:got_lo12:gFlashToggleModeEn]
8261 ldr x19, [x19, #:got_lo12:gFlashToggleModeEn]
8266 ldp x19, x20, [sp,16]
8267 ldp x21, x22, [sp,32]
8268 ldp x29, x30, [sp], 48
8270 .size FlashDdrParaScan, .-FlashDdrParaScan
8272 .global FlashLoadPhyInfo
8273 .type FlashLoadPhyInfo, %function
8275 stp x29, x30, [sp, -144]!
8278 stp x19, x20, [sp,16]
8279 adrp x20, :got:gNandParaInfo
8287 stp x21, x22, [sp,32]
8289 adrp x22, :got:gFlashPageBuffer0
8290 ldr x0, [x20, #:got_lo12:gNandParaInfo]
8291 adrp x21, :got:gpFlashSaveInfo
8292 stp x23, x24, [sp,48]
8293 stp x25, x26, [sp,64]
8294 stp x27, x28, [sp,80]
8295 ldr x1, [x22, #:got_lo12:gFlashPageBuffer0]
8296 adrp x23, :got:gNandFlashInfoBlockAddr
8301 ldr x0, [x21, #:got_lo12:gpFlashSaveInfo]
8302 adrp x26, :got:gNandOptPara
8304 adrp x27, :got:gReadRetryInfo
8307 ldr x0, [x23, #:got_lo12:gNandFlashInfoBlockAddr]
8316 ldr x6, [x22, #:got_lo12:gFlashPageBuffer0]
8354 movk w1, 0x4e41, lsl 16
8355 ldr x28, [x0, #:got_lo12:gpFlashSaveInfo]
8361 ldr x20, [x20, #:got_lo12:gNandParaInfo]
8362 adrp x0, :got:gNandFlashIdbBlockAddr
8364 ldr x0, [x0, #:got_lo12:gNandFlashIdbBlockAddr]
8370 ldr x21, [x20, #:got_lo12:gNandParaInfo]
8378 ldr x0, [x26, #:got_lo12:gNandOptPara]
8383 ldr x0, [x27, #:got_lo12:gReadRetryInfo]
8386 adrp x1, :got:gFlashToggleModeEn
8388 ldr x1, [x1, #:got_lo12:gFlashToggleModeEn]
8392 ldr x0, [x23, #:got_lo12:gNandFlashInfoBlockAddr]
8395 adrp x0, :got:gNandFlashIdbBlockAddr
8397 ldr x0, [x0, #:got_lo12:gNandFlashIdbBlockAddr]
8405 adrp x0, :got:gNandIDBResBlkNumSaveInFlash
8408 ldr x0, [x0, #:got_lo12:gNandIDBResBlkNumSaveInFlash]
8413 ldp x19, x20, [sp,16]
8414 ldp x21, x22, [sp,32]
8415 ldp x23, x24, [sp,48]
8416 ldp x25, x26, [sp,64]
8417 ldp x27, x28, [sp,80]
8418 ldp x29, x30, [sp], 144
8420 .size FlashLoadPhyInfo, .-FlashLoadPhyInfo
8422 .global ToshibaReadRetrial
8423 .type ToshibaReadRetrial, %function
8425 stp x29, x30, [sp, -96]!
8427 stp x23, x24, [sp,48]
8430 stp x19, x20, [sp,16]
8431 stp x25, x26, [sp,64]
8432 stp x21, x22, [sp,32]
8433 stp x27, x28, [sp,80]
8437 bl NandcWaitFlashReady
8439 adrp x20, :got:g_retryMode
8443 ldr x0, [x20, #:got_lo12:g_retryMode]
8449 adrp x0, :got:gFlashToggleModeEn
8450 ldr x0, [x0, #:got_lo12:gFlashToggleModeEn]
8465 adrp x0, :got:g_maxRetryCount
8466 ldr x0, [x0, #:got_lo12:g_maxRetryCount]
8471 ldr x0, [x20, #:got_lo12:g_retryMode]
8484 ldr x0, [x20, #:got_lo12:g_retryMode]
8488 adrp x0, :got:g_maxRetryCount
8489 ldr x0, [x0, #:got_lo12:g_maxRetryCount]
8523 adrp x0, :got:gNandFlashEccBits
8525 csel w24, w24, w28, ne
8526 ldr x0, [x0, #:got_lo12:gNandFlashEccBits]
8528 add w0, w0, w0, lsl 1
8539 ldr x20, [x20, #:got_lo12:g_retryMode]
8554 adrp x0, :got:gNandFlashEccBits
8555 ldr x0, [x0, #:got_lo12:gNandFlashEccBits]
8557 add w0, w0, w0, lsl 1
8562 csel w28, w28, w0, eq
8565 bl NandcWaitFlashReady
8571 ldp x19, x20, [sp,16]
8572 ldp x21, x22, [sp,32]
8573 ldp x23, x24, [sp,48]
8574 ldp x25, x26, [sp,64]
8575 ldp x27, x28, [sp,80]
8576 ldp x29, x30, [sp], 96
8578 .size ToshibaReadRetrial, .-ToshibaReadRetrial
8580 .global SamsungReadRetrial
8581 .type SamsungReadRetrial, %function
8583 stp x29, x30, [sp, -96]!
8585 stp x21, x22, [sp,32]
8590 stp x19, x20, [sp,16]
8591 stp x23, x24, [sp,48]
8592 stp x25, x26, [sp,64]
8595 bl NandcWaitFlashReady
8599 adrp x26, :got:g_maxRetryCount
8600 adrp x27, :got:gNandFlashEccBits
8604 ldr x0, [x26, #:got_lo12:g_maxRetryCount]
8621 csel w19, w19, w0, ne
8622 ldr x0, [x27, #:got_lo12:gNandFlashEccBits]
8624 add w2, w2, w2, lsl 1
8638 adrp x0, :got:gNandFlashEccBits
8639 ldr x0, [x0, #:got_lo12:gNandFlashEccBits]
8641 add w0, w0, w0, lsl 1
8646 csel w19, w19, w0, eq
8650 ldp x19, x20, [sp,16]
8651 ldp x21, x22, [sp,32]
8652 ldp x23, x24, [sp,48]
8653 ldp x25, x26, [sp,64]
8654 ldp x29, x30, [sp], 96
8656 .size SamsungReadRetrial, .-SamsungReadRetrial
8658 .global MicronReadRetrial
8659 .type MicronReadRetrial, %function
8661 stp x29, x30, [sp, -96]!
8663 stp x21, x22, [sp,32]
8667 stp x19, x20, [sp,16]
8668 stp x23, x24, [sp,48]
8669 stp x25, x26, [sp,64]
8670 stp x27, x28, [sp,80]
8674 bl NandcWaitFlashReady
8680 adrp x28, :got:gNandFlashEccBits
8699 ldr x1, [x28, #:got_lo12:gNandFlashEccBits]
8701 csel w20, w20, w0, ne
8703 add w2, w2, w2, lsl 1
8723 adrp x0, :got:gNandFlashEccBits
8726 ldr x0, [x0, #:got_lo12:gNandFlashEccBits]
8728 add w0, w0, w0, lsl 1
8733 csel w20, w20, w0, eq
8736 ldp x19, x20, [sp,16]
8737 ldp x21, x22, [sp,32]
8738 ldp x23, x24, [sp,48]
8739 ldp x25, x26, [sp,64]
8740 ldp x27, x28, [sp,80]
8741 ldp x29, x30, [sp], 96
8743 .size MicronReadRetrial, .-MicronReadRetrial
8745 .global HynixReadRetrial
8746 .type HynixReadRetrial, %function
8748 stp x29, x30, [sp, -112]!
8750 stp x21, x22, [sp,32]
8751 adrp x21, :got:gReadRetryInfo
8753 stp x23, x24, [sp,48]
8754 stp x27, x28, [sp,80]
8755 ldr x0, [x21, #:got_lo12:gReadRetryInfo]
8757 stp x19, x20, [sp,16]
8758 stp x25, x26, [sp,64]
8766 bl NandcWaitFlashReady
8769 adrp x4, :got:gNandFlashEccBits
8774 ldr x2, [x21, #:got_lo12:gReadRetryInfo]
8781 csel w20, w20, wzr, cc
8792 ldr x1, [x4, #:got_lo12:gNandFlashEccBits]
8794 csel w19, w19, w0, ne
8796 add w1, w1, w1, lsl 1
8807 ldr x21, [x21, #:got_lo12:gReadRetryInfo]
8808 adrp x0, :got:gNandFlashEccBits
8811 ldr x0, [x0, #:got_lo12:gNandFlashEccBits]
8813 add w0, w0, w0, lsl 1
8818 csel w19, w19, w0, eq
8821 ldp x19, x20, [sp,16]
8822 ldp x21, x22, [sp,32]
8823 ldp x23, x24, [sp,48]
8824 ldp x25, x26, [sp,64]
8825 ldp x27, x28, [sp,80]
8826 ldp x29, x30, [sp], 112
8828 .size HynixReadRetrial, .-HynixReadRetrial
8830 .global FlashProgPage
8831 .type FlashProgPage, %function
8833 stp x29, x30, [sp, -64]!
8836 stp x19, x20, [sp,16]
8838 adrp x0, :got:gNandParaInfo
8839 stp x21, x22, [sp,32]
8842 ldr x0, [x0, #:got_lo12:gNandParaInfo]
8845 adrp x0, :got:gNandIDBResBlkNum
8846 adrp x1, :got:gBlockPageAlignSize
8847 ldr x0, [x0, #:got_lo12:gNandIDBResBlkNum]
8848 ldr x1, [x1, #:got_lo12:gBlockPageAlignSize]
8854 adrp x0, :got:g_slc2KBNand
8855 ldr x0, [x0, #:got_lo12:g_slc2KBNand]
8865 bl NandcWaitFlashReady
8870 bl FlashProgFirstCmd
8879 bl FlashProgSecondCmd
8881 bl NandcWaitFlashReady
8889 ldp x19, x20, [sp,16]
8890 ldp x21, x22, [sp,32]
8891 ldp x29, x30, [sp], 64
8893 .size FlashProgPage, .-FlashProgPage
8895 .global FlashSavePhyInfo
8896 .type FlashSavePhyInfo, %function
8898 stp x29, x30, [sp, -112]!
8900 stp x23, x24, [sp,48]
8901 adrp x23, :got:gFlashPageBuffer0
8902 adrp x24, :got:gFlashPageBuffer1
8903 stp x21, x22, [sp,32]
8904 adrp x22, :got:gpFlashSaveInfo
8905 stp x19, x20, [sp,16]
8906 ldr x20, [x23, #:got_lo12:gFlashPageBuffer0]
8907 ldr x19, [x22, #:got_lo12:gpFlashSaveInfo]
8908 stp x25, x26, [sp,64]
8909 stp x27, x28, [sp,80]
8910 adrp x25, :got:gBlockPageAlignSize
8911 adrp x26, :got:gNandFlashIdbBlockAddr
8913 adrp x27, :got:gNandFlashInfoBlockAddr
8915 adrp x0, :got:gNandFlashIDBEccBits
8916 ldr x0, [x0, #:got_lo12:gNandFlashIDBEccBits]
8925 movk w0, 0x4e41, lsl 16
8928 adrp x1, :got:gNandMaxDie
8930 ldr x1, [x1, #:got_lo12:gNandMaxDie]
8934 adrp x1, :got:gNandIDBResBlkNum
8935 ldr x1, [x1, #:got_lo12:gNandIDBResBlkNum]
8938 adrp x1, :got:gFlashToggleModeEn
8939 ldr x1, [x1, #:got_lo12:gFlashToggleModeEn]
8942 adrp x1, :got:IDByte
8943 ldr x1, [x1, #:got_lo12:IDByte]
8945 adrp x1, :got:DieCsIndex
8949 ldr x1, [x1, #:got_lo12:DieCsIndex]
8951 adrp x1, :got:DieAddrs
8955 ldr x1, [x1, #:got_lo12:DieAddrs]
8957 adrp x1, :got:gNandParaInfo
8961 ldr x1, [x1, #:got_lo12:gNandParaInfo]
8963 adrp x1, :got:gNandOptPara
8967 ldr x1, [x1, #:got_lo12:gNandOptPara]
8969 adrp x1, :got:gReadRetryInfo
8973 ldr x1, [x1, #:got_lo12:gReadRetryInfo]
8983 ldr x0, [x24, #:got_lo12:gFlashPageBuffer1]
8989 ldr x21, [x25, #:got_lo12:gBlockPageAlignSize]
8995 ldr x28, [x23, #:got_lo12:gFlashPageBuffer0]
9012 ldr x2, [x24, #:got_lo12:gFlashPageBuffer1]
9019 ldr x0, [x22, #:got_lo12:gpFlashSaveInfo]
9021 movk w1, 0x4e41, lsl 16
9034 ldr x0, [x26, #:got_lo12:gNandFlashIdbBlockAddr]
9037 ldr x1, [x27, #:got_lo12:gNandFlashInfoBlockAddr]
9052 ldp x19, x20, [sp,16]
9053 ldp x21, x22, [sp,32]
9054 ldp x23, x24, [sp,48]
9055 ldp x25, x26, [sp,64]
9056 ldp x27, x28, [sp,80]
9057 ldp x29, x30, [sp], 112
9059 .size FlashSavePhyInfo, .-FlashSavePhyInfo
9061 .global FlashReadIdbDataRaw
9062 .type FlashReadIdbDataRaw, %function
9063 FlashReadIdbDataRaw:
9064 stp x29, x30, [sp, -128]!
9068 stp x23, x24, [sp,48]
9069 stp x25, x26, [sp,64]
9077 adrp x1, :got:gNandFlashEccBits
9078 stp x19, x20, [sp,16]
9079 stp x21, x22, [sp,32]
9080 ldr x1, [x1, #:got_lo12:gNandFlashEccBits]
9082 stp x27, x28, [sp,80]
9086 adrp x24, :got:gNandIDBResBlkNum
9088 adrp x25, :got:gBlockPageAlignSize
9089 adrp x26, :got:gFlashPageBuffer0
9090 add x21, x21, :lo12:.LC89
9094 ldr x0, [x24, #:got_lo12:gNandIDBResBlkNum]
9105 ldr x20, [x26, #:got_lo12:gFlashPageBuffer0]
9106 ldr x0, [x25, #:got_lo12:gBlockPageAlignSize]
9124 movk w0, 0xfcdc, lsl 16
9134 adrp x0, :got:gNandIDBResBlkNum
9136 ldr x0, [x0, #:got_lo12:gNandIDBResBlkNum]
9139 adrp x1, :got:gNandFlashIdbBlockAddr
9140 ldr x1, [x1, #:got_lo12:gNandFlashIdbBlockAddr]
9156 ldp x19, x20, [sp,16]
9157 ldp x21, x22, [sp,32]
9158 ldp x23, x24, [sp,48]
9159 ldp x25, x26, [sp,64]
9160 ldp x27, x28, [sp,80]
9161 ldp x29, x30, [sp], 128
9163 .size FlashReadIdbDataRaw, .-FlashReadIdbDataRaw
9166 .type FlashInit, %function
9168 stp x29, x30, [sp, -112]!
9170 stp x19, x20, [sp,16]
9173 stp x21, x22, [sp,32]
9174 stp x23, x24, [sp,48]
9175 stp x27, x28, [sp,80]
9176 stp x25, x26, [sp,64]
9178 adrp x20, :got:gNandIDBResBlkNum
9179 adrp x1, :got:gFlashPageBuffer0
9180 adrp x24, :got:gNandIDBResBlkNumSaveInFlash
9181 adrp x23, :got:gFlashToggleModeEn
9182 adrp x22, :got:g_slc2KBNand
9183 adrp x25, :got:gNandFlashIDBEccBits
9184 adrp x21, :got:IDByte
9185 ldr x1, [x1, #:got_lo12:gFlashPageBuffer0]
9188 add x27, x27, :lo12:.LC90
9192 adrp x1, :got:gFlashPageBuffer1
9193 ldr x1, [x1, #:got_lo12:gFlashPageBuffer1]
9197 adrp x1, :got:gFlashSpareBuffer
9198 ldr x1, [x1, #:got_lo12:gFlashSpareBuffer]
9202 adrp x1, :got:gFlashProgCheckBuffer
9203 ldr x1, [x1, #:got_lo12:gFlashProgCheckBuffer]
9207 adrp x1, :got:gFlashProgCheckSpareBuffer
9208 ldr x1, [x1, #:got_lo12:gFlashProgCheckSpareBuffer]
9211 ldr x0, [x20, #:got_lo12:gNandIDBResBlkNum]
9213 ldr x0, [x24, #:got_lo12:gNandIDBResBlkNumSaveInFlash]
9215 adrp x1, :got:gNandFlashIdbBlockAddr
9217 ldr x1, [x1, #:got_lo12:gNandFlashIdbBlockAddr]
9219 adrp x1, :got:gBlockPageAlignSize
9220 ldr x1, [x1, #:got_lo12:gBlockPageAlignSize]
9222 adrp x1, :got:FlashDdrTunningReadCount
9223 ldr x0, [x23, #:got_lo12:gFlashToggleModeEn]
9225 ldr x1, [x1, #:got_lo12:FlashDdrTunningReadCount]
9228 ldr x0, [x22, #:got_lo12:g_slc2KBNand]
9230 ldr x0, [x25, #:got_lo12:gNandFlashIDBEccBits]
9234 ldr x19, [x21, #:got_lo12:IDByte]
9283 ldr x1, [x21, #:got_lo12:IDByte]
9298 ldr x0, [x21, #:got_lo12:IDByte]
9302 adrp x0, :got:gBootDdrMode
9303 ldr x0, [x0, #:got_lo12:gBootDdrMode]
9307 adrp x26, :got:gReadRetryInfo
9310 adrp x19, :got:gpNandParaInfo
9311 adrp x27, :got:gNandRandomizer
9312 ldr x0, [x26, #:got_lo12:gReadRetryInfo]
9314 adrp x0, :got:gNandParaInfo
9315 ldr x1, [x19, #:got_lo12:gpNandParaInfo]
9317 ldr x2, [x0, #:got_lo12:gNandParaInfo]
9319 ldr x1, [x27, #:got_lo12:gNandRandomizer]
9321 ldr x1, [x21, #:got_lo12:IDByte]
9329 ldr x0, [x22, #:got_lo12:g_slc2KBNand]
9333 ldr x0, [x20, #:got_lo12:gNandIDBResBlkNum]
9335 ldr x25, [x25, #:got_lo12:gNandFlashIDBEccBits]
9337 ldr x0, [x21, #:got_lo12:IDByte]
9344 adrp x25, :got:gSlcNandParaInfo
9346 ldr x0, [x25, #:got_lo12:gSlcNandParaInfo]
9350 adrp x0, :got:gNandOptPara
9352 add x1, x1, :lo12:.LANCHOR2
9355 ldr x0, [x0, #:got_lo12:gNandOptPara]
9357 ldr x0, [x28, #:got_lo12:gNandParaInfo]
9359 ldr x1, [x25, #:got_lo12:gSlcNandParaInfo]
9362 ldr x0, [x22, #:got_lo12:g_slc2KBNand]
9365 bl FlashLoadPhyInfoInRam
9367 ldr x0, [x19, #:got_lo12:gpNandParaInfo]
9368 adrp x25, :got:gFlashInterfaceMode
9370 ldr x25, [x25, #:got_lo12:gFlashInterfaceMode]
9375 ldr x1, [x23, #:got_lo12:gFlashToggleModeEn]
9378 bl FlashSetInterfaceMode
9384 adrp x0, :got:gBootDdrMode
9385 ldr x0, [x0, #:got_lo12:gBootDdrMode]
9389 bl FlashSetInterfaceMode
9393 adrp x25, :got:gFlashInterfaceMode
9394 ldr x25, [x25, #:got_lo12:gFlashInterfaceMode]
9396 bl FlashSetInterfaceMode
9403 bl FlashSetInterfaceMode
9406 ldr x25, [x19, #:got_lo12:gpNandParaInfo]
9408 add x0, x0, :lo12:.LC91
9412 bl FlashLoadPhyInfoInRam
9418 bl FlashGetReadRetryDefault
9419 adrp x1, :got:gTotleBlock
9421 ldr x1, [x1, #:got_lo12:gTotleBlock]
9436 adrp x0, :got:gFlashInterfaceMode
9437 ldr x0, [x0, #:got_lo12:gFlashInterfaceMode]
9442 adrp x1, :got:gNandFlashInfoBlockAddr
9444 ldr x1, [x1, #:got_lo12:gNandFlashInfoBlockAddr]
9450 ldr x0, [x19, #:got_lo12:gpNandParaInfo]
9451 adrp x25, :got:gFlashInterfaceMode
9452 ldr x27, [x27, #:got_lo12:gNandRandomizer]
9453 adrp x3, :got:gpReadRetrial
9458 adrp x1, :got:gMultiPageReadEn
9460 ldr x1, [x1, #:got_lo12:gMultiPageReadEn]
9462 adrp x1, :got:gMultiPageProgEn
9464 ldr x1, [x1, #:got_lo12:gMultiPageProgEn]
9467 ldr x1, [x25, #:got_lo12:gFlashInterfaceMode]
9469 ldr x6, [x3, #:got_lo12:gpReadRetrial]
9472 adrp x1, :got:g_retryMode
9474 ldr x1, [x1, #:got_lo12:g_retryMode]
9476 adrp x1, :got:g_maxRegNum
9477 ldr x26, [x26, #:got_lo12:gReadRetryInfo]
9478 ldr x2, [x1, #:got_lo12:g_maxRegNum]
9481 adrp x2, :got:g_maxRetryCount
9483 ldr x5, [x2, #:got_lo12:g_maxRetryCount]
9489 adrp x1, :got:HynixReadRetrial
9492 ldr x1, [x1, #:got_lo12:HynixReadRetrial]
9496 adrp x0, :got:gNandcDumpWriteEn
9498 ldr x0, [x0, #:got_lo12:gNandcDumpWriteEn]
9506 adrp x0, :got:MicronReadRetrial
9507 ldr x0, [x0, #:got_lo12:MicronReadRetrial]
9517 adrp x0, :got:ToshibaReadRetrial
9518 ldr x3, [x3, #:got_lo12:gpReadRetrial]
9519 ldr x0, [x0, #:got_lo12:ToshibaReadRetrial]
9522 ldr x1, [x1, #:got_lo12:g_maxRegNum]
9525 ldr x2, [x2, #:got_lo12:g_maxRetryCount]
9539 adrp x5, :got:ToshibaReadRetrial
9540 ldr x3, [x3, #:got_lo12:gpReadRetrial]
9542 ldr x5, [x5, #:got_lo12:ToshibaReadRetrial]
9544 ldr x2, [x2, #:got_lo12:g_maxRetryCount]
9555 ldr x1, [x1, #:got_lo12:g_maxRegNum]
9564 adrp x0, :got:SamsungReadRetrial
9565 ldr x0, [x0, #:got_lo12:SamsungReadRetrial]
9573 bl BuildFlashLsbPageTable
9575 ldr x0, [x21, #:got_lo12:IDByte]
9579 ldr x0, [x23, #:got_lo12:gFlashToggleModeEn]
9584 bl FlashSetInterfaceMode
9588 ldr x25, [x25, #:got_lo12:gFlashInterfaceMode]
9592 ldr x23, [x23, #:got_lo12:gFlashToggleModeEn]
9597 adrp x1, :got:gNandFlashInfoBlockAddr
9599 ldr x1, [x1, #:got_lo12:gNandFlashInfoBlockAddr]
9603 ldr x0, [x19, #:got_lo12:gpNandParaInfo]
9607 adrp x0, :got:gNandIDataBuf
9608 ldr x0, [x0, #:got_lo12:gNandIDataBuf]
9609 bl FlashReadIdbDataRaw
9612 ldr x24, [x0, #:got_lo12:gNandIDBResBlkNumSaveInFlash]
9613 ldr x0, [x20, #:got_lo12:gNandIDBResBlkNum]
9620 ldr x0, [x20, #:got_lo12:gNandIDBResBlkNum]
9625 ldr x0, [x20, #:got_lo12:gNandIDBResBlkNum]
9630 movk w0, 0x2, lsl 16
9633 ldr x19, [x19, #:got_lo12:gpNandParaInfo]
9634 adrp x0, :got:gNandPhyInfo
9636 ldr x0, [x0, #:got_lo12:gNandPhyInfo]
9642 ldr x21, [x21, #:got_lo12:IDByte]
9645 adrp x1, :got:gNandMaxDie
9646 ldr x1, [x1, #:got_lo12:gNandMaxDie]
9667 ldr x20, [x20, #:got_lo12:gNandIDBResBlkNum]
9670 ldr x22, [x22, #:got_lo12:g_slc2KBNand]
9693 ldp x19, x20, [sp,16]
9694 ldp x21, x22, [sp,32]
9695 ldp x23, x24, [sp,48]
9696 ldp x25, x26, [sp,64]
9697 ldp x27, x28, [sp,80]
9698 ldp x29, x30, [sp], 112
9700 .size FlashInit, .-FlashInit
9702 .global FlashPageProgMsbFFData
9703 .type FlashPageProgMsbFFData, %function
9704 FlashPageProgMsbFFData:
9705 stp x29, x30, [sp, -80]!
9706 adrp x3, :got:gpNandParaInfo
9708 stp x21, x22, [sp,32]
9710 ldr x0, [x3, #:got_lo12:gpNandParaInfo]
9711 stp x19, x20, [sp,16]
9712 stp x23, x24, [sp,48]
9713 stp x25, x26, [sp,64]
9730 adrp x24, :got:mlcPageToSlcPageTbl
9732 adrp x26, :got:gFlashPageBuffer1
9734 ldr x0, [x20, #:got_lo12:gpNandParaInfo]
9739 ldr x0, [x24, #:got_lo12:mlcPageToSlcPageTbl]
9740 ldrh w0, [x0,w19,sxtw 1]
9743 ldr x23, [x26, #:got_lo12:gFlashPageBuffer1]
9757 ldp x19, x20, [sp,16]
9758 ldp x21, x22, [sp,32]
9759 ldp x23, x24, [sp,48]
9760 ldp x25, x26, [sp,64]
9761 ldp x29, x30, [sp], 80
9763 .size FlashPageProgMsbFFData, .-FlashPageProgMsbFFData
9765 .global FlashProgPageDp
9766 .type FlashProgPageDp, %function
9768 stp x29, x30, [sp, -80]!
9770 stp x19, x20, [sp,16]
9772 adrp x0, :got:gNandParaInfo
9773 stp x23, x24, [sp,48]
9774 stp x21, x22, [sp,32]
9775 ldr x0, [x0, #:got_lo12:gNandParaInfo]
9783 bl NandcWaitFlashReady
9788 bl FlashProgFirstCmd
9794 adrp x21, :got:gBlockPageAlignSize
9798 bl FlashProgDpFirstCmd
9800 bl NandcWaitFlashReady
9801 ldr x21, [x21, #:got_lo12:gBlockPageAlignSize]
9805 bl FlashProgDpSecondCmd
9816 bl FlashProgSecondCmd
9818 bl NandcWaitFlashReady
9826 ldp x19, x20, [sp,16]
9827 ldp x21, x22, [sp,32]
9828 ldp x23, x24, [sp,48]
9829 ldp x29, x30, [sp], 80
9831 .size FlashProgPageDp, .-FlashProgPageDp
9833 .global FlashReadPages
9834 .type FlashReadPages, %function
9836 stp x29, x30, [sp, -160]!
9838 stp x23, x24, [sp,48]
9840 adrp x0, :got:gNandParaInfo
9841 stp x21, x22, [sp,32]
9842 stp x25, x26, [sp,64]
9843 ldr x0, [x0, #:got_lo12:gNandParaInfo]
9844 adrp x26, :got:gNandRandomizer
9845 stp x27, x28, [sp,80]
9846 stp x19, x20, [sp,16]
9852 ldr x0, [x26, #:got_lo12:gNandRandomizer]
9857 add x0, x0, :lo12:.LC93
9860 add x0, x0, :lo12:.LC94
9863 add x0, x0, :lo12:.LC92
9878 adrp x0, :got:gNandMaxDie
9880 ldr x0, [x0, #:got_lo12:gNandMaxDie]
9888 adrp x0, :got:DieCsIndex
9889 ldr x0, [x0, #:got_lo12:DieCsIndex]
9890 ldrb w20, [x0,w1,uxtw]
9891 adrp x0, :got:gMultiPageReadEn
9892 ldr x0, [x0, #:got_lo12:gMultiPageReadEn]
9896 csel w19, w19, wzr, ne
9897 bl NandcWaitFlashReady
9898 adrp x1, :got:gpNandParaInfo
9900 ldr x0, [x1, #:got_lo12:gpNandParaInfo]
9907 adrp x2, :got:gReadRetryInfo
9909 ldr x2, [x2, #:got_lo12:gReadRetryInfo]
9912 adrp x0, :got:read_retry_cur_offset
9913 ldr x0, [x0, #:got_lo12:read_retry_cur_offset]
9933 adrp x0, :got:gBlockPageAlignSize
9934 ldr x0, [x0, #:got_lo12:gBlockPageAlignSize]
9955 bl NandcReadDontCaseBusyEn
9958 ldr x0, [x26, #:got_lo12:gNandRandomizer]
9966 adrp x0, :got:gBlockPageAlignSize
9968 ldr x0, [x0, #:got_lo12:gBlockPageAlignSize]
9972 bl FlashReadDpDataOutCmd
9985 csel w19, w19, wzr, ne
9989 ldr x0, [x26, #:got_lo12:gNandRandomizer]
9994 adrp x0, :got:gFlashToggleModeEn
9995 ldr x0, [x0, #:got_lo12:gFlashToggleModeEn]
9999 adrp x0, :got:gpReadRetrial
10000 ldr x0, [x0, #:got_lo12:gpReadRetrial]
10005 adrp x0, :got:gpNandc
10010 ldr x0, [x0, #:got_lo12:gpNandc]
10014 bl FlashDdrTunningRead
10018 adrp x1, :got:gNandFlashEccBits
10019 ldr x1, [x1, #:got_lo12:gNandFlashEccBits]
10040 ldr x0, [x0, #:got_lo12:gpNandParaInfo]
10047 adrp x2, :got:gReadRetryInfo
10050 ldr x2, [x2, #:got_lo12:gReadRetryInfo]
10060 bl FlashReadRawPage
10062 adrp x2, :got:gNandFlashEccBits
10066 ldr x2, [x2, #:got_lo12:gNandFlashEccBits]
10075 bl FlashReadRawPage
10081 adrp x0, :got:gNandFlashEccBits
10082 ldr x0, [x0, #:got_lo12:gNandFlashEccBits]
10084 add w0, w0, w0, lsl 1
10087 adrp x0, :got:gpReadRetrial
10088 ldr x0, [x0, #:got_lo12:gpReadRetrial]
10092 csel w28, w28, w0, ne
10107 adrp x2, :got:gNandFlashEccBits
10110 ldr x2, [x2, #:got_lo12:gNandFlashEccBits]
10118 bl rknand_print_hex
10121 adrp x0, :got:gNandFlashEccBits
10122 ldr x0, [x0, #:got_lo12:gNandFlashEccBits]
10124 add w0, w0, w0, lsl 1
10127 adrp x0, :got:gpReadRetrial
10128 ldr x0, [x0, #:got_lo12:gpReadRetrial]
10132 csel w23, w23, w0, ne
10153 bl NandcWaitFlashReady
10157 bl FlashReadDpDataOutCmd
10161 ldp x19, x20, [sp,16]
10162 ldp x21, x22, [sp,32]
10163 ldp x23, x24, [sp,48]
10164 ldp x25, x26, [sp,64]
10165 ldp x27, x28, [sp,80]
10166 ldp x29, x30, [sp], 160
10168 .size FlashReadPages, .-FlashReadPages
10170 .global FlashLoadFactorBbt
10171 .type FlashLoadFactorBbt, %function
10172 FlashLoadFactorBbt:
10173 adrp x0, :got:gNandPhyInfo
10175 stp x29, x30, [sp, -192]!
10177 ldr x0, [x0, #:got_lo12:gNandPhyInfo]
10178 stp x23, x24, [sp,48]
10179 stp x25, x26, [sp,64]
10180 stp x27, x28, [sp,80]
10181 stp x19, x20, [sp,16]
10182 stp x21, x22, [sp,32]
10183 adrp x23, :got:FbbtBlk
10184 adrp x24, :got:gFlashSpareBuffer
10189 ldr x0, [x23, #:got_lo12:FbbtBlk]
10191 add x26, x26, :lo12:.LC95
10196 ldr x0, [x24, #:got_lo12:gFlashSpareBuffer]
10207 adrp x22, :got:gNandMaxDie
10208 ldr x1, [x22, #:got_lo12:gNandMaxDie]
10235 ldr x0, [x24, #:got_lo12:gFlashSpareBuffer]
10246 ldr x0, [x23, #:got_lo12:FbbtBlk]
10248 strh w20, [x0,w19,sxtw 1]
10256 ldr x22, [x22, #:got_lo12:gNandMaxDie]
10261 csel w27, w27, wzr, ne
10265 ldp x19, x20, [sp,16]
10266 ldp x21, x22, [sp,32]
10267 ldp x23, x24, [sp,48]
10268 ldp x25, x26, [sp,64]
10269 ldp x27, x28, [sp,80]
10270 ldp x29, x30, [sp], 192
10272 .size FlashLoadFactorBbt, .-FlashLoadFactorBbt
10274 .global FtlLoadFactoryBbt
10275 .type FtlLoadFactoryBbt, %function
10277 adrp x1, :got:p_sys_data_buf
10278 adrp x0, :got:req_sys
10279 stp x29, x30, [sp, -112]!
10281 ldr x1, [x1, #:got_lo12:p_sys_data_buf]
10282 stp x21, x22, [sp,32]
10283 stp x25, x26, [sp,64]
10284 stp x27, x28, [sp,80]
10285 stp x19, x20, [sp,16]
10286 stp x23, x24, [sp,48]
10287 ldr x2, [x0, #:got_lo12:req_sys]
10288 adrp x20, :got:gBbtInfo
10292 adrp x25, :got:c_ftl_nand_die_num
10294 adrp x1, :got:p_sys_spare_buf
10296 adrp x27, :got:c_ftl_nand_blks_per_die
10298 ldr x1, [x1, #:got_lo12:p_sys_spare_buf]
10301 ldr x20, [x20, #:got_lo12:gBbtInfo]
10303 ldr x0, [x25, #:got_lo12:c_ftl_nand_die_num]
10308 adrp x3, :got:c_ftl_nand_blks_per_die
10309 ldr x0, [x27, #:got_lo12:c_ftl_nand_blks_per_die]
10314 ldr x0, [x3, #:got_lo12:c_ftl_nand_blks_per_die]
10319 ldr x23, [x22, #:got_lo12:req_sys]
10320 madd w1, w21, w1, w19
10347 ldp x19, x20, [sp,16]
10348 ldp x21, x22, [sp,32]
10349 ldp x23, x24, [sp,48]
10350 ldp x25, x26, [sp,64]
10351 ldp x27, x28, [sp,80]
10352 ldp x29, x30, [sp], 112
10354 .size FtlLoadFactoryBbt, .-FtlLoadFactoryBbt
10356 .global FtlGetLastWrittenPage
10357 .type FtlGetLastWrittenPage, %function
10358 FtlGetLastWrittenPage:
10359 stp x29, x30, [sp, -208]!
10362 stp x23, x24, [sp,48]
10363 stp x19, x20, [sp,16]
10364 stp x21, x22, [sp,32]
10365 stp x25, x26, [sp,64]
10368 adrp x1, :got:c_ftl_nand_page_pre_slc_blk
10369 ldr x1, [x1, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
10372 adrp x1, :got:c_ftl_nand_page_pre_blk
10373 ldr x1, [x1, #:got_lo12:c_ftl_nand_page_pre_blk]
10424 ldp x19, x20, [sp,16]
10425 ldp x21, x22, [sp,32]
10426 ldp x23, x24, [sp,48]
10427 ldp x25, x26, [sp,64]
10428 ldp x29, x30, [sp], 208
10430 .size FtlGetLastWrittenPage, .-FtlGetLastWrittenPage
10433 .type FtlLoadBbt, %function
10435 stp x29, x30, [sp, -64]!
10436 adrp x0, :got:p_sys_spare_buf
10438 stp x21, x22, [sp,32]
10439 adrp x21, :got:req_sys
10440 stp x23, x24, [sp,48]
10441 stp x19, x20, [sp,16]
10442 ldr x1, [x21, #:got_lo12:req_sys]
10443 adrp x23, :got:c_ftl_nand_blks_per_die
10446 ldr x0, [x0, #:got_lo12:p_sys_spare_buf]
10450 ldr x0, [x23, #:got_lo12:c_ftl_nand_blks_per_die]
10455 ldr x0, [x23, #:got_lo12:c_ftl_nand_blks_per_die]
10460 ldr x22, [x21, #:got_lo12:req_sys]
10478 ldr x0, [x21, #:got_lo12:req_sys]
10485 adrp x0, :got:gBbtInfo
10487 ldr x0, [x0, #:got_lo12:gBbtInfo]
10498 adrp x19, :got:gBbtInfo
10501 ldr x22, [x19, #:got_lo12:gBbtInfo]
10508 ldr x23, [x21, #:got_lo12:req_sys]
10532 ldr x23, [x19, #:got_lo12:gBbtInfo]
10534 adrp x24, :got:p_sys_data_buf
10536 bl FtlGetLastWrittenPage
10541 tbnz w22, #31, .L1410
10542 ldr x0, [x19, #:got_lo12:gBbtInfo]
10544 ldr x23, [x21, #:got_lo12:req_sys]
10547 orr w0, w22, w0, lsl 10
10549 ldr x0, [x24, #:got_lo12:p_sys_data_buf]
10558 ldr x0, [x19, #:got_lo12:gBbtInfo]
10571 adrp x1, :got:c_ftl_nand_sys_blks_per_plane
10572 ldr x1, [x1, #:got_lo12:c_ftl_nand_sys_blks_per_plane]
10576 adrp x1, :got:c_ftl_nand_blk_pre_plane
10577 ldr x1, [x1, #:got_lo12:c_ftl_nand_blk_pre_plane]
10584 bl FtlSysBlkNumInit
10587 adrp x22, :got:c_ftl_nand_die_num
10588 adrp x23, :got:c_ftl_nand_bbm_buf_size
10590 ldr x0, [x22, #:got_lo12:c_ftl_nand_die_num]
10596 ldr x0, [x23, #:got_lo12:c_ftl_nand_bbm_buf_size]
10597 ldr x3, [x21, #:got_lo12:req_sys]
10599 ldr x0, [x19, #:got_lo12:gBbtInfo]
10601 add x0, x0, x20, lsl 3
10605 add x1, x3, x1, lsl 2
10611 ldp x19, x20, [sp,16]
10612 ldp x21, x22, [sp,32]
10613 ldp x23, x24, [sp,48]
10614 ldp x29, x30, [sp], 64
10616 .size FtlLoadBbt, .-FtlLoadBbt
10618 .global load_l2p_region
10619 .type load_l2p_region, %function
10621 stp x29, x30, [sp, -48]!
10624 stp x21, x22, [sp,32]
10626 adrp x0, :got:p_map_region_ppn_table
10627 stp x19, x20, [sp,16]
10628 ubfiz x2, x21, 2, 16
10629 adrp x20, :got:p_l2p_ram_map
10630 ldr x0, [x0, #:got_lo12:p_map_region_ppn_table]
10634 ldr x20, [x20, #:got_lo12:p_l2p_ram_map]
10635 adrp x2, :got:c_ftl_nand_byte_pre_page
10639 ldr x2, [x2, #:got_lo12:c_ftl_nand_byte_pre_page]
10651 adrp x0, :got:req_sys
10653 ldr x0, [x0, #:got_lo12:req_sys]
10655 ldr x20, [x20, #:got_lo12:p_l2p_ram_map]
10660 adrp x1, :got:p_sys_spare_buf
10661 ldr x1, [x1, #:got_lo12:p_sys_spare_buf]
10674 ldp x19, x20, [sp,16]
10675 ldp x21, x22, [sp,32]
10676 ldp x29, x30, [sp], 48
10678 .size load_l2p_region, .-load_l2p_region
10680 .global FtlVendorPartRead
10681 .type FtlVendorPartRead, %function
10683 stp x29, x30, [sp, -176]!
10685 stp x21, x22, [sp,32]
10687 adrp x0, :got:c_ftl_nand_sec_pre_page_shift
10688 stp x19, x20, [sp,16]
10689 stp x23, x24, [sp,48]
10690 ldr x0, [x0, #:got_lo12:c_ftl_nand_sec_pre_page_shift]
10692 stp x25, x26, [sp,64]
10693 stp x27, x28, [sp,80]
10697 adrp x0, :got:c_ftl_vendor_part_size
10699 ldr x0, [x0, #:got_lo12:c_ftl_vendor_part_size]
10706 adrp x26, :got:p_vendor_data_buf
10709 adrp x0, :got:p_vendor_region_ppn_table
10710 ldr x0, [x0, #:got_lo12:p_vendor_region_ppn_table]
10712 ldr w1, [x0,w24,uxtw 2]
10713 adrp x0, :got:c_ftl_nand_sec_pre_page
10714 ldr x0, [x0, #:got_lo12:c_ftl_nand_sec_pre_page]
10718 msub w27, w27, w19, w22
10722 csel w19, w0, w19, hi
10725 ldr x5, [x26, #:got_lo12:p_vendor_data_buf]
10726 ubfiz x27, x27, 9, 16
10742 csinv w20, w20, wzr, ne
10754 add x23, x23, x28, sxtw
10758 ldp x19, x20, [sp,16]
10759 ldp x21, x22, [sp,32]
10760 ldp x23, x24, [sp,48]
10761 ldp x25, x26, [sp,64]
10762 ldp x27, x28, [sp,80]
10763 ldp x29, x30, [sp], 176
10765 .size FtlVendorPartRead, .-FtlVendorPartRead
10767 .global FtlLoadEctTbl
10768 .type FtlLoadEctTbl, %function
10770 stp x29, x30, [sp, -32]!
10773 stp x19, x20, [sp,16]
10774 adrp x20, :got:g_ect_tbl_info_size
10775 adrp x19, :got:gp_ect_tbl_info
10776 ldr x20, [x20, #:got_lo12:g_ect_tbl_info_size]
10777 ldr x19, [x19, #:got_lo12:gp_ect_tbl_info]
10780 bl FtlVendorPartRead
10784 movk w0, 0x4254, lsl 16
10789 add x1, x1, :lo12:.LC96
10790 add x0, x0, :lo12:.LC72
10799 ldp x19, x20, [sp,16]
10800 ldp x29, x30, [sp], 32
10802 .size FtlLoadEctTbl, .-FtlLoadEctTbl
10804 .global Ftl_load_ext_data
10805 .type Ftl_load_ext_data, %function
10807 stp x29, x30, [sp, -32]!
10811 stp x19, x20, [sp,16]
10812 adrp x19, :got:g_sys_ext_data
10813 ldr x20, [x19, #:got_lo12:g_sys_ext_data]
10815 bl FtlVendorPartRead
10818 movk w0, 0x4654, lsl 16
10826 movk w0, 0x4654, lsl 16
10829 ldr x0, [x19, #:got_lo12:g_sys_ext_data]
10831 movk w1, 0x4654, lsl 16
10832 adrp x20, :got:g_totle_slc_erase_count
10836 adrp x1, :got:g_totle_write_sector
10838 ldr x1, [x1, #:got_lo12:g_totle_write_sector]
10840 adrp x1, :got:g_totle_read_sector
10842 ldr x1, [x1, #:got_lo12:g_totle_read_sector]
10844 adrp x1, :got:g_totle_gc_page_count
10846 ldr x1, [x1, #:got_lo12:g_totle_gc_page_count]
10848 adrp x1, :got:g_totle_write_page_count
10850 ldr x1, [x1, #:got_lo12:g_totle_write_page_count]
10852 adrp x1, :got:g_totle_read_page_count
10854 ldr x1, [x1, #:got_lo12:g_totle_read_page_count]
10856 adrp x1, :got:g_totle_l2p_write_count
10858 ldr x1, [x1, #:got_lo12:g_totle_l2p_write_count]
10861 ldr x1, [x20, #:got_lo12:g_totle_slc_erase_count]
10863 adrp x1, :got:g_totle_sys_slc_erase_count
10865 ldr x1, [x1, #:got_lo12:g_totle_sys_slc_erase_count]
10867 adrp x1, :got:g_totle_discard_page_count
10869 ldr x1, [x1, #:got_lo12:g_totle_discard_page_count]
10871 adrp x1, :got:g_totle_cache_write_count
10873 ldr x1, [x1, #:got_lo12:g_totle_cache_write_count]
10875 adrp x1, :got:g_max_erase_count
10877 ldr x1, [x1, #:got_lo12:g_max_erase_count]
10879 adrp x1, :got:g_min_erase_count
10880 ldr x1, [x1, #:got_lo12:g_min_erase_count]
10884 adrp x1, :got:g_all_blk_used_slc_mode
10885 ldr x1, [x1, #:got_lo12:g_all_blk_used_slc_mode]
10888 adrp x0, :got:g_SlcPartLbaEndSector
10889 ldr x0, [x0, #:got_lo12:g_SlcPartLbaEndSector]
10892 movk w0, 0x1234, lsl 16
10893 ldr x19, [x19, #:got_lo12:g_sys_ext_data]
10897 adrp x0, :got:g_inkDie_check_enable
10899 ldr x0, [x0, #:got_lo12:g_inkDie_check_enable]
10903 add x0, x0, :lo12:.LC72
10904 add x1, x1, :lo12:.LC97
10907 adrp x0, :got:c_mlc_erase_count_value
10908 ldr x2, [x20, #:got_lo12:g_totle_slc_erase_count]
10909 adrp x3, :got:g_totle_avg_erase_count
10910 ldr x0, [x0, #:got_lo12:c_mlc_erase_count_value]
10911 ldr x3, [x3, #:got_lo12:g_totle_avg_erase_count]
10913 adrp x0, :got:g_totle_mlc_erase_count
10914 ldr x0, [x0, #:got_lo12:g_totle_mlc_erase_count]
10917 madd w0, w1, w4, w0
10918 adrp x1, :got:c_ftl_nand_data_blks_per_plane
10919 ldr x1, [x1, #:got_lo12:c_ftl_nand_data_blks_per_plane]
10923 ldp x19, x20, [sp,16]
10924 ldp x29, x30, [sp], 32
10926 .size Ftl_load_ext_data, .-Ftl_load_ext_data
10928 .global FtlScanSysBlk
10929 .type FtlScanSysBlk, %function
10931 stp x29, x30, [sp, -160]!
10934 stp x19, x20, [sp,16]
10935 adrp x19, :got:g_totle_map_block
10936 stp x21, x22, [sp,32]
10937 stp x23, x24, [sp,48]
10938 ldr x0, [x19, #:got_lo12:g_totle_map_block]
10939 adrp x24, :got:p_map_block_ver_table
10940 stp x27, x28, [sp,80]
10941 stp x25, x26, [sp,64]
10942 adrp x28, :got:g_totle_vendor_block
10944 adrp x25, :got:c_ftl_nand_max_map_blks
10945 adrp x21, :got:p_map_block_table
10946 adrp x27, :got:c_ftl_nand_max_vendor_blks
10947 adrp x23, :got:p_vendor_block_ver_table
10948 ldr x0, [x28, #:got_lo12:g_totle_vendor_block]
10950 ldr x20, [x25, #:got_lo12:c_ftl_nand_max_map_blks]
10951 ldr x0, [x24, #:got_lo12:p_map_block_ver_table]
10956 ldr x0, [x21, #:got_lo12:p_map_block_table]
10959 adrp x20, :got:p_vendor_block_table
10963 ldr x22, [x27, #:got_lo12:c_ftl_nand_max_vendor_blks]
10964 ldr x0, [x23, #:got_lo12:p_vendor_block_ver_table]
10970 ldr x0, [x20, #:got_lo12:p_vendor_block_table]
10973 adrp x22, :got:gSysInfo
10977 ldr x0, [x22, #:got_lo12:gSysInfo]
10982 adrp x0, :got:c_ftl_nand_data_blks_per_plane
10986 ldr x0, [x0, #:got_lo12:c_ftl_nand_data_blks_per_plane]
10990 adrp x0, :got:c_ftl_nand_blk_pre_plane
10992 ldr x0, [x0, #:got_lo12:c_ftl_nand_blk_pre_plane]
10997 adrp x25, :got:c_ftl_nand_byte_pre_oob
11001 adrp x0, :got:c_ftl_nand_planes_num
11002 ldr x0, [x0, #:got_lo12:c_ftl_nand_planes_num]
11006 adrp x0, :got:p_plane_order_table
11008 ldr x0, [x0, #:got_lo12:p_plane_order_table]
11009 ldrb w0, [x0,w27,sxtw]
11012 bl FtlBbmIsBadBlock
11014 adrp x1, :got:req_read
11018 ldr x2, [x1, #:got_lo12:req_read]
11023 adrp x2, :got:p_gc_spare_buf
11026 ldr x0, [x25, #:got_lo12:c_ftl_nand_byte_pre_oob]
11027 ldr x2, [x2, #:got_lo12:p_gc_spare_buf]
11034 add x0, x2, x0, sxtw 2
11041 adrp x0, :got:req_read
11046 ldr x0, [x0, #:got_lo12:req_read]
11054 adrp x0, :got:req_read
11055 ldr x6, [x0, #:got_lo12:req_read]
11062 ubfx x25, x0, 10, 16
11083 adrp x0, :got:req_read
11084 ldr x0, [x0, #:got_lo12:req_read]
11089 adrp x0, :got:g_GlobalSysVersion
11090 ldr x0, [x0, #:got_lo12:g_GlobalSysVersion]
11101 adrp x1, :got:g_GlobalSysVersion
11103 ldr x1, [x1, #:got_lo12:g_GlobalSysVersion]
11115 ldr x6, [x23, #:got_lo12:p_vendor_block_ver_table]
11116 ldr x0, [x0, #:got_lo12:c_ftl_nand_max_vendor_blks]
11121 ldr x0, [x0, #:got_lo12:g_totle_vendor_block]
11137 ldr x6, [x24, #:got_lo12:p_map_block_ver_table]
11138 ldr x0, [x0, #:got_lo12:c_ftl_nand_max_map_blks]
11141 ldr x0, [x19, #:got_lo12:g_totle_map_block]
11152 sbfiz x7, x2, 2, 32
11163 ldr x0, [x21, #:got_lo12:p_map_block_table]
11170 bl FtlFreeSysBlkQueueIn
11176 ldr x1, [x19, #:got_lo12:g_totle_map_block]
11184 ldr x1, [x24, #:got_lo12:p_map_block_ver_table]
11194 ldr x5, [x21, #:got_lo12:p_map_block_table]
11201 ldr x0, [x24, #:got_lo12:p_map_block_ver_table]
11205 ldr x0, [x21, #:got_lo12:p_map_block_table]
11207 strh w25, [x0,x8,lsl 1]
11208 tbz w2, #31, .L1518
11215 tbz w2, #31, .L1473
11219 ldr x0, [x19, #:got_lo12:g_totle_map_block]
11220 ldr x1, [x1, #:got_lo12:c_ftl_nand_max_map_blks]
11228 ldr x1, [x19, #:got_lo12:g_totle_map_block]
11233 ldr x0, [x24, #:got_lo12:p_map_block_ver_table]
11235 str w1, [x0,x2,lsl 2]
11236 ldr x0, [x21, #:got_lo12:p_map_block_table]
11239 sbfiz x7, x2, 2, 32
11257 ldr x0, [x20, #:got_lo12:p_vendor_block_table]
11264 bl FtlFreeSysBlkQueueIn
11272 ldr x1, [x1, #:got_lo12:g_totle_vendor_block]
11279 ldr x1, [x23, #:got_lo12:p_vendor_block_ver_table]
11289 ldr x5, [x20, #:got_lo12:p_vendor_block_table]
11296 ldr x0, [x23, #:got_lo12:p_vendor_block_ver_table]
11300 ldr x0, [x20, #:got_lo12:p_vendor_block_table]
11302 strh w25, [x0,x8,lsl 1]
11304 tbnz w2, #31, .L1453
11306 ldr x5, [x0, #:got_lo12:g_totle_vendor_block]
11309 ldr x0, [x0, #:got_lo12:c_ftl_nand_max_vendor_blks]
11319 ldr x0, [x23, #:got_lo12:p_vendor_block_ver_table]
11321 str w1, [x0,x2,lsl 2]
11322 ldr x0, [x20, #:got_lo12:p_vendor_block_table]
11325 strh w25, [x0,x2,lsl 1]
11329 ldr x0, [x0, #:got_lo12:gSysInfo]
11337 bl FtlFreeSysBlkQueueIn
11341 ldr x0, [x0, #:got_lo12:gSysInfo]
11359 bl FtlFreeSysBlkQueueIn
11370 ldr x0, [x21, #:got_lo12:p_map_block_table]
11375 ldr x0, [x20, #:got_lo12:p_vendor_block_table]
11381 ldr x19, [x19, #:got_lo12:g_totle_map_block]
11385 ldr x2, [x2, #:got_lo12:c_ftl_nand_max_map_blks]
11390 ldrh w3, [x1,w0,sxtw 1]
11395 ldr x1, [x1, #:got_lo12:c_ftl_nand_max_map_blks]
11399 ldr x3, [x21, #:got_lo12:p_map_block_table]
11408 strh w7, [x4,x1,lsl 1]
11409 ldr x4, [x24, #:got_lo12:p_map_block_ver_table]
11411 ldr w5, [x4,x5,lsl 2]
11412 str w5, [x4,x1,lsl 2]
11422 ldr x1, [x1, #:got_lo12:g_totle_vendor_block]
11426 ldr x1, [x1, #:got_lo12:c_ftl_nand_max_vendor_blks]
11432 ldrh w3, [x2,w0,sxtw 1]
11436 ldr x1, [x1, #:got_lo12:c_ftl_nand_max_vendor_blks]
11440 ldr x3, [x20, #:got_lo12:p_vendor_block_table]
11449 strh w7, [x4,x1,lsl 1]
11450 ldr x4, [x23, #:got_lo12:p_vendor_block_ver_table]
11452 ldr w5, [x4,x5,lsl 2]
11453 str w5, [x4,x1,lsl 2]
11463 ldp x19, x20, [sp,16]
11464 ldp x21, x22, [sp,32]
11465 ldp x23, x24, [sp,48]
11466 ldp x25, x26, [sp,64]
11467 ldp x27, x28, [sp,80]
11468 ldp x29, x30, [sp], 160
11470 .size FtlScanSysBlk, .-FtlScanSysBlk
11472 .global FtlLoadSysInfo
11473 .type FtlLoadSysInfo, %function
11475 stp x29, x30, [sp, -80]!
11476 adrp x0, :got:p_sys_spare_buf
11478 stp x19, x20, [sp,16]
11479 adrp x20, :got:req_sys
11481 stp x21, x22, [sp,32]
11482 stp x23, x24, [sp,48]
11483 ldr x1, [x20, #:got_lo12:req_sys]
11484 adrp x22, :got:c_ftl_nand_data_blks_per_plane
11485 adrp x21, :got:p_valid_page_count_table
11486 adrp x23, :got:gSysInfo
11488 ldr x0, [x0, #:got_lo12:p_sys_spare_buf]
11491 ldr x1, [x22, #:got_lo12:c_ftl_nand_data_blks_per_plane]
11492 ldr x0, [x21, #:got_lo12:p_valid_page_count_table]
11498 ldr x24, [x23, #:got_lo12:gSysInfo]
11508 adrp x25, :got:p_sys_data_buf
11509 bl FtlGetLastWrittenPage
11514 tbnz w19, #31, .L1537
11515 ldr x0, [x23, #:got_lo12:gSysInfo]
11517 ldr x24, [x20, #:got_lo12:req_sys]
11520 orr w0, w19, w0, lsl 10
11522 ldr x0, [x25, #:got_lo12:p_sys_data_buf]
11531 adrp x24, :got:g_sys_save_data
11532 ldr x20, [x20, #:got_lo12:req_sys]
11534 ldr x19, [x24, #:got_lo12:g_sys_save_data]
11538 ldr x22, [x22, #:got_lo12:c_ftl_nand_data_blks_per_plane]
11539 ldr x21, [x21, #:got_lo12:p_valid_page_count_table]
11548 movk w0, 0x4654, lsl 16
11558 ldr x23, [x23, #:got_lo12:gSysInfo]
11559 adrp x0, :got:c_ftl_nand_die_num
11563 ldr x0, [x0, #:got_lo12:c_ftl_nand_die_num]
11567 adrp x0, :got:g_MaxLbn
11568 adrp x4, :got:c_ftl_nand_sec_pre_page
11570 adrp x20, :got:g_gc_superblock
11571 ldr x0, [x0, #:got_lo12:g_MaxLbn]
11573 adrp x0, :got:c_ftl_nand_page_pre_blk
11574 ldr x0, [x0, #:got_lo12:c_ftl_nand_page_pre_blk]
11576 adrp x0, :got:g_MaxLpn
11577 ldr x0, [x0, #:got_lo12:g_MaxLpn]
11580 adrp x0, :got:g_MaxLbaSector
11581 ldr x4, [x4, #:got_lo12:c_ftl_nand_sec_pre_page]
11582 ldr x0, [x0, #:got_lo12:g_MaxLbaSector]
11586 adrp x1, :got:c_ftl_nand_max_data_blks
11587 adrp x0, :got:gBbtInfo
11588 adrp x4, :got:c_ftl_nand_data_op_blks_per_plane
11589 ldr x1, [x1, #:got_lo12:c_ftl_nand_max_data_blks]
11590 ldr x0, [x0, #:got_lo12:gBbtInfo]
11591 ldr x4, [x4, #:got_lo12:c_ftl_nand_data_op_blks_per_plane]
11595 adrp x1, :got:c_ftl_nand_planes_num
11597 adrp x3, :got:g_active_superblock
11598 ldr x1, [x1, #:got_lo12:c_ftl_nand_planes_num]
11605 ldr x0, [x3, #:got_lo12:g_active_superblock]
11612 ldr x1, [x20, #:got_lo12:g_gc_superblock]
11617 adrp x1, :got:g_buffer_superblock
11619 ldr x4, [x1, #:got_lo12:g_buffer_superblock]
11627 adrp x0, :got:g_gc_temp_superblock
11631 ldr x4, [x0, #:got_lo12:g_gc_temp_superblock]
11640 adrp x4, :got:g_totle_gc_page_count
11642 ldr x4, [x4, #:got_lo12:g_totle_gc_page_count]
11644 adrp x4, :got:g_totle_write_page_count
11645 ldr x4, [x4, #:got_lo12:g_totle_write_page_count]
11647 adrp x4, :got:g_totle_read_page_count
11648 ldr x4, [x4, #:got_lo12:g_totle_read_page_count]
11650 adrp x4, :got:g_totle_l2p_write_count
11651 ldr x4, [x4, #:got_lo12:g_totle_l2p_write_count]
11653 adrp x4, :got:g_totle_mlc_erase_count
11654 ldr x4, [x4, #:got_lo12:g_totle_mlc_erase_count]
11656 adrp x4, :got:g_totle_slc_erase_count
11659 ldr x4, [x4, #:got_lo12:g_totle_slc_erase_count]
11661 adrp x4, :got:g_max_erase_count
11662 ldr x4, [x4, #:got_lo12:g_max_erase_count]
11664 adrp x4, :got:g_totle_cache_write_count
11665 ldr x4, [x4, #:got_lo12:g_totle_cache_write_count]
11667 adrp x4, :got:g_GlobalSysVersion
11668 ldr x4, [x4, #:got_lo12:g_GlobalSysVersion]
11674 adrp x0, :got:g_GlobalDataVersion
11675 ldr x2, [x2, #:got_lo12:g_sys_save_data]
11676 ldr x0, [x0, #:got_lo12:g_GlobalDataVersion]
11686 ldr x0, [x3, #:got_lo12:g_active_superblock]
11689 ldr x0, [x19, #:got_lo12:g_buffer_superblock]
11696 ldr x0, [x21, #:got_lo12:g_gc_temp_superblock]
11703 ldr x0, [x20, #:got_lo12:g_gc_superblock]
11713 ldp x19, x20, [sp,16]
11714 ldp x21, x22, [sp,32]
11715 ldp x23, x24, [sp,48]
11716 ldp x29, x30, [sp], 80
11718 .size FtlLoadSysInfo, .-FtlLoadSysInfo
11720 .global FtlGcScanTempBlk
11721 .type FtlGcScanTempBlk, %function
11723 stp x29, x30, [sp, -128]!
11725 stp x19, x20, [sp,16]
11726 adrp x19, .LANCHOR2
11727 stp x25, x26, [sp,64]
11729 add x0, x19, :lo12:.LANCHOR2
11730 stp x23, x24, [sp,48]
11731 stp x21, x22, [sp,32]
11732 stp x27, x28, [sp,80]
11743 adrp x0, :got:c_ftl_nand_page_pre_blk
11744 ldr x0, [x0, #:got_lo12:c_ftl_nand_page_pre_blk]
11749 bl FtlGcPageVarInit
11754 adrp x24, :got:req_read
11762 adrp x0, :got:c_ftl_nand_planes_num
11763 adrp x1, :got:c_ftl_nand_byte_pre_oob
11767 adrp x11, :got:p_gc_spare_buf
11768 ldr x0, [x0, #:got_lo12:c_ftl_nand_planes_num]
11769 ldr x1, [x1, #:got_lo12:c_ftl_nand_byte_pre_oob]
11772 add x6, x26, x6, lsl 1
11779 ldr x8, [x24, #:got_lo12:req_read]
11781 orr w1, w25, w1, lsl 10
11793 ldr x7, [x11, #:got_lo12:p_gc_spare_buf]
11795 add x1, x7, x1, sxtw 2
11801 ldr x0, [x24, #:got_lo12:req_read]
11812 adrp x0, :got:req_read
11814 ldr x8, [x0, #:got_lo12:req_read]
11835 adrp x0, :got:ftl_gc_temp_power_lost_recovery_flag
11837 ldr x0, [x0, #:got_lo12:ftl_gc_temp_power_lost_recovery_flag]
11846 adrp x0, :got:g_inkDie_check_enable
11847 ldr x0, [x0, #:got_lo12:g_inkDie_check_enable]
11850 adrp x0, :got:p_erase_count_table
11852 ldr x0, [x0, #:got_lo12:p_erase_count_table]
11854 ldrh w0, [x0,x1,lsl 1]
11863 adrp x0, :got:p_valid_page_count_table
11866 ldr x0, [x0, #:got_lo12:p_valid_page_count_table]
11868 strh wzr, [x0,x1,lsl 1]
11870 bl INSERT_FREE_LIST
11873 bl FtlGcPageVarInit
11879 adrp x0, :got:c_ftl_nand_page_pre_blk
11883 ldr x0, [x0, #:got_lo12:c_ftl_nand_page_pre_blk]
11889 add x2, x19, :lo12:.LANCHOR2
11895 ldr x1, [x0, #:got_lo12:c_ftl_nand_page_pre_blk]
11903 add x19, x19, :lo12:.LANCHOR2
11910 bl ftl_sb_update_avl_pages
11913 ldp x19, x20, [sp,16]
11914 ldp x21, x22, [sp,32]
11915 ldp x23, x24, [sp,48]
11916 ldp x25, x26, [sp,64]
11917 ldp x27, x28, [sp,80]
11918 ldp x29, x30, [sp], 128
11920 .size FtlGcScanTempBlk, .-FtlGcScanTempBlk
11922 .global FlashProgPages
11923 .type FlashProgPages, %function
11925 stp x29, x30, [sp, -192]!
11927 stp x19, x20, [sp,16]
11929 adrp x0, :got:gpNandParaInfo
11930 stp x21, x22, [sp,32]
11931 stp x23, x24, [sp,48]
11932 ldr x0, [x0, #:got_lo12:gpNandParaInfo]
11934 stp x25, x26, [sp,64]
11935 stp x27, x28, [sp,80]
11942 adrp x0, :got:gNandParaInfo
11943 ldr x0, [x0, #:got_lo12:gNandParaInfo]
11953 adrp x20, :got:gNandMaxDie
11955 umull x20, w21, w27
11964 adrp x1, :got:gNandMaxDie
11966 ldr x1, [x1, #:got_lo12:gNandMaxDie]
11974 adrp x1, :got:gMultiPageProgEn
11975 adrp x22, :got:gDieOp
11976 ldr x1, [x1, #:got_lo12:gMultiPageProgEn]
11977 ldr x3, [x22, #:got_lo12:gDieOp]
11982 csel w23, w23, wzr, ne
11983 madd x0, x1, x0, x3
11988 adrp x0, :got:gpNandc
11989 ldr x0, [x0, #:got_lo12:gpNandc]
11991 bl NandcIqrWaitFlashReady
11994 bl FlashWaitCmdDone
11996 ldr x2, [x22, #:got_lo12:gDieOp]
11999 madd x0, x1, x0, x2
12010 adrp x0, :got:DieCsIndex
12011 ldr x22, [x22, #:got_lo12:gDieOp]
12012 ldr x0, [x0, #:got_lo12:DieCsIndex]
12016 adrp x0, :got:gNandMaxDie
12018 ldr x0, [x0, #:got_lo12:gNandMaxDie]
12023 bl NandcWaitFlashReady
12027 adrp x0, :got:DieAddrs
12029 ldr x0, [x0, #:got_lo12:DieAddrs]
12030 ldr w0, [x0,x1,lsl 2]
12035 bl FlashWaitReadyEN
12042 adrp x0, :got:read_retry_cur_offset
12043 ldr x0, [x0, #:got_lo12:read_retry_cur_offset]
12044 ldrb w0, [x0,w20,sxtw]
12046 adrp x2, :got:gReadRetryInfo
12049 ldr x2, [x2, #:got_lo12:gReadRetryInfo]
12058 bl FlashProgFirstCmd
12068 bl FlashProgDpFirstCmd
12069 adrp x0, :got:DieAddrs
12071 ldr x0, [x0, #:got_lo12:DieAddrs]
12072 ldr w0, [x0,x1,lsl 2]
12077 bl FlashWaitReadyEN
12078 adrp x0, :got:gBlockPageAlignSize
12080 ldr x0, [x0, #:got_lo12:gBlockPageAlignSize]
12084 bl FlashProgDpSecondCmd
12098 bl FlashProgSecondCmd
12105 adrp x0, :got:gpNandc
12107 ldr x0, [x0, #:got_lo12:gpNandc]
12109 bl NandcIqrWaitFlashReady
12111 ldr x0, [x20, #:got_lo12:gNandMaxDie]
12117 bl FlashWaitCmdDone
12126 add x23, x23, :lo12:.LC101
12127 add x25, x25, :lo12:.LC100
12128 add x27, x27, :lo12:.LC99
12137 add x0, x0, :lo12:.LC98
12146 adrp x20, :got:gFlashProgCheckBuffer
12147 adrp x21, :got:gFlashProgCheckSpareBuffer
12149 ldr x4, [x20, #:got_lo12:gFlashProgCheckBuffer]
12156 ldr x28, [x21, #:got_lo12:gFlashProgCheckSpareBuffer]
12181 ldr x21, [x21, #:got_lo12:gFlashProgCheckSpareBuffer]
12195 ldr x20, [x20, #:got_lo12:gFlashProgCheckBuffer]
12212 ldp x19, x20, [sp,16]
12213 ldp x21, x22, [sp,32]
12214 ldp x23, x24, [sp,48]
12215 ldp x25, x26, [sp,64]
12216 ldp x27, x28, [sp,80]
12217 ldp x29, x30, [sp], 192
12219 .size FlashProgPages, .-FlashProgPages
12221 .type FlashTestBlk.part.19, %function
12222 FlashTestBlk.part.19:
12223 stp x29, x30, [sp, -176]!
12227 stp x19, x20, [sp,16]
12228 adrp x20, :got:gFlashPageBuffer1
12233 ldr x20, [x20, #:got_lo12:gFlashPageBuffer1]
12246 bl FlashEraseBlocks
12257 bl FlashEraseBlocks
12260 ldp x19, x20, [sp,16]
12261 ldp x29, x30, [sp], 176
12263 .size FlashTestBlk.part.19, .-FlashTestBlk.part.19
12265 .global FlashTestBlk
12266 .type FlashTestBlk, %function
12268 adrp x1, :got:gNandFlashIdbBlockAddr
12270 stp x29, x30, [sp, -16]!
12273 ldr x1, [x1, #:got_lo12:gNandFlashIdbBlockAddr]
12278 bl FlashTestBlk.part.19
12280 ldp x29, x30, [sp], 16
12282 .size FlashTestBlk, .-FlashTestBlk
12284 .global FlashMakeFactorBbt
12285 .type FlashMakeFactorBbt, %function
12286 FlashMakeFactorBbt:
12287 adrp x5, :got:gFlashSpareBuffer
12288 adrp x4, :got:gNandPhyInfo
12289 stp x29, x30, [sp, -256]!
12290 adrp x3, :got:gpNandParaInfo
12291 adrp x2, :got:gBlockPageAlignSize
12293 ldr x0, [x5, #:got_lo12:gFlashSpareBuffer]
12294 stp x19, x20, [sp,16]
12295 stp x21, x22, [sp,32]
12296 stp x23, x24, [sp,48]
12297 stp x25, x26, [sp,64]
12298 stp x27, x28, [sp,80]
12299 ldr x1, [x4, #:got_lo12:gNandPhyInfo]
12305 adrp x1, :got:g_slc2KBNand
12309 ldr x0, [x3, #:got_lo12:gpNandParaInfo]
12317 ldr x0, [x2, #:got_lo12:gBlockPageAlignSize]
12319 ldr x0, [x1, #:got_lo12:g_slc2KBNand]
12320 ubfiz w1, w25, 1, 15
12324 csel w25, w1, w25, eq
12325 add x0, x0, :lo12:.LC102
12331 ldr x0, [x0, #:got_lo12:gFlashSpareBuffer]
12347 adrp x0, :got:gNandMaxDie
12349 ldr x1, [x0, #:got_lo12:gNandMaxDie]
12353 adrp x0, :got:FbbtBlk
12356 ldr x1, [x0, #:got_lo12:FbbtBlk]
12357 ldrh w20, [x1,w19,sxtw 1]
12360 adrp x21, :got:gFlashPageBuffer0
12363 ldr x1, [x1, #:got_lo12:gNandPhyInfo]
12364 ldr x0, [x21, #:got_lo12:gFlashPageBuffer0]
12370 adrp x0, :got:DieCsIndex
12371 ldr x0, [x0, #:got_lo12:DieCsIndex]
12386 adrp x0, :got:DieAddrs
12388 ldr x0, [x0, #:got_lo12:DieAddrs]
12389 ldr w3, [x0,x24,lsl 2]
12397 ldr x0, [x0, #:got_lo12:g_slc2KBNand]
12403 ldr x0, [x0, #:got_lo12:gBlockPageAlignSize]
12417 ldr x0, [x0, #:got_lo12:gpNandParaInfo]
12420 adrp x0, :got:DieAddrs
12422 ldr x0, [x0, #:got_lo12:DieAddrs]
12423 ldr w0, [x0,x24,lsl 2]
12431 ldr x0, [x0, #:got_lo12:gpNandParaInfo]
12455 adrp x0, :got:DieAddrs
12456 ldr x0, [x0, #:got_lo12:DieAddrs]
12457 ldr w1, [x0,x24,lsl 2]
12460 bl SandiskProgTestBadBlock
12466 add x0, x0, :lo12:.LC103
12469 ldr x0, [x21, #:got_lo12:gFlashPageBuffer0]
12470 ubfx x1, x28, 5, 11
12481 ldr x0, [x0, #:got_lo12:gNandMaxDie]
12493 add x0, x0, :lo12:.LC104
12498 ldr x0, [x0, #:got_lo12:gNandMaxDie]
12504 ldr x0, [x21, #:got_lo12:gFlashPageBuffer0]
12505 ldr x1, [x1, #:got_lo12:gNandPhyInfo]
12513 adrp x27, :got:gNandFlashIdbBlockAddr
12516 adrp x26, :got:gNandIDBResBlkNum
12517 add x23, x23, :lo12:.LC105
12518 ldr x0, [x27, #:got_lo12:gNandFlashIdbBlockAddr]
12521 ldr x0, [x26, #:got_lo12:gNandIDBResBlkNum]
12531 ldr x0, [x21, #:got_lo12:gFlashPageBuffer0]
12532 ubfx x1, x28, 5, 11
12547 ldr x27, [x27, #:got_lo12:gNandFlashIdbBlockAddr]
12553 ldr x0, [x21, #:got_lo12:gFlashPageBuffer0]
12554 ldr x1, [x1, #:got_lo12:gNandPhyInfo]
12564 add x23, x23, :lo12:.LC106
12572 ldr x0, [x21, #:got_lo12:gFlashPageBuffer0]
12575 ubfx x0, x27, 5, 11
12576 ldr w1, [x2,x0,lsl 2]
12585 ldr x1, [x1, #:got_lo12:FbbtBlk]
12586 strh w27, [x1,x24,lsl 1]
12593 ldr x0, [x21, #:got_lo12:gFlashPageBuffer0]
12597 ldr x0, [x0, #:got_lo12:gFlashSpareBuffer]
12603 bl FlashEraseBlocks
12619 ldp x19, x20, [sp,16]
12620 ldp x21, x22, [sp,32]
12621 ldp x23, x24, [sp,48]
12622 ldp x25, x26, [sp,64]
12623 ldp x27, x28, [sp,80]
12624 ldp x29, x30, [sp], 256
12626 .size FlashMakeFactorBbt, .-FlashMakeFactorBbt
12628 .global FtlLowFormatEraseBlock
12629 .type FtlLowFormatEraseBlock, %function
12630 FtlLowFormatEraseBlock:
12631 stp x29, x30, [sp, -128]!
12633 stp x21, x22, [sp,32]
12635 adrp x0, :got:g_cur_erase_blk
12636 stp x19, x20, [sp,16]
12637 stp x23, x24, [sp,48]
12638 ldr x0, [x0, #:got_lo12:g_cur_erase_blk]
12640 stp x25, x26, [sp,64]
12641 stp x27, x28, [sp,80]
12647 adrp x26, :got:p_plane_order_table
12648 adrp x27, :got:c_ftl_nand_byte_pre_oob
12651 adrp x0, :got:c_ftl_nand_planes_num
12652 ldr x0, [x0, #:got_lo12:c_ftl_nand_planes_num]
12656 adrp x1, :got:req_erase
12658 ldr x1, [x1, #:got_lo12:req_erase]
12662 ldr x0, [x26, #:got_lo12:p_plane_order_table]
12663 ldrb w0, [x0,w25,sxtw]
12670 bl FtlBbmIsBadBlock
12672 adrp x1, :got:req_erase
12675 ldr x1, [x1, #:got_lo12:req_erase]
12679 adrp x3, :got:p_io_spare_buf
12683 ldr x0, [x27, #:got_lo12:c_ftl_nand_byte_pre_oob]
12684 ldr x3, [x3, #:got_lo12:p_io_spare_buf]
12691 add x0, x3, x0, sxtw 2
12696 bl IsBlkInVendorPart
12709 adrp x22, :got:req_erase
12713 ldr x0, [x22, #:got_lo12:req_erase]
12715 bl FlashEraseBlocks
12719 ldr x1, [x22, #:got_lo12:req_erase]
12730 bl FtlBbmMapBadBlock
12738 adrp x0, :got:g_inkDie_check_enable
12739 ldr x0, [x0, #:got_lo12:g_inkDie_check_enable]
12742 adrp x0, :got:c_ftl_nand_page_pre_slc_blk
12745 ldr x0, [x0, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
12764 adrp x0, :got:c_ftl_nand_planes_num
12765 ldr x0, [x0, #:got_lo12:c_ftl_nand_planes_num]
12769 ldr x1, [x22, #:got_lo12:req_erase]
12773 adrp x0, :got:p_plane_order_table
12775 ldr x0, [x0, #:got_lo12:p_plane_order_table]
12776 ldrb w0, [x0,w23,sxtw]
12784 bl FtlBbmIsBadBlock
12786 ldr x4, [x22, #:got_lo12:req_erase]
12791 add w3, w24, w2, lsl 10
12796 adrp x0, :got:p_io_data_buf_0
12797 ldr x0, [x0, #:got_lo12:p_io_data_buf_0]
12800 adrp x0, :got:c_ftl_nand_byte_pre_oob
12801 ldr x0, [x0, #:got_lo12:c_ftl_nand_byte_pre_oob]
12806 adrp x2, :got:p_io_data_buf_1
12808 ldr x3, [x2, #:got_lo12:p_io_data_buf_1]
12810 add x0, x3, x0, sxtw 2
12815 bl IsBlkInVendorPart
12824 ldr x0, [x22, #:got_lo12:req_erase]
12834 ldr x1, [x22, #:got_lo12:req_erase]
12846 bl FtlBbmMapBadBlock
12853 bl FtlFreeSysBlkQueueIn
12865 ldr x22, [x22, #:got_lo12:req_erase]
12868 bl FlashEraseBlocks
12871 ldp x19, x20, [sp,16]
12872 ldp x21, x22, [sp,32]
12873 ldp x23, x24, [sp,48]
12874 ldp x25, x26, [sp,64]
12875 ldp x27, x28, [sp,80]
12876 ldp x29, x30, [sp], 128
12878 .size FtlLowFormatEraseBlock, .-FtlLowFormatEraseBlock
12880 .global FtlBbmTblFlush
12881 .type FtlBbmTblFlush, %function
12883 stp x29, x30, [sp, -112]!
12885 stp x21, x22, [sp,32]
12886 adrp x21, :got:p_sys_data_buf
12887 adrp x22, :got:p_sys_spare_buf
12888 stp x19, x20, [sp,16]
12889 adrp x20, :got:req_sys
12891 ldr x0, [x21, #:got_lo12:p_sys_data_buf]
12892 stp x25, x26, [sp,64]
12893 stp x23, x24, [sp,48]
12894 stp x27, x28, [sp,80]
12895 ldr x1, [x20, #:got_lo12:req_sys]
12896 adrp x24, :got:c_ftl_nand_die_num
12898 adrp x25, :got:gBbtInfo
12899 adrp x26, :got:c_ftl_nand_bbm_buf_size
12901 ldr x2, [x22, #:got_lo12:p_sys_spare_buf]
12904 adrp x2, :got:c_ftl_nand_byte_pre_page
12906 ldr x2, [x2, #:got_lo12:c_ftl_nand_byte_pre_page]
12912 ldr x1, [x24, #:got_lo12:c_ftl_nand_die_num]
12914 adrp x23, :got:gBbtInfo
12919 ldr x1, [x26, #:got_lo12:c_ftl_nand_bbm_buf_size]
12921 ldr x1, [x20, #:got_lo12:req_sys]
12925 ldr x1, [x25, #:got_lo12:gBbtInfo]
12926 add x0, x3, x0, sxtw 2
12927 add x1, x1, x19, lsl 3
12932 ldr x0, [x20, #:got_lo12:req_sys]
12939 add x24, x24, :lo12:.LC107
12940 adrp x27, :got:c_ftl_nand_page_pre_slc_blk
12941 adrp x28, :got:req_erase
12943 add x25, x25, :lo12:.LC108
12947 ldr x0, [x23, #:got_lo12:gBbtInfo]
12955 adrp x0, :got:c_ftl_nand_sys_blks_per_plane
12957 ldr x0, [x0, #:got_lo12:c_ftl_nand_sys_blks_per_plane]
12962 ldr x22, [x20, #:got_lo12:req_sys]
12963 ldr x0, [x0, #:got_lo12:p_sys_data_buf]
12967 ldr x0, [x0, #:got_lo12:p_sys_spare_buf]
12971 ldr x19, [x23, #:got_lo12:gBbtInfo]
12976 orr w0, w2, w1, lsl 10
12985 ldr x0, [x27, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
13003 ldr x1, [x28, #:got_lo12:req_erase]
13008 bl FlashEraseBlocks
13016 ldr x1, [x23, #:got_lo12:gBbtInfo]
13020 ldr x1, [x20, #:got_lo12:req_sys]
13034 ldp x19, x20, [sp,16]
13035 ldp x21, x22, [sp,32]
13036 ldp x23, x24, [sp,48]
13037 ldp x25, x26, [sp,64]
13038 ldp x27, x28, [sp,80]
13039 ldp x29, x30, [sp], 112
13041 .size FtlBbmTblFlush, .-FtlBbmTblFlush
13043 .global allocate_data_superblock
13044 .type allocate_data_superblock, %function
13045 allocate_data_superblock:
13046 stp x29, x30, [sp, -128]!
13048 stp x19, x20, [sp,16]
13049 stp x21, x22, [sp,32]
13050 stp x23, x24, [sp,48]
13051 stp x25, x26, [sp,64]
13052 stp x27, x28, [sp,80]
13054 adrp x20, :got:g_num_free_superblocks
13055 adrp x24, :got:c_ftl_nand_type
13056 adrp x21, :got:g_inkDie_check_enable
13057 adrp x22, :got:g_min_erase_count
13059 adrp x0, :got:g_gc_temp_superblock
13060 ldr x0, [x0, #:got_lo12:g_gc_temp_superblock]
13063 ldr x0, [x20, #:got_lo12:g_num_free_superblocks]
13065 adrp x0, :got:g_in_swl_replace
13067 ldr x0, [x0, #:got_lo12:g_in_swl_replace]
13071 add w1, w1, w0, lsr 2
13072 ldr x0, [x21, #:got_lo12:g_inkDie_check_enable]
13076 ldr x0, [x22, #:got_lo12:g_min_erase_count]
13093 ldr x0, [x24, #:got_lo12:c_ftl_nand_type]
13097 ldr x2, [x21, #:got_lo12:g_inkDie_check_enable]
13098 ldr x0, [x20, #:got_lo12:g_num_free_superblocks]
13103 ldr x2, [x22, #:got_lo12:g_min_erase_count]
13115 adrp x0, :got:p_free_data_block_list_head
13116 ldr x0, [x0, #:got_lo12:p_free_data_block_list_head]
13117 bl List_pop_index_node
13119 ldr x1, [x20, #:got_lo12:g_num_free_superblocks]
13128 adrp x0, :got:c_ftl_nand_planes_num
13129 adrp x6, :got:req_erase
13132 ldr x0, [x0, #:got_lo12:c_ftl_nand_planes_num]
13138 adrp x0, :got:p_valid_page_count_table
13139 ubfiz x1, x26, 1, 16
13141 ldr x0, [x0, #:got_lo12:p_valid_page_count_table]
13146 ldr x1, [x6, #:got_lo12:req_erase]
13148 madd x1, x0, x3, x4
13151 add x1, x19, x0, lsl 1
13165 adrp x23, :got:req_erase
13167 adrp x1, :got:g_active_superblock
13169 adrp x0, :got:p_erase_count_table
13170 ldr x1, [x1, #:got_lo12:g_active_superblock]
13173 ldr x2, [x21, #:got_lo12:g_inkDie_check_enable]
13176 ldr x2, [x0, #:got_lo12:p_erase_count_table]
13178 ldrh w2, [x2,x27,lsl 1]
13184 adrp x1, :got:c_mlc_erase_count_value
13185 adrp x3, :got:g_totle_mlc_erase_count
13186 adrp x2, :got:g_totle_slc_erase_count
13187 ldr x6, [x0, #:got_lo12:p_erase_count_table]
13194 ldr x7, [x1, #:got_lo12:c_mlc_erase_count_value]
13199 ldr x6, [x3, #:got_lo12:g_totle_mlc_erase_count]
13207 ldr x6, [x2, #:got_lo12:g_totle_slc_erase_count]
13213 ldr x0, [x0, #:got_lo12:p_erase_count_table]
13216 adrp x0, :got:g_max_erase_count
13217 ldr x0, [x0, #:got_lo12:g_max_erase_count]
13223 ldr x1, [x1, #:got_lo12:c_mlc_erase_count_value]
13224 adrp x5, :got:g_totle_avg_erase_count
13225 ldr x3, [x3, #:got_lo12:g_totle_mlc_erase_count]
13226 ldr x2, [x2, #:got_lo12:g_totle_slc_erase_count]
13230 ldr x5, [x5, #:got_lo12:g_totle_avg_erase_count]
13231 madd w0, w1, w3, w0
13232 adrp x1, :got:c_ftl_nand_data_blks_per_plane
13234 ldr x1, [x1, #:got_lo12:c_ftl_nand_data_blks_per_plane]
13238 adrp x0, :got:gp_ect_tbl_info
13239 ldr x0, [x0, #:got_lo12:gp_ect_tbl_info]
13248 ldr x1, [x23, #:got_lo12:req_erase]
13250 madd x1, x0, x3, x1
13257 ldr x0, [x23, #:got_lo12:req_erase]
13261 bl FlashEraseBlocks
13267 ldr x2, [x23, #:got_lo12:req_erase]
13281 bl FtlBbmMapBadBlock
13282 add x0, x19, x28, lsl 1
13296 bl update_multiplier_value
13300 adrp x0, :got:p_valid_page_count_table
13302 ldr x0, [x0, #:got_lo12:p_valid_page_count_table]
13308 bl INSERT_DATA_LIST
13311 adrp x2, :got:c_ftl_nand_page_pre_blk
13312 ldr x2, [x2, #:got_lo12:c_ftl_nand_page_pre_blk]
13318 adrp x2, :got:g_GlobalSysVersion
13321 ldr x2, [x2, #:got_lo12:g_GlobalSysVersion]
13326 ldr x0, [x0, #:got_lo12:p_valid_page_count_table]
13329 strh w1, [x0,x2,lsl 1]
13331 ldp x19, x20, [sp,16]
13332 ldp x21, x22, [sp,32]
13333 ldp x23, x24, [sp,48]
13334 ldp x25, x26, [sp,64]
13335 ldp x27, x28, [sp,80]
13336 ldp x29, x30, [sp], 128
13338 .size allocate_data_superblock, .-allocate_data_superblock
13340 .global FtlGcFreeBadSuperBlk
13341 .type FtlGcFreeBadSuperBlk, %function
13342 FtlGcFreeBadSuperBlk:
13343 stp x29, x30, [sp, -112]!
13345 stp x21, x22, [sp,32]
13346 adrp x21, :got:g_gc_bad_block_temp_num
13347 stp x23, x24, [sp,48]
13349 ldr x0, [x21, #:got_lo12:g_gc_bad_block_temp_num]
13350 stp x19, x20, [sp,16]
13351 stp x25, x26, [sp,64]
13352 stp x27, x28, [sp,80]
13357 adrp x23, :got:c_ftl_nand_planes_num
13358 adrp x25, :got:p_plane_order_table
13359 adrp x26, :got:g_gc_bad_block_temp_tbl
13360 add x22, x22, :lo12:.LC109
13362 ldr x0, [x23, #:got_lo12:c_ftl_nand_planes_num]
13366 ldr x0, [x25, #:got_lo12:p_plane_order_table]
13369 ldrb w0, [x0,w20,sxtw]
13373 ldr x28, [x21, #:got_lo12:g_gc_bad_block_temp_num]
13377 ldr x0, [x26, #:got_lo12:g_gc_bad_block_temp_tbl]
13378 adrp x4, :got:g_gc_bad_block_temp_tbl
13379 ldrh w0, [x0,w19,sxtw 1]
13387 bl FtlBbmMapBadBlock
13395 ldr x1, [x4, #:got_lo12:g_gc_bad_block_temp_tbl]
13397 ldrh w5, [x1,w0,sxtw 1]
13398 strh w5, [x1,w3,sxtw 1]
13402 ldr x0, [x21, #:got_lo12:g_gc_bad_block_temp_num]
13414 bl FtlGcReFreshBadBlk
13417 ldp x19, x20, [sp,16]
13418 ldp x21, x22, [sp,32]
13419 ldp x23, x24, [sp,48]
13420 ldp x25, x26, [sp,64]
13421 ldp x27, x28, [sp,80]
13422 ldp x29, x30, [sp], 112
13424 .size FtlGcFreeBadSuperBlk, .-FtlGcFreeBadSuperBlk
13426 .global update_vpc_list
13427 .type update_vpc_list, %function
13429 stp x29, x30, [sp, -32]!
13433 adrp x0, :got:p_valid_page_count_table
13434 ubfiz x1, x19, 1, 16
13435 ldr x0, [x0, #:got_lo12:p_valid_page_count_table]
13439 adrp x0, :got:g_gc_superblock
13440 ldr x0, [x0, #:got_lo12:g_gc_superblock]
13448 adrp x0, :got:g_active_superblock
13449 ldr x0, [x0, #:got_lo12:g_active_superblock]
13454 adrp x0, :got:g_buffer_superblock
13455 ldr x0, [x0, #:got_lo12:g_buffer_superblock]
13460 adrp x0, :got:g_gc_temp_superblock
13461 ldr x0, [x0, #:got_lo12:g_gc_temp_superblock]
13467 adrp x0, :got:p_data_block_list_head
13469 ldr x0, [x0, #:got_lo12:p_data_block_list_head]
13470 bl List_remove_node
13471 adrp x0, :got:g_num_data_superblocks
13472 ldr x0, [x0, #:got_lo12:g_num_data_superblocks]
13477 bl free_data_superblock
13479 bl FtlGcFreeBadSuperBlk
13484 bl List_update_data_list
13488 ldp x29, x30, [sp], 32
13490 .size update_vpc_list, .-update_vpc_list
13492 .global decrement_vpc_count
13493 .type decrement_vpc_count, %function
13494 decrement_vpc_count:
13495 stp x29, x30, [sp, -48]!
13502 adrp x0, :got:p_valid_page_count_table
13503 ubfiz x2, x1, 1, 16
13504 ldr x0, [x0, #:got_lo12:p_valid_page_count_table]
13510 add x0, x0, :lo12:.LC110
13517 adrp x19, :got:g_tmp_data_superblock_id
13519 ldr x19, [x19, #:got_lo12:g_tmp_data_superblock_id]
13540 ldp x29, x30, [sp], 48
13542 .size decrement_vpc_count, .-decrement_vpc_count
13544 .global FtlSlcSuperblockCheck
13545 .type FtlSlcSuperblockCheck, %function
13546 FtlSlcSuperblockCheck:
13547 stp x29, x30, [sp, -48]!
13549 stp x19, x20, [sp,16]
13550 stp x21, x22, [sp,32]
13556 adrp x21, :got:mlcPageToSlcPageTbl
13558 adrp x22, :got:c_ftl_nand_planes_num
13559 ldrh w0, [x19,x0,lsl 1]
13568 ldr x1, [x22, #:got_lo12:c_ftl_nand_planes_num]
13579 ldrh w0, [x19,x0,lsl 1]
13585 ldr x0, [x21, #:got_lo12:mlcPageToSlcPageTbl]
13587 ldrh w0, [x0,w1,sxtw 1]
13594 bl decrement_vpc_count
13602 ldp x19, x20, [sp,16]
13603 ldp x21, x22, [sp,32]
13604 ldp x29, x30, [sp], 48
13606 .size FtlSlcSuperblockCheck, .-FtlSlcSuperblockCheck
13608 .global get_new_active_ppa
13609 .type get_new_active_ppa, %function
13610 get_new_active_ppa:
13611 stp x29, x30, [sp, -64]!
13613 stp x19, x20, [sp,16]
13614 stp x21, x22, [sp,32]
13615 stp x23, x24, [sp,48]
13620 adrp x21, :got:c_ftl_nand_planes_num
13621 adrp x23, :got:mlcPageToSlcPageTbl
13623 ldrh w0, [x19,x0,lsl 1]
13626 adrp x22, :got:c_ftl_nand_planes_num
13633 ldr x1, [x21, #:got_lo12:c_ftl_nand_planes_num]
13644 ldrh w0, [x19,x0,lsl 1]
13650 ldr x1, [x23, #:got_lo12:mlcPageToSlcPageTbl]
13652 ldrh w1, [x1,w2,sxtw 1]
13659 bl decrement_vpc_count
13665 adrp x24, :got:mlcPageToSlcPageTbl
13666 orr w20, w20, w0, lsl 10
13671 ldr x0, [x22, #:got_lo12:c_ftl_nand_planes_num]
13684 add x0, x19, x1, sxtw 1
13692 ldr x0, [x24, #:got_lo12:mlcPageToSlcPageTbl]
13694 ldrh w0, [x0,w1,sxtw 1]
13702 bl decrement_vpc_count
13706 ldp x19, x20, [sp,16]
13707 ldp x21, x22, [sp,32]
13708 ldp x23, x24, [sp,48]
13709 ldp x29, x30, [sp], 64
13711 .size get_new_active_ppa, .-get_new_active_ppa
13713 .global FtlVpcTblFlush
13714 .type FtlVpcTblFlush, %function
13716 stp x29, x30, [sp, -96]!
13718 stp x23, x24, [sp,48]
13719 adrp x23, :got:p_sys_data_buf
13720 adrp x24, :got:p_sys_spare_buf
13721 stp x21, x22, [sp,32]
13722 adrp x21, :got:req_sys
13723 adrp x22, :got:gSysInfo
13724 ldr x0, [x23, #:got_lo12:p_sys_data_buf]
13725 stp x25, x26, [sp,64]
13726 stp x19, x20, [sp,16]
13727 stp x27, x28, [sp,80]
13728 ldr x26, [x21, #:got_lo12:req_sys]
13729 adrp x19, :got:g_sys_save_data
13731 adrp x25, :got:g_GlobalSysVersion
13734 ldr x0, [x24, #:got_lo12:p_sys_spare_buf]
13737 ldr x0, [x22, #:got_lo12:gSysInfo]
13747 movk w1, 0x4654, lsl 16
13749 ldr x19, [x19, #:got_lo12:g_sys_save_data]
13753 adrp x0, :got:c_ftl_nand_die_num
13754 movk w1, 0x5000, lsl 16
13756 ldr x0, [x0, #:got_lo12:c_ftl_nand_die_num]
13759 adrp x0, :got:g_active_superblock
13760 ldr x0, [x0, #:got_lo12:g_active_superblock]
13767 adrp x0, :got:g_buffer_superblock
13768 orr w1, w2, w1, lsl 6
13770 ldr x0, [x0, #:got_lo12:g_buffer_superblock]
13777 adrp x0, :got:g_gc_temp_superblock
13778 orr w1, w2, w1, lsl 6
13780 ldr x0, [x0, #:got_lo12:g_gc_temp_superblock]
13787 adrp x0, :got:g_totle_mlc_erase_count
13788 orr w1, w2, w1, lsl 6
13790 adrp x2, :got:c_ftl_nand_byte_pre_page
13792 ldr x0, [x0, #:got_lo12:g_totle_mlc_erase_count]
13795 ldr x0, [x25, #:got_lo12:g_GlobalSysVersion]
13798 adrp x0, :got:g_GlobalDataVersion
13799 ldr x0, [x0, #:got_lo12:g_GlobalDataVersion]
13803 ldr x2, [x2, #:got_lo12:c_ftl_nand_byte_pre_page]
13810 adrp x2, :got:c_ftl_nand_data_blks_per_plane
13811 adrp x1, :got:p_valid_page_count_table
13813 adrp x26, :got:c_ftl_nand_page_pre_slc_blk
13814 ldr x2, [x2, #:got_lo12:c_ftl_nand_data_blks_per_plane]
13816 ldr x1, [x1, #:got_lo12:p_valid_page_count_table]
13822 bl FtlUpdateVaildLpn
13824 ldr x0, [x23, #:got_lo12:p_sys_data_buf]
13825 ldr x27, [x21, #:got_lo12:req_sys]
13828 ldr x0, [x24, #:got_lo12:p_sys_spare_buf]
13831 ldr x19, [x22, #:got_lo12:gSysInfo]
13834 orr w0, w1, w0, lsl 10
13841 ldr x0, [x26, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
13851 bl FtlFreeSysBlkQueueOut
13853 ldr x2, [x25, #:got_lo12:g_GlobalSysVersion]
13858 ubfiz w2, w0, 10, 16
13868 ldr x0, [x22, #:got_lo12:gSysInfo]
13873 ldr x2, [x21, #:got_lo12:req_sys]
13879 adrp x1, :got:c_ftl_nand_page_pre_slc_blk
13880 ldr x1, [x1, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
13893 bl FtlFreeSysBlkQueueIn
13896 ldp x19, x20, [sp,16]
13897 ldp x21, x22, [sp,32]
13898 ldp x23, x24, [sp,48]
13899 ldp x25, x26, [sp,64]
13900 ldp x27, x28, [sp,80]
13901 ldp x29, x30, [sp], 96
13903 .size FtlVpcTblFlush, .-FtlVpcTblFlush
13905 .global ftl_map_blk_gc
13906 .type ftl_map_blk_gc, %function
13908 stp x29, x30, [sp, -96]!
13910 stp x19, x20, [sp,16]
13911 stp x21, x22, [sp,32]
13912 stp x23, x24, [sp,48]
13913 stp x25, x26, [sp,64]
13914 stp x27, x28, [sp,80]
13916 adrp x22, :got:c_ftl_nand_page_pre_slc_blk
13919 bl ftl_free_no_use_map_blk
13925 ubfiz x1, x0, 1, 16
13937 ldr x0, [x22, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
13942 bl ftl_map_blk_alloc_new_blk
13945 adrp x25, :got:req_sys
13946 adrp x26, :got:p_sys_data_buf_1
13947 adrp x27, :got:p_sys_spare_buf
13952 ubfiz x28, x20, 2, 16
13954 cmp w23, w0, lsr 10
13956 ldr x0, [x26, #:got_lo12:p_sys_data_buf_1]
13958 ldr x21, [x25, #:got_lo12:req_sys]
13962 ldr x0, [x27, #:got_lo12:p_sys_spare_buf]
13986 bl FtlFreeSysBlkQueueIn
13989 ldr x22, [x22, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
13995 bl ftl_map_blk_alloc_new_blk
13998 ldp x19, x20, [sp,16]
13999 ldp x21, x22, [sp,32]
14000 ldp x23, x24, [sp,48]
14001 ldp x25, x26, [sp,64]
14002 ldp x27, x28, [sp,80]
14003 ldp x29, x30, [sp], 96
14005 .size ftl_map_blk_gc, .-ftl_map_blk_gc
14007 .global Ftl_write_map_blk_to_last_page
14008 .type Ftl_write_map_blk_to_last_page, %function
14009 Ftl_write_map_blk_to_last_page:
14010 stp x29, x30, [sp, -64]!
14013 stp x19, x20, [sp,16]
14014 stp x21, x22, [sp,32]
14025 bl FtlFreeSysBlkQueueOut
14034 ubfiz x0, x0, 1, 16
14036 adrp x21, :got:p_sys_data_buf
14038 adrp x20, :got:req_sys
14039 ldr x0, [x20, #:got_lo12:req_sys]
14040 orr w1, w1, w22, lsl 10
14042 ldr x3, [x21, #:got_lo12:p_sys_data_buf]
14045 adrp x1, :got:p_sys_spare_buf
14046 ldr x1, [x1, #:got_lo12:p_sys_spare_buf]
14055 adrp x0, :got:c_ftl_nand_page_pre_slc_blk
14058 ldr x0, [x0, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
14069 ubfiz x4, x1, 2, 16
14071 cmp w22, w0, lsr 10
14073 ldr x3, [x21, #:got_lo12:p_sys_data_buf]
14077 ubfiz x0, x2, 3, 16
14089 ldr x0, [x20, #:got_lo12:req_sys]
14101 ldp x19, x20, [sp,16]
14102 ldp x21, x22, [sp,32]
14103 ldp x29, x30, [sp], 64
14105 .size Ftl_write_map_blk_to_last_page, .-Ftl_write_map_blk_to_last_page
14107 .global FtlMapWritePage
14108 .type FtlMapWritePage, %function
14110 stp x29, x30, [sp, -96]!
14112 stp x21, x22, [sp,32]
14113 stp x23, x24, [sp,48]
14114 stp x25, x26, [sp,64]
14115 stp x19, x20, [sp,16]
14116 stp x27, x28, [sp,80]
14120 adrp x23, :got:g_totle_l2p_write_count
14121 adrp x24, :got:c_ftl_nand_page_pre_slc_blk
14123 adrp x26, :got:req_sys
14124 adrp x27, :got:p_sys_spare_buf
14126 ldr x1, [x23, #:got_lo12:g_totle_l2p_write_count]
14130 ldr x0, [x24, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
14141 bl Ftl_write_map_blk_to_last_page
14146 ldr x20, [x26, #:got_lo12:req_sys]
14147 ldrh w28, [x0,x1,lsl 1]
14151 orr w0, w0, w28, lsl 10
14153 ldr x0, [x27, #:got_lo12:p_sys_spare_buf]
14180 str w1, [x0,w21,uxtw 2]
14182 ldp x19, x20, [sp,16]
14183 ldp x21, x22, [sp,32]
14184 ldp x23, x24, [sp,48]
14185 ldp x25, x26, [sp,64]
14186 ldp x27, x28, [sp,80]
14187 ldp x29, x30, [sp], 96
14189 .size FtlMapWritePage, .-FtlMapWritePage
14191 .global flush_l2p_region
14192 .type flush_l2p_region, %function
14194 stp x29, x30, [sp, -32]!
14196 stp x19, x20, [sp,16]
14197 adrp x20, :got:p_l2p_ram_map
14198 ubfiz x19, x0, 4, 16
14199 adrp x0, :got:gL2pMapInfo
14200 ldr x20, [x20, #:got_lo12:p_l2p_ram_map]
14201 ldr x0, [x0, #:got_lo12:gL2pMapInfo]
14210 and w0, w0, 2147483647
14213 ldp x19, x20, [sp,16]
14214 ldp x29, x30, [sp], 32
14216 .size flush_l2p_region, .-flush_l2p_region
14219 .type log2phys, %function
14221 stp x29, x30, [sp, -80]!
14224 stp x21, x22, [sp,32]
14226 adrp x1, :got:c_ftl_nand_sec_pre_page_shift
14227 stp x23, x24, [sp,48]
14228 stp x19, x20, [sp,16]
14229 ldr x1, [x1, #:got_lo12:c_ftl_nand_sec_pre_page_shift]
14230 adrp x23, :got:p_l2p_ram_map
14233 ldr x1, [x23, #:got_lo12:p_l2p_ram_map]
14243 adrp x0, :got:c_ftl_nand_l2pmap_ram_region_num
14244 ldr x0, [x0, #:got_lo12:c_ftl_nand_l2pmap_ram_region_num]
14251 add x2, x1, x4, lsl 4
14257 ldr x0, [x23, #:got_lo12:p_l2p_ram_map]
14259 add x1, x1, x19, lsl 4
14261 ldr w0, [x0,x24,lsl 2]
14265 ldr x2, [x23, #:got_lo12:p_l2p_ram_map]
14271 str w3, [x1,x24,lsl 2]
14275 orr w1, w1, -2147483648
14277 adrp x0, :got:g_l2p_last_update_region_id
14278 ldr x0, [x0, #:got_lo12:g_l2p_last_update_region_id]
14281 ldr x23, [x23, #:got_lo12:p_l2p_ram_map]
14283 add x19, x0, x19, lsl 4
14291 bl select_l2p_ram_region
14293 ldr x3, [x23, #:got_lo12:p_l2p_ram_map]
14294 ubfiz x2, x19, 4, 16
14303 tbz w2, #31, .L1881
14305 bl flush_l2p_region
14313 ldp x19, x20, [sp,16]
14314 ldp x21, x22, [sp,32]
14315 ldp x23, x24, [sp,48]
14316 ldp x29, x30, [sp], 80
14318 .size log2phys, .-log2phys
14320 .global FtlReUsePrevPpa
14321 .type FtlReUsePrevPpa, %function
14323 stp x29, x30, [sp, -80]!
14325 stp x19, x20, [sp,16]
14328 stp x21, x22, [sp,32]
14331 bl P2V_block_in_plane
14333 adrp x0, :got:p_valid_page_count_table
14334 ubfiz x22, x4, 1, 16
14336 ldr x1, [x0, #:got_lo12:p_valid_page_count_table]
14340 adrp x0, :got:p_free_data_block_list_head
14341 ldr x2, [x0, #:got_lo12:p_free_data_block_list_head]
14344 adrp x2, :got:g_num_free_superblocks
14345 mov x6, -6148914691236517206
14347 ldr x3, [x2, #:got_lo12:g_num_free_superblocks]
14350 adrp x3, :got:p_data_block_list_table
14351 ldr x3, [x3, #:got_lo12:p_data_block_list_table]
14355 madd x19, x6, x19, x19
14363 ldr x0, [x0, #:got_lo12:p_free_data_block_list_head]
14365 bl List_remove_node
14366 ldr x0, [x21, #:got_lo12:g_num_free_superblocks]
14371 bl INSERT_DATA_LIST
14372 ldr x0, [x23, #:got_lo12:p_valid_page_count_table]
14395 ldp x19, x20, [sp,16]
14396 ldp x21, x22, [sp,32]
14397 ldp x29, x30, [sp], 80
14399 .size FtlReUsePrevPpa, .-FtlReUsePrevPpa
14401 .global FtlMapTblRecovery
14402 .type FtlMapTblRecovery, %function
14404 stp x29, x30, [sp, -144]!
14407 stp x25, x26, [sp,64]
14409 stp x19, x20, [sp,16]
14410 stp x21, x22, [sp,32]
14411 stp x23, x24, [sp,48]
14412 stp x27, x28, [sp,80]
14414 adrp x20, :got:p_sys_data_buf
14416 adrp x19, :got:req_sys
14424 ldr x0, [x20, #:got_lo12:p_sys_data_buf]
14425 ldr x1, [x19, #:got_lo12:req_sys]
14428 adrp x0, :got:p_sys_spare_buf
14429 ldr x0, [x0, #:got_lo12:p_sys_spare_buf]
14453 bl FtlGetLastWrittenPage
14458 ldr w0, [x25,x28,lsl 2]
14461 ldr x0, [x19, #:got_lo12:req_sys]
14468 ldr x24, [x19, #:got_lo12:req_sys]
14470 orr w0, w22, w0, lsl 10
14484 ubfiz x1, x1, 2, 16
14494 bl ftl_free_no_use_map_blk
14495 adrp x0, :got:c_ftl_nand_page_pre_slc_blk
14497 ldr x0, [x0, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
14502 bl ftl_map_blk_alloc_new_blk
14505 ldr x0, [x20, #:got_lo12:p_sys_data_buf]
14507 ldr x6, [x19, #:got_lo12:req_sys]
14512 adrp x0, :got:c_ftl_nand_page_pre_slc_blk
14514 ldr x0, [x0, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
14517 orr w0, w0, w1, lsl 10
14524 adrp x8, :got:c_ftl_nand_page_pre_slc_blk
14538 ldr x1, [x8, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
14543 ldr x1, [x20, #:got_lo12:p_sys_data_buf]
14544 sbfiz x2, x0, 3, 32
14550 ubfiz x1, x1, 2, 16
14559 ldr x0, [x19, #:got_lo12:req_sys]
14563 ldr x0, [x8, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
14569 ldr x7, [x19, #:got_lo12:req_sys]
14572 orr w0, w6, w0, lsl 10
14591 ubfiz x1, x1, 2, 16
14612 ldp x19, x20, [sp,16]
14613 ldp x21, x22, [sp,32]
14614 ldp x23, x24, [sp,48]
14615 ldp x25, x26, [sp,64]
14616 ldp x27, x28, [sp,80]
14617 ldp x29, x30, [sp], 144
14619 .size FtlMapTblRecovery, .-FtlMapTblRecovery
14621 .global FtlLoadVonderInfo
14622 .type FtlLoadVonderInfo, %function
14624 adrp x1, :got:c_ftl_nand_max_vendor_blks
14625 adrp x0, :got:gVendorBlkInfo
14626 stp x29, x30, [sp, -16]!
14628 ldr x1, [x1, #:got_lo12:c_ftl_nand_max_vendor_blks]
14629 ldr x0, [x0, #:got_lo12:gVendorBlkInfo]
14634 adrp x1, :got:g_totle_vendor_block
14635 ldr x1, [x1, #:got_lo12:g_totle_vendor_block]
14638 adrp x1, :got:c_ftl_nand_vendor_region_num
14639 ldr x1, [x1, #:got_lo12:c_ftl_nand_vendor_region_num]
14642 adrp x1, :got:p_vendor_block_table
14643 ldr x1, [x1, #:got_lo12:p_vendor_block_table]
14646 adrp x1, :got:p_vendor_block_ver_table
14647 ldr x1, [x1, #:got_lo12:p_vendor_block_ver_table]
14650 adrp x1, :got:p_vendor_block_valid_page_count
14651 ldr x1, [x1, #:got_lo12:p_vendor_block_valid_page_count]
14654 adrp x1, :got:p_vendor_region_ppn_table
14655 ldr x1, [x1, #:got_lo12:p_vendor_region_ppn_table]
14658 bl FtlMapTblRecovery
14660 ldp x29, x30, [sp], 16
14662 .size FtlLoadVonderInfo, .-FtlLoadVonderInfo
14664 .global FtlLoadMapInfo
14665 .type FtlLoadMapInfo, %function
14667 stp x29, x30, [sp, -16]!
14670 adrp x0, :got:gL2pMapInfo
14671 ldr x0, [x0, #:got_lo12:gL2pMapInfo]
14672 bl FtlMapTblRecovery
14674 ldp x29, x30, [sp], 16
14676 .size FtlLoadMapInfo, .-FtlLoadMapInfo
14678 .global FtlReadRefresh
14679 .type FtlReadRefresh, %function
14681 stp x29, x30, [sp, -128]!
14683 stp x19, x20, [sp,16]
14684 adrp x19, :got:g_sys_ext_data
14686 stp x21, x22, [sp,32]
14687 ldr x1, [x19, #:got_lo12:g_sys_ext_data]
14690 adrp x0, :got:g_MaxLpn
14693 ldr x2, [x0, #:got_lo12:g_MaxLpn]
14700 ldr x22, [x19, #:got_lo12:g_sys_ext_data]
14701 ldr x1, [x20, #:got_lo12:g_MaxLpn]
14729 bl P2V_block_in_plane
14730 bl FtlGcRefreshBlock
14739 adrp x0, :got:g_totle_read_page_count
14742 ldr x0, [x0, #:got_lo12:g_totle_read_page_count]
14747 adrp x2, :got:g_max_erase_count
14749 ldr x2, [x2, #:got_lo12:g_max_erase_count]
14751 adrp x2, :got:g_inkDie_check_enable
14752 ldr x2, [x2, #:got_lo12:g_inkDie_check_enable]
14754 adrp x2, :got:g_totle_read_page_count
14755 ldr x2, [x2, #:got_lo12:g_totle_read_page_count]
14757 add w5, w2, 1048576
14760 add w3, w4, w3, lsr 10
14767 ldr x0, [x19, #:got_lo12:g_sys_ext_data]
14775 ldp x19, x20, [sp,16]
14776 ldp x21, x22, [sp,32]
14778 ldp x29, x30, [sp], 128
14780 .size FtlReadRefresh, .-FtlReadRefresh
14782 .global FtlVendorPartWrite
14783 .type FtlVendorPartWrite, %function
14784 FtlVendorPartWrite:
14785 stp x29, x30, [sp, -176]!
14787 stp x25, x26, [sp,64]
14789 adrp x0, :got:c_ftl_nand_sec_pre_page_shift
14790 stp x19, x20, [sp,16]
14791 stp x23, x24, [sp,48]
14792 ldr x0, [x0, #:got_lo12:c_ftl_nand_sec_pre_page_shift]
14794 stp x21, x22, [sp,32]
14795 stp x27, x28, [sp,80]
14799 adrp x0, :got:c_ftl_vendor_part_size
14801 ldr x0, [x0, #:got_lo12:c_ftl_vendor_part_size]
14807 adrp x24, :got:p_vendor_data_buf
14809 adrp x28, :got:gVendorBlkInfo
14812 adrp x0, :got:p_vendor_region_ppn_table
14813 ldr x0, [x0, #:got_lo12:p_vendor_region_ppn_table]
14815 ldr w2, [x0,w20,uxtw 2]
14816 adrp x0, :got:c_ftl_nand_sec_pre_page
14817 ldr x0, [x0, #:got_lo12:c_ftl_nand_sec_pre_page]
14821 msub w21, w21, w1, w26
14825 csel w27, w0, w27, hi
14829 ldr x0, [x24, #:got_lo12:p_vendor_data_buf]
14840 adrp x1, :got:c_ftl_nand_byte_pre_page
14841 ldr x0, [x24, #:got_lo12:p_vendor_data_buf]
14842 ldr x2, [x1, #:got_lo12:c_ftl_nand_byte_pre_page]
14848 ldr x7, [x24, #:got_lo12:p_vendor_data_buf]
14850 ubfiz x21, x21, 9, 16
14862 ldr x0, [x28, #:got_lo12:gVendorBlkInfo]
14868 csinv w19, w19, wzr, ne
14869 add x23, x23, x6, sxtw
14873 ldp x19, x20, [sp,16]
14874 ldp x21, x22, [sp,32]
14875 ldp x23, x24, [sp,48]
14876 ldp x25, x26, [sp,64]
14877 ldp x27, x28, [sp,80]
14878 ldp x29, x30, [sp], 176
14880 .size FtlVendorPartWrite, .-FtlVendorPartWrite
14882 .global Ftl_save_ext_data
14883 .type Ftl_save_ext_data, %function
14885 adrp x2, :got:g_sys_ext_data
14887 stp x29, x30, [sp, -16]!
14888 movk w0, 0x4654, lsl 16
14890 ldr x2, [x2, #:got_lo12:g_sys_ext_data]
14896 movk w0, 0x5000, lsl 16
14898 adrp x0, :got:g_totle_write_sector
14899 ldr x0, [x0, #:got_lo12:g_totle_write_sector]
14902 adrp x0, :got:g_totle_read_sector
14903 ldr x0, [x0, #:got_lo12:g_totle_read_sector]
14906 adrp x0, :got:g_totle_gc_page_count
14907 ldr x0, [x0, #:got_lo12:g_totle_gc_page_count]
14910 adrp x0, :got:g_totle_write_page_count
14911 ldr x0, [x0, #:got_lo12:g_totle_write_page_count]
14914 adrp x0, :got:g_totle_read_page_count
14915 ldr x0, [x0, #:got_lo12:g_totle_read_page_count]
14918 adrp x0, :got:g_totle_l2p_write_count
14919 ldr x0, [x0, #:got_lo12:g_totle_l2p_write_count]
14922 adrp x0, :got:g_totle_slc_erase_count
14923 ldr x0, [x0, #:got_lo12:g_totle_slc_erase_count]
14926 adrp x0, :got:g_totle_sys_slc_erase_count
14927 ldr x0, [x0, #:got_lo12:g_totle_sys_slc_erase_count]
14930 adrp x0, :got:g_totle_discard_page_count
14931 ldr x0, [x0, #:got_lo12:g_totle_discard_page_count]
14934 adrp x0, :got:g_totle_cache_write_count
14935 ldr x0, [x0, #:got_lo12:g_totle_cache_write_count]
14938 adrp x0, :got:g_max_erase_count
14939 ldr x0, [x0, #:got_lo12:g_max_erase_count]
14942 adrp x0, :got:g_min_erase_count
14943 ldr x0, [x0, #:got_lo12:g_min_erase_count]
14946 adrp x0, :got:g_all_blk_used_slc_mode
14947 ldr x0, [x0, #:got_lo12:g_all_blk_used_slc_mode]
14950 adrp x0, :got:g_SlcPartLbaEndSector
14951 ldr x0, [x0, #:got_lo12:g_SlcPartLbaEndSector]
14955 bl FtlVendorPartWrite
14957 ldp x29, x30, [sp], 16
14959 .size Ftl_save_ext_data, .-Ftl_save_ext_data
14961 .global FtlEctTblFlush
14962 .type FtlEctTblFlush, %function
14964 adrp x1, :got:g_inkDie_check_enable
14965 stp x29, x30, [sp, -16]!
14967 ldr x1, [x1, #:got_lo12:g_inkDie_check_enable]
14971 adrp x2, :got:g_min_erase_count
14972 ldr x2, [x2, #:got_lo12:g_min_erase_count]
14976 csel w1, w1, w2, hi
14978 adrp x2, :got:g_ect_tbl_power_up_flush
14979 ldr x2, [x2, #:got_lo12:g_ect_tbl_power_up_flush]
14987 adrp x2, :got:gp_ect_tbl_info
14989 ldr x0, [x2, #:got_lo12:gp_ect_tbl_info]
14997 ldr x2, [x2, #:got_lo12:gp_ect_tbl_info]
15002 movk w1, 0x4254, lsl 16
15004 adrp x1, :got:g_ect_tbl_info_size
15006 ldr x1, [x1, #:got_lo12:g_ect_tbl_info_size]
15016 bl FtlVendorPartWrite
15017 bl Ftl_save_ext_data
15020 ldp x29, x30, [sp], 16
15022 .size FtlEctTblFlush, .-FtlEctTblFlush
15024 .global FtlMapBlkWriteDumpData
15025 .type FtlMapBlkWriteDumpData, %function
15026 FtlMapBlkWriteDumpData:
15027 stp x29, x30, [sp, -48]!
15029 stp x19, x20, [sp,16]
15037 adrp x0, :got:p_sys_data_buf_1
15038 adrp x2, :got:req_sys
15039 adrp x3, :got:p_sys_spare_buf
15042 ldr x0, [x0, #:got_lo12:p_sys_data_buf_1]
15044 ldr x1, [x2, #:got_lo12:req_sys]
15047 ldr x3, [x3, #:got_lo12:p_sys_spare_buf]
15050 ubfiz x3, x20, 2, 16
15060 adrp x2, :got:c_ftl_nand_byte_pre_page
15062 ldr x2, [x2, #:got_lo12:c_ftl_nand_byte_pre_page]
15066 ldr x2, [x19, #:got_lo12:req_sys]
15072 ldp x19, x20, [sp,16]
15074 ldp x29, x30, [sp], 48
15076 .size FtlMapBlkWriteDumpData, .-FtlMapBlkWriteDumpData
15078 .global FtlRecoverySuperblock
15079 .type FtlRecoverySuperblock, %function
15080 FtlRecoverySuperblock:
15081 stp x29, x30, [sp, -240]!
15083 stp x19, x20, [sp,16]
15084 stp x21, x22, [sp,32]
15085 stp x23, x24, [sp,48]
15086 stp x25, x26, [sp,64]
15087 stp x27, x28, [sp,80]
15091 adrp x0, :got:c_ftl_nand_page_pre_blk
15093 ldr x1, [x0, #:got_lo12:c_ftl_nand_page_pre_blk]
15108 add x0, x19, x1, sxtw 1
15115 bl FtlGetLastWrittenPage
15119 adrp x0, :got:slcPageToMlcPageTbl
15120 ldr x0, [x0, #:got_lo12:slcPageToMlcPageTbl]
15121 ldrh w23, [x0,w20,sxtw 1]
15125 bl FtlGetLastWrittenPage
15131 adrp x1, :got:c_ftl_nand_planes_num
15132 adrp x0, :got:c_ftl_nand_byte_pre_oob
15137 ldr x2, [x1, #:got_lo12:c_ftl_nand_planes_num]
15138 adrp x9, :got:req_read
15139 ldr x0, [x0, #:got_lo12:c_ftl_nand_byte_pre_oob]
15141 adrp x11, :got:p_gc_spare_buf
15145 add x3, x19, x3, lsl 1
15156 ldr x5, [x9, #:got_lo12:req_read]
15157 orr w1, w23, w1, lsl 10
15169 ldr x4, [x11, #:got_lo12:p_gc_spare_buf]
15171 add x1, x4, x1, sxtw 2
15178 adrp x21, :got:req_read
15182 ldr x0, [x21, #:got_lo12:req_read]
15185 adrp x0, :got:g_GlobalDataVersion
15190 ldr x1, [x0, #:got_lo12:g_GlobalDataVersion]
15196 ldr x0, [x21, #:got_lo12:req_read]
15210 ldr x4, [x1, #:got_lo12:g_GlobalDataVersion]
15215 bl ftl_cmp_data_ver
15227 ldr x0, [x21, #:got_lo12:req_read]
15237 ldr x0, [x21, #:got_lo12:req_read]
15252 ldr x0, [x21, #:got_lo12:req_read]
15263 adrp x0, :got:slcPageToMlcPageTbl
15264 ldr x0, [x0, #:got_lo12:slcPageToMlcPageTbl]
15265 ldrh w20, [x0,w20,sxtw 1]
15268 ldr x0, [x0, #:got_lo12:c_ftl_nand_page_pre_blk]
15289 adrp x24, :got:g_recovery_page_min_ver
15291 ldr x0, [x24, #:got_lo12:g_recovery_page_min_ver]
15297 ldr x0, [x24, #:got_lo12:g_recovery_page_min_ver]
15310 adrp x8, :got:mlcPageToSlcPageTbl
15316 ldr x0, [x0, #:got_lo12:c_ftl_nand_planes_num]
15319 add x2, x19, x2, lsl 1
15326 ldr x10, [x21, #:got_lo12:req_read]
15327 orr w1, w27, w1, lsl 10
15338 ldr x9, [x21, #:got_lo12:req_read]
15373 ldr x2, [x24, #:got_lo12:g_recovery_page_min_ver]
15378 ldr x2, [x8, #:got_lo12:mlcPageToSlcPageTbl]
15379 ldrh w2, [x2,x10,lsl 1]
15383 csinv w3, w28, wzr, ne
15388 adrp x0, :got:mlcPageToSlcPageTbl
15389 ldr x0, [x0, #:got_lo12:mlcPageToSlcPageTbl]
15390 ldrh w1, [x0,w27,sxtw 1]
15395 ldr x24, [x24, #:got_lo12:g_recovery_page_min_ver]
15412 ldr x24, [x24, #:got_lo12:g_recovery_page_min_ver]
15416 ldr x24, [x24, #:got_lo12:g_recovery_page_min_ver]
15433 ldr x24, [x24, #:got_lo12:g_recovery_page_min_ver]
15438 adrp x0, :got:g_power_lost_recovery_flag
15441 ldr x0, [x0, #:got_lo12:g_power_lost_recovery_flag]
15443 adrp x0, :got:gL2pMapInfo
15444 ldr x0, [x0, #:got_lo12:gL2pMapInfo]
15445 bl FtlMapBlkWriteDumpData
15449 add x0, x0, :lo12:.LC111
15460 ldr x0, [x0, #:got_lo12:c_ftl_nand_planes_num]
15463 add x2, x19, x2, lsl 1
15471 orr w1, w23, w1, lsl 10
15472 ldr x6, [x21, #:got_lo12:req_read]
15485 ldr x0, [x21, #:got_lo12:req_read]
15499 ldr x0, [x21, #:got_lo12:req_read]
15520 ldr x0, [x21, #:got_lo12:req_read]
15535 ldr x27, [x0, #:got_lo12:g_GlobalDataVersion]
15538 bl ftl_cmp_data_ver
15551 adrp x0, :got:g_recovery_page_min_ver
15553 ldr x1, [x0, #:got_lo12:g_recovery_page_min_ver]
15559 bl ftl_cmp_data_ver
15564 ldr x3, [x21, #:got_lo12:req_read]
15606 bl ftl_cmp_data_ver
15632 ldr x0, [x21, #:got_lo12:req_read]
15641 ldr x0, [x0, #:got_lo12:g_recovery_page_min_ver]
15643 bl ftl_cmp_data_ver
15647 bl ftl_cmp_data_ver
15657 bl decrement_vpc_count
15675 bl P2V_block_in_plane
15677 adrp x1, :got:g_active_superblock
15678 ldr x1, [x1, #:got_lo12:g_active_superblock]
15682 adrp x1, :got:g_buffer_superblock
15683 ldr x1, [x1, #:got_lo12:g_buffer_superblock]
15687 adrp x1, :got:g_gc_temp_superblock
15688 ldr x1, [x1, #:got_lo12:g_gc_temp_superblock]
15693 ldr x24, [x21, #:got_lo12:req_read]
15708 bl ftl_cmp_data_ver
15719 bl P2V_block_in_plane
15721 adrp x2, :got:p_valid_page_count_table
15722 ubfiz x3, x1, 1, 16
15723 ldr x2, [x2, #:got_lo12:p_valid_page_count_table]
15728 bl decrement_vpc_count
15735 adrp x1, :got:g_recovery_page_num
15736 ldr x1, [x1, #:got_lo12:g_recovery_page_num]
15740 adrp x2, :got:g_recovery_ppa_tbl
15742 ldr x2, [x2, #:got_lo12:g_recovery_ppa_tbl]
15743 str w3, [x2,w0,uxtw 2]
15748 bl decrement_vpc_count
15749 adrp x0, :got:g_recovery_page_min_ver
15750 ldr x0, [x0, #:got_lo12:g_recovery_page_min_ver]
15767 ldr x0, [x0, #:got_lo12:c_ftl_nand_page_pre_blk]
15775 ldr x0, [x0, #:got_lo12:c_ftl_nand_planes_num]
15783 add x4, x19, x0, lsl 1
15796 bl ftl_sb_update_avl_pages
15799 ldp x19, x20, [sp,16]
15800 ldp x21, x22, [sp,32]
15801 ldp x23, x24, [sp,48]
15802 ldp x25, x26, [sp,64]
15803 ldp x27, x28, [sp,80]
15804 ldp x29, x30, [sp], 240
15806 .size FtlRecoverySuperblock, .-FtlRecoverySuperblock
15808 .global FtlWriteDumpData
15809 .type FtlWriteDumpData, %function
15811 stp x29, x30, [sp, -144]!
15813 stp x19, x20, [sp,16]
15814 adrp x19, :got:g_active_superblock
15815 stp x21, x22, [sp,32]
15816 stp x23, x24, [sp,48]
15817 ldr x0, [x19, #:got_lo12:g_active_superblock]
15818 stp x25, x26, [sp,64]
15823 adrp x2, :got:c_ftl_nand_page_pre_blk
15825 ldr x2, [x2, #:got_lo12:c_ftl_nand_page_pre_blk]
15830 adrp x1, :got:g_MaxLpn
15832 ldr x1, [x1, #:got_lo12:g_MaxLpn]
15834 adrp x1, :got:c_ftl_nand_planes_num
15835 ldr x1, [x1, #:got_lo12:c_ftl_nand_planes_num]
15845 adrp x0, :got:p_sys_data_buf
15849 ldr x0, [x0, #:got_lo12:p_sys_data_buf]
15852 adrp x1, :got:p_sys_spare_buf
15853 ldr x1, [x1, #:got_lo12:p_sys_spare_buf]
15864 adrp x2, :got:c_ftl_nand_byte_pre_page
15867 ldr x2, [x2, #:got_lo12:c_ftl_nand_byte_pre_page]
15873 adrp x25, :got:g_GlobalDataVersion
15880 ldr x23, [x19, #:got_lo12:g_active_superblock]
15890 bl get_new_active_ppa
15892 ldr x0, [x25, #:got_lo12:g_GlobalDataVersion]
15899 csel w1, w1, wzr, ne
15905 bl decrement_vpc_count
15908 ldr x19, [x19, #:got_lo12:g_active_superblock]
15913 ldr x19, [x19, #:got_lo12:g_active_superblock]
15916 ldp x19, x20, [sp,16]
15917 ldp x21, x22, [sp,32]
15918 ldp x23, x24, [sp,48]
15919 ldp x25, x26, [sp,64]
15920 ldp x29, x30, [sp], 144
15922 .size FtlWriteDumpData, .-FtlWriteDumpData
15925 .type l2p_flush, %function
15927 stp x29, x30, [sp, -48]!
15929 stp x19, x20, [sp,16]
15932 adrp x20, :got:c_ftl_nand_l2pmap_ram_region_num
15933 adrp x21, :got:p_l2p_ram_map
15934 bl FtlWriteDumpData
15936 ldr x0, [x20, #:got_lo12:c_ftl_nand_l2pmap_ram_region_num]
15940 ldr x1, [x21, #:got_lo12:p_l2p_ram_map]
15941 ubfiz x0, x19, 4, 16
15945 tbz w0, #31, .L2146
15947 bl flush_l2p_region
15955 ldp x19, x20, [sp,16]
15956 ldp x29, x30, [sp], 48
15958 .size l2p_flush, .-l2p_flush
15960 .global FtlVpcCheckAndModify
15961 .type FtlVpcCheckAndModify, %function
15962 FtlVpcCheckAndModify:
15963 stp x29, x30, [sp, -112]!
15966 add x1, x1, :lo12:.LANCHOR1
15969 add x0, x0, :lo12:.LC112
15970 stp x19, x20, [sp,16]
15971 stp x21, x22, [sp,32]
15972 stp x23, x24, [sp,48]
15973 stp x25, x26, [sp,64]
15974 stp x27, x28, [sp,80]
15976 adrp x20, :got:p_valid_page_count_check_table
15977 adrp x0, :got:c_ftl_nand_blk_pre_plane
15979 adrp x21, :got:g_MaxLpn
15981 ldr x1, [x20, #:got_lo12:p_valid_page_count_check_table]
15982 ldr x0, [x0, #:got_lo12:c_ftl_nand_blk_pre_plane]
15989 ldr x0, [x21, #:got_lo12:g_MaxLpn]
16001 bl P2V_block_in_plane
16002 ubfiz x0, x0, 1, 16
16003 ldr x1, [x20, #:got_lo12:p_valid_page_count_check_table]
16014 adrp x23, :got:c_ftl_nand_data_blks_per_plane
16015 adrp x24, :got:p_valid_page_count_table
16017 add x22, x22, :lo12:.LC113
16018 adrp x26, :got:g_active_superblock
16020 ldr x0, [x23, #:got_lo12:c_ftl_nand_data_blks_per_plane]
16024 ldr x27, [x24, #:got_lo12:p_valid_page_count_table]
16025 ubfiz x21, x19, 1, 16
16026 ldr x28, [x20, #:got_lo12:p_valid_page_count_check_table]
16038 ldr x0, [x26, #:got_lo12:g_active_superblock]
16042 adrp x0, :got:g_gc_temp_superblock
16043 ldr x0, [x0, #:got_lo12:g_gc_temp_superblock]
16047 adrp x0, :got:g_buffer_superblock
16048 ldr x0, [x0, #:got_lo12:g_buffer_superblock]
16065 ldp x19, x20, [sp,16]
16066 ldp x21, x22, [sp,32]
16067 ldp x23, x24, [sp,48]
16068 ldp x25, x26, [sp,64]
16069 ldp x27, x28, [sp,80]
16070 ldp x29, x30, [sp], 112
16072 .size FtlVpcCheckAndModify, .-FtlVpcCheckAndModify
16074 .global allocate_new_data_superblock
16075 .type allocate_new_data_superblock, %function
16076 allocate_new_data_superblock:
16077 stp x29, x30, [sp, -48]!
16079 stp x19, x20, [sp,16]
16086 adrp x1, :got:p_valid_page_count_table
16087 ubfiz x0, x21, 1, 16
16088 ldr x1, [x1, #:got_lo12:p_valid_page_count_table]
16093 bl INSERT_DATA_LIST
16097 bl INSERT_FREE_LIST
16099 adrp x0, :got:g_buffer_superblock
16101 ldr x0, [x0, #:got_lo12:g_buffer_superblock]
16104 adrp x0, :got:c_ftl_nand_type
16105 ldr x0, [x0, #:got_lo12:c_ftl_nand_type]
16114 adrp x1, :got:g_active_superblock
16115 ldr x2, [x1, #:got_lo12:g_active_superblock]
16120 adrp x0, :got:g_all_blk_used_slc_mode
16121 ldr x0, [x0, #:got_lo12:g_all_blk_used_slc_mode]
16126 ldr x0, [x1, #:got_lo12:g_active_superblock]
16130 adrp x0, :got:g_inkDie_check_enable
16131 ldr x0, [x0, #:got_lo12:g_inkDie_check_enable]
16134 adrp x0, :got:g_min_erase_count
16135 ldr x0, [x0, #:got_lo12:g_min_erase_count]
16139 ldr x1, [x1, #:got_lo12:g_active_superblock]
16143 adrp x1, :got:g_tmp_data_superblock_id
16146 ldr x0, [x1, #:got_lo12:g_tmp_data_superblock_id]
16152 adrp x2, :got:p_valid_page_count_table
16153 ubfiz x1, x0, 1, 16
16154 ldr x2, [x2, #:got_lo12:p_valid_page_count_table]
16161 ldr x1, [x20, #:got_lo12:g_tmp_data_superblock_id]
16166 bl allocate_data_superblock
16173 ldp x19, x20, [sp,16]
16174 ldp x29, x30, [sp], 48
16176 .size allocate_new_data_superblock, .-allocate_new_data_superblock
16178 .global FtlCacheWriteBack
16179 .type FtlCacheWriteBack, %function
16181 adrp x0, :got:gp_last_act_superblock
16182 stp x29, x30, [sp, -144]!
16184 ldr x0, [x0, #:got_lo12:gp_last_act_superblock]
16185 stp x19, x20, [sp,16]
16186 stp x21, x22, [sp,32]
16187 stp x23, x24, [sp,48]
16188 stp x25, x26, [sp,64]
16189 stp x27, x28, [sp,80]
16191 adrp x0, :got:g_wr_page_num
16193 ldr x1, [x0, #:got_lo12:g_wr_page_num]
16196 adrp x21, :got:req_wr_io
16202 ldr x0, [x21, #:got_lo12:req_wr_io]
16204 adrp x26, :got:p_valid_page_count_table
16205 add x24, x24, :lo12:.LC114
16212 ldr x0, [x0, #:got_lo12:g_wr_page_num]
16217 ldr x1, [x21, #:got_lo12:req_wr_io]
16223 umull x20, w22, w25
16224 adrp x27, :got:c_ftl_nand_page_pre_blk
16225 adrp x28, :got:g_sys_ext_data
16227 ldr x3, [x21, #:got_lo12:req_wr_io]
16235 bl P2V_block_in_plane
16239 ldr x0, [x26, #:got_lo12:p_valid_page_count_table]
16240 ubfiz x1, x1, 1, 16
16246 ldr x0, [x27, #:got_lo12:c_ftl_nand_page_pre_blk]
16255 bl allocate_new_data_superblock
16257 ldr x1, [x28, #:got_lo12:g_sys_ext_data]
16261 ldr x23, [x21, #:got_lo12:req_wr_io]
16266 bl FtlGcMarkBadPhyBlk
16268 bl get_new_active_ppa
16297 bl P2V_block_in_plane
16299 ldr x2, [x26, #:got_lo12:p_valid_page_count_table]
16300 ubfiz x0, x1, 1, 16
16309 bl decrement_vpc_count
16317 ldp x19, x20, [sp,16]
16318 ldp x21, x22, [sp,32]
16319 ldp x23, x24, [sp,48]
16320 ldp x25, x26, [sp,64]
16321 ldp x27, x28, [sp,80]
16322 ldp x29, x30, [sp], 144
16324 .size FtlCacheWriteBack, .-FtlCacheWriteBack
16326 .global rk_ftl_cache_write_back
16327 .type rk_ftl_cache_write_back, %function
16328 rk_ftl_cache_write_back:
16329 stp x29, x30, [sp, -16]!
16331 bl FtlCacheWriteBack
16332 ldp x29, x30, [sp], 16
16334 .size rk_ftl_cache_write_back, .-rk_ftl_cache_write_back
16336 .global FtlSysFlush
16337 .type FtlSysFlush, %function
16339 stp x29, x30, [sp, -16]!
16341 bl FtlCacheWriteBack
16347 ldp x29, x30, [sp], 16
16349 .size FtlSysFlush, .-FtlSysFlush
16352 .type FtlDeInit, %function
16354 adrp x0, :got:gFtlInitStatus
16355 stp x29, x30, [sp, -16]!
16357 ldr x0, [x0, #:got_lo12:gFtlInitStatus]
16364 ldp x29, x30, [sp], 16
16366 .size FtlDeInit, .-FtlDeInit
16368 .global rk_ftl_de_init
16369 .type rk_ftl_de_init, %function
16371 stp x29, x30, [sp, -16]!
16376 ldp x29, x30, [sp], 16
16378 .size rk_ftl_de_init, .-rk_ftl_de_init
16381 .type FtlDiscard, %function
16383 stp x29, x30, [sp, -96]!
16386 stp x19, x20, [sp,16]
16388 adrp x0, :got:g_MaxLbaSector
16389 stp x21, x22, [sp,32]
16390 stp x23, x24, [sp,48]
16391 ldr x0, [x0, #:got_lo12:g_MaxLbaSector]
16400 adrp x22, :got:c_ftl_nand_sec_pre_page
16401 bl FtlCacheWriteBack
16402 ldr x0, [x22, #:got_lo12:c_ftl_nand_sec_pre_page]
16405 msub w20, w1, w21, w20
16411 csel w1, w1, w19, ls
16412 sub w19, w19, w1, uxth
16414 adrp x20, .LANCHOR0
16418 add x20, x20, :lo12:.LANCHOR0
16419 adrp x24, :got:g_totle_discard_page_count
16422 ldr x0, [x22, #:got_lo12:c_ftl_nand_sec_pre_page]
16437 ldr x1, [x24, #:got_lo12:g_totle_discard_page_count]
16446 bl P2V_block_in_plane
16447 bl decrement_vpc_count
16449 ldr x0, [x22, #:got_lo12:c_ftl_nand_sec_pre_page]
16456 add x0, x0, :lo12:.LANCHOR0
16466 ldp x19, x20, [sp,16]
16467 ldp x21, x22, [sp,32]
16468 ldp x23, x24, [sp,48]
16470 ldp x29, x30, [sp], 96
16472 .size FtlDiscard, .-FtlDiscard
16474 .global FtlGcFreeTempBlock
16475 .type FtlGcFreeTempBlock, %function
16476 FtlGcFreeTempBlock:
16477 stp x29, x30, [sp, -112]!
16479 stp x19, x20, [sp,16]
16480 adrp x19, :got:g_gc_temp_superblock
16481 adrp x20, :got:c_ftl_nand_page_pre_blk
16482 stp x21, x22, [sp,32]
16483 stp x23, x24, [sp,48]
16484 ldr x2, [x19, #:got_lo12:g_gc_temp_superblock]
16485 stp x25, x26, [sp,64]
16486 stp x27, x28, [sp,80]
16487 ldr x1, [x20, #:got_lo12:c_ftl_nand_page_pre_blk]
16494 adrp x0, :got:ftl_gc_temp_power_lost_recovery_flag
16495 ldr x0, [x0, #:got_lo12:ftl_gc_temp_power_lost_recovery_flag]
16498 ldr x22, [x19, #:got_lo12:g_gc_temp_superblock]
16502 adrp x21, :got:p_valid_page_count_table
16503 bl FtlCacheWriteBack
16504 ldr x20, [x20, #:got_lo12:c_ftl_nand_page_pre_blk]
16505 adrp x25, :got:p_gc_page_info
16508 ldr x0, [x21, #:got_lo12:p_valid_page_count_table]
16511 adrp x20, :got:g_gc_page_offset
16516 strh w0, [x1,x2,lsl 1]
16517 adrp x0, :got:g_totle_gc_page_count
16518 ldr x1, [x20, #:got_lo12:g_gc_page_offset]
16519 ldr x0, [x0, #:got_lo12:g_totle_gc_page_count]
16528 add x0, x0, :lo12:.LANCHOR2
16537 adrp x0, :got:g_num_free_superblocks
16538 ldr x0, [x0, #:got_lo12:g_num_free_superblocks]
16543 ldr x0, [x19, #:got_lo12:g_gc_temp_superblock]
16544 bl FtlGcScanTempBlk
16548 adrp x0, :got:g_sys_ext_data
16549 ubfiz x21, x21, 1, 16
16550 ldr x0, [x0, #:got_lo12:g_sys_ext_data]
16554 adrp x0, :got:p_erase_count_table
16555 ldr x0, [x0, #:got_lo12:p_erase_count_table]
16565 adrp x0, :got:ftl_gc_temp_power_lost_recovery_flag
16567 ldr x1, [x0, #:got_lo12:ftl_gc_temp_power_lost_recovery_flag]
16572 bl FtlBbmMapBadBlock
16575 ldr x0, [x19, #:got_lo12:ftl_gc_temp_power_lost_recovery_flag]
16580 adrp x0, .LANCHOR2+128
16582 ldrh w2, [x0,#:lo12:.LANCHOR2+128]
16588 ldr x0, [x25, #:got_lo12:p_gc_page_info]
16590 umull x24, w22, w26
16601 bl P2V_block_in_plane
16609 bl decrement_vpc_count
16614 ldr x0, [x20, #:got_lo12:g_gc_page_offset]
16623 ldr x0, [x19, #:got_lo12:g_gc_temp_superblock]
16628 bl decrement_vpc_count
16629 ldr x21, [x21, #:got_lo12:p_valid_page_count_table]
16630 ldr x0, [x19, #:got_lo12:g_gc_temp_superblock]
16633 ubfiz x1, x0, 1, 16
16636 bl INSERT_DATA_LIST
16639 bl INSERT_FREE_LIST
16641 ldr x19, [x19, #:got_lo12:g_gc_temp_superblock]
16644 adrp x0, :got:g_gc_blk_num
16645 ldr x20, [x20, #:got_lo12:g_gc_page_offset]
16647 ldr x0, [x0, #:got_lo12:g_gc_blk_num]
16651 adrp x0, :got:g_inkDie_check_enable
16652 adrp x1, :got:g_num_free_superblocks
16653 ldr x0, [x0, #:got_lo12:g_inkDie_check_enable]
16655 adrp x0, :got:c_ftl_nand_data_op_blks_per_plane
16657 adrp x2, :got:g_min_erase_count
16658 ldr x2, [x2, #:got_lo12:g_min_erase_count]
16662 ldr x0, [x0, #:got_lo12:c_ftl_nand_data_op_blks_per_plane]
16663 ldr x1, [x1, #:got_lo12:g_num_free_superblocks]
16668 adrp x1, :got:g_gc_free_blk_threshold
16670 ldr x1, [x1, #:got_lo12:g_gc_free_blk_threshold]
16673 adrp x0, :got:g_gc_superblock
16675 ldr x0, [x0, #:got_lo12:g_gc_superblock]
16678 ldr x0, [x0, #:got_lo12:c_ftl_nand_data_op_blks_per_plane]
16679 ldr x1, [x1, #:got_lo12:g_num_free_superblocks]
16682 add w0, w0, w0, lsl 1
16685 adrp x0, :got:g_gc_superblock
16687 ldr x0, [x0, #:got_lo12:g_gc_superblock]
16689 adrp x0, :got:g_gc_free_blk_threshold
16691 ldr x0, [x0, #:got_lo12:g_gc_free_blk_threshold]
16697 ldp x19, x20, [sp,16]
16698 ldp x21, x22, [sp,32]
16699 ldp x23, x24, [sp,48]
16700 ldp x25, x26, [sp,64]
16701 ldp x27, x28, [sp,80]
16702 ldp x29, x30, [sp], 112
16704 .size FtlGcFreeTempBlock, .-FtlGcFreeTempBlock
16706 .global FtlGcPageRecovery
16707 .type FtlGcPageRecovery, %function
16709 stp x29, x30, [sp, -32]!
16711 stp x19, x20, [sp,16]
16712 adrp x19, :got:c_ftl_nand_page_pre_blk
16713 adrp x20, :got:g_gc_temp_superblock
16714 ldr x19, [x19, #:got_lo12:c_ftl_nand_page_pre_blk]
16715 ldr x20, [x20, #:got_lo12:g_gc_temp_superblock]
16718 bl FtlGcScanTempBlk
16723 adrp x0, :got:gL2pMapInfo
16724 ldr x0, [x0, #:got_lo12:gL2pMapInfo]
16725 bl FtlMapBlkWriteDumpData
16727 bl FtlGcFreeTempBlock
16728 adrp x0, :got:ftl_gc_temp_power_lost_recovery_flag
16729 ldr x0, [x0, #:got_lo12:ftl_gc_temp_power_lost_recovery_flag]
16732 ldp x19, x20, [sp,16]
16733 ldp x29, x30, [sp], 32
16735 .size FtlGcPageRecovery, .-FtlGcPageRecovery
16737 .global FtlPowerLostRecovery
16738 .type FtlPowerLostRecovery, %function
16739 FtlPowerLostRecovery:
16740 adrp x0, :got:g_power_lost_recovery_flag
16741 stp x29, x30, [sp, -32]!
16743 ldr x0, [x0, #:got_lo12:g_power_lost_recovery_flag]
16745 adrp x19, :got:g_active_superblock
16747 adrp x0, :got:g_recovery_page_num
16748 ldr x0, [x0, #:got_lo12:g_recovery_page_num]
16750 ldr x19, [x19, #:got_lo12:g_active_superblock]
16752 bl FtlRecoverySuperblock
16754 adrp x19, :got:g_buffer_superblock
16755 bl FtlSlcSuperblockCheck
16756 ldr x19, [x19, #:got_lo12:g_buffer_superblock]
16758 bl FtlRecoverySuperblock
16760 bl FtlSlcSuperblockCheck
16761 bl FtlGcPageRecovery
16763 bl decrement_vpc_count
16766 ldp x29, x30, [sp], 32
16768 .size FtlPowerLostRecovery, .-FtlPowerLostRecovery
16770 .global Ftl_gc_temp_data_write_back
16771 .type Ftl_gc_temp_data_write_back, %function
16772 Ftl_gc_temp_data_write_back:
16773 stp x29, x30, [sp, -64]!
16776 stp x19, x20, [sp,16]
16777 stp x21, x22, [sp,32]
16778 adrp x19, :got:req_gc_dst
16779 adrp x21, :got:g_gc_num_req
16784 ldr x0, [x19, #:got_lo12:req_gc_dst]
16785 ldr x1, [x21, #:got_lo12:g_gc_num_req]
16790 ldr x22, [x21, #:got_lo12:g_gc_num_req]
16794 ldr x3, [x19, #:got_lo12:req_gc_dst]
16801 adrp x1, :got:g_gc_temp_superblock
16802 adrp x2, :got:p_valid_page_count_table
16803 ldr x1, [x1, #:got_lo12:g_gc_temp_superblock]
16804 ldr x2, [x2, #:got_lo12:p_valid_page_count_table]
16807 strh wzr, [x2,x5,lsl 1]
16809 adrp x1, :got:g_sys_ext_data
16810 ldr x1, [x1, #:got_lo12:g_sys_ext_data]
16818 bl FtlBbmMapBadBlock
16820 bl FtlGcPageVarInit
16832 ldr x19, [x19, #:got_lo12:req_gc_dst]
16836 adrp x0, :got:g_gc_temp_superblock
16837 ldr x0, [x0, #:got_lo12:g_gc_temp_superblock]
16842 bl FtlGcFreeTempBlock
16846 ldp x19, x20, [sp,16]
16847 ldp x21, x22, [sp,32]
16849 ldp x29, x30, [sp], 64
16851 .size Ftl_gc_temp_data_write_back, .-Ftl_gc_temp_data_write_back
16853 .global FtlSysBlkInit
16854 .type FtlSysBlkInit, %function
16856 adrp x0, :got:c_ftl_nand_max_sys_blks
16857 stp x29, x30, [sp, -48]!
16859 ldr x0, [x0, #:got_lo12:c_ftl_nand_max_sys_blks]
16860 stp x19, x20, [sp,16]
16861 stp x21, x22, [sp,32]
16863 bl FtlFreeSysBlkQueueInit
16865 adrp x0, :got:gSysInfo
16866 ldr x0, [x0, #:got_lo12:gSysInfo]
16879 bl FtlLoadVonderInfo
16880 bl Ftl_load_ext_data
16882 bl FtlFreeSysBLkSort
16883 bl SupperBlkListInit
16884 bl FtlPowerLostRecovery
16885 adrp x0, :got:c_ftl_nand_l2pmap_ram_region_num
16887 ldr x0, [x0, #:got_lo12:c_ftl_nand_l2pmap_ram_region_num]
16889 adrp x0, :got:p_l2p_ram_map
16890 ldr x0, [x0, #:got_lo12:p_l2p_ram_map]
16896 add x4, x0, x1, lsl 4
16899 tbz w4, #31, .L2280
16901 adrp x19, :got:g_sys_save_data
16903 adrp x20, :got:g_active_superblock
16904 ldr x1, [x19, #:got_lo12:g_sys_save_data]
16909 adrp x0, :got:g_power_lost_recovery_flag
16910 ldr x0, [x0, #:got_lo12:g_power_lost_recovery_flag]
16914 adrp x3, :got:p_valid_page_count_table
16915 ldr x1, [x20, #:got_lo12:g_active_superblock]
16916 ldr x3, [x3, #:got_lo12:p_valid_page_count_table]
16924 adrp x0, :got:c_ftl_nand_page_pre_blk
16926 ldr x0, [x0, #:got_lo12:c_ftl_nand_page_pre_blk]
16931 adrp x1, :got:g_buffer_superblock
16932 ldr x1, [x1, #:got_lo12:g_buffer_superblock]
16942 adrp x0, :got:gL2pMapInfo
16944 ldr x0, [x0, #:got_lo12:gL2pMapInfo]
16945 bl FtlMapBlkWriteDumpData
16946 adrp x0, :got:gVendorBlkInfo
16947 ldr x0, [x0, #:got_lo12:gVendorBlkInfo]
16948 bl FtlMapBlkWriteDumpData
16949 ldr x1, [x19, #:got_lo12:g_sys_save_data]
16957 bl FtlUpdateVaildLpn
16958 ldr x20, [x20, #:got_lo12:g_active_superblock]
16965 adrp x21, :got:g_buffer_superblock
16966 ldr x21, [x21, #:got_lo12:g_buffer_superblock]
16969 bl FtlGcRefreshBlock
16971 bl FtlGcRefreshBlock
16973 bl allocate_new_data_superblock
16975 bl allocate_new_data_superblock
16976 adrp x0, :got:gVendorBlkInfo
16977 ldr x0, [x0, #:got_lo12:gVendorBlkInfo]
16978 bl FtlMapBlkWriteDumpData
16980 ldr x19, [x19, #:got_lo12:g_sys_save_data]
16984 bl FtlVpcCheckAndModify
16987 ldp x19, x20, [sp,16]
16988 ldp x21, x22, [sp,32]
16989 ldp x29, x30, [sp], 48
16991 .size FtlSysBlkInit, .-FtlSysBlkInit
16994 .type FtlInit, %function
16996 stp x29, x30, [sp, -32]!
16997 adrp x1, :got:g_LowFormat
16999 stp x19, x20, [sp,16]
17000 adrp x19, :got:gFtlInitStatus
17003 ldr x19, [x19, #:got_lo12:gFtlInitStatus]
17006 add x0, x0, :lo12:.LC72
17007 ldr x1, [x1, #:got_lo12:g_LowFormat]
17010 add x1, x1, :lo12:.LC73
17013 bl FtlConstantsInit
17015 bl FtlVariablesInit
17016 adrp x0, :got:c_ftl_nand_max_sys_blks
17017 ldr x0, [x0, #:got_lo12:c_ftl_nand_max_sys_blks]
17019 bl FtlFreeSysBlkQueueInit
17028 ldp x19, x20, [sp,16]
17029 ldp x29, x30, [sp], 32
17031 .size FtlInit, .-FtlInit
17033 .global rk_ftl_init
17034 .type rk_ftl_init, %function
17036 stp x29, x30, [sp, -32]!
17039 stp x19, x20, [sp,16]
17040 adrp x20, :got:gLoaderBootInfo
17042 adrp x19, :got:RK29_NANDC_REG_BASE
17043 adrp x1, :got:RK29_NANDC1_REG_BASE
17044 ldr x20, [x20, #:got_lo12:gLoaderBootInfo]
17046 ldr x19, [x19, #:got_lo12:RK29_NANDC_REG_BASE]
17049 ldr x1, [x1, #:got_lo12:RK29_NANDC1_REG_BASE]
17051 bl rknand_get_reg_addr
17055 bl rk_nandc_irq_init
17060 bl FlashSramLoadStore
17061 bl rknand_flash_cs_init
17066 adrp x0, :got:gNandPhyInfo
17067 ldr x0, [x0, #:got_lo12:gNandPhyInfo]
17072 add x0, x0, :lo12:.LC115
17076 ldp x19, x20, [sp,16]
17077 ldp x29, x30, [sp], 32
17079 .size rk_ftl_init, .-rk_ftl_init
17081 .global Ftl_get_new_temp_ppa
17082 .type Ftl_get_new_temp_ppa, %function
17083 Ftl_get_new_temp_ppa:
17084 stp x29, x30, [sp, -32]!
17088 adrp x19, :got:g_gc_temp_superblock
17089 ldr x0, [x19, #:got_lo12:g_gc_temp_superblock]
17096 bl FtlCacheWriteBack
17098 bl FtlGcFreeTempBlock
17099 ldr x0, [x19, #:got_lo12:g_gc_temp_superblock]
17101 bl allocate_data_superblock
17102 adrp x0, :got:g_gc_blk_num
17103 ldr x0, [x0, #:got_lo12:g_gc_blk_num]
17105 adrp x0, :got:g_gc_page_offset
17106 ldr x0, [x0, #:got_lo12:g_gc_page_offset]
17113 ldr x0, [x19, #:got_lo12:g_gc_temp_superblock]
17114 bl get_new_active_ppa
17116 ldp x29, x30, [sp], 32
17118 .size Ftl_get_new_temp_ppa, .-Ftl_get_new_temp_ppa
17120 .global rk_ftl_garbage_collect
17121 .type rk_ftl_garbage_collect, %function
17122 rk_ftl_garbage_collect:
17123 stp x29, x30, [sp, -160]!
17125 stp x21, x22, [sp,32]
17126 adrp x22, :got:g_in_gc_progress
17127 stp x19, x20, [sp,16]
17128 stp x23, x24, [sp,48]
17129 ldr x2, [x22, #:got_lo12:g_in_gc_progress]
17130 stp x25, x26, [sp,64]
17131 stp x27, x28, [sp,80]
17136 adrp x0, .LANCHOR2+128
17139 ldrh w0, [x0,#:lo12:.LANCHOR2+128]
17143 adrp x0, :got:g_gc_next_blk_1
17145 ldr x0, [x0, #:got_lo12:g_gc_next_blk_1]
17151 adrp x0, :got:g_gc_temp_superblock
17152 ldr x0, [x0, #:got_lo12:g_gc_temp_superblock]
17157 bl FtlGcFreeTempBlock
17162 adrp x1, :got:g_gc_next_blk
17163 ldr x1, [x1, #:got_lo12:g_gc_next_blk]
17171 adrp x26, :got:g_gc_skip_write_count
17173 adrp x19, :got:g_gc_superblock
17174 ldr x20, [x26, #:got_lo12:g_gc_skip_write_count]
17177 add w0, w0, w24, lsl 7
17184 adrp x1, :got:g_inkDie_check_enable
17185 ldr x1, [x1, #:got_lo12:g_inkDie_check_enable]
17188 adrp x27, :got:g_min_erase_count
17189 ldr x27, [x27, #:got_lo12:g_min_erase_count]
17193 adrp x25, :got:gc_ink_free_return_value
17194 ldr x21, [x25, #:got_lo12:gc_ink_free_return_value]
17198 bl FtlGcReFreshBadBlk
17199 ldr x0, [x19, #:got_lo12:g_gc_superblock]
17204 adrp x0, :got:g_gc_next_blk
17205 ldr x0, [x0, #:got_lo12:g_gc_next_blk]
17226 bl List_get_gc_head_node
17231 adrp x20, :got:g_gc_blk_index
17232 ldr x20, [x20, #:got_lo12:g_gc_blk_index]
17235 adrp x27, :got:p_valid_page_count_table
17236 ubfiz x28, x28, 1, 16
17237 adrp x2, :got:c_ftl_nand_planes_num
17238 ldr x27, [x27, #:got_lo12:p_valid_page_count_table]
17239 ldr x2, [x2, #:got_lo12:c_ftl_nand_planes_num]
17243 adrp x1, :got:c_ftl_nand_page_pre_slc_blk
17244 ldr x1, [x1, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
17250 adrp x1, :got:g_in_swl_replace
17252 ldr x1, [x1, #:got_lo12:g_in_swl_replace]
17256 bl List_get_gc_head_node
17261 ubfiz x5, x21, 1, 16
17265 add x0, x0, :lo12:.LC116
17281 ldr x25, [x25, #:got_lo12:gc_ink_free_return_value]
17289 bl GetSwlReplaceBlock
17294 ldr x25, [x25, #:got_lo12:gc_ink_free_return_value]
17297 ldr x0, [x19, #:got_lo12:g_gc_superblock]
17302 adrp x0, :got:g_gc_temp_superblock
17303 ldr x0, [x0, #:got_lo12:g_gc_temp_superblock]
17307 adrp x0, :got:g_gc_next_blk
17308 ldr x0, [x0, #:got_lo12:g_gc_next_blk]
17312 adrp x25, :got:g_num_free_superblocks
17313 ldr x26, [x26, #:got_lo12:g_gc_skip_write_count]
17315 ldr x27, [x25, #:got_lo12:g_num_free_superblocks]
17320 csel w0, w0, w2, cc
17323 adrp x0, :got:gc_ink_free_return_value
17325 ldr x0, [x0, #:got_lo12:gc_ink_free_return_value]
17327 bl GetSwlReplaceBlock
17331 adrp x20, :got:g_gc_merge_free_blk_threshold
17333 ldr x26, [x20, #:got_lo12:g_gc_merge_free_blk_threshold]
17338 bl List_get_gc_head_node
17342 adrp x1, :got:g_SlcPartLbaEndSector
17343 adrp x4, :got:c_ftl_nand_type
17345 ldr x1, [x1, #:got_lo12:g_SlcPartLbaEndSector]
17347 adrp x1, :got:p_valid_page_count_table
17349 ldr x0, [x4, #:got_lo12:c_ftl_nand_type]
17353 adrp x0, :got:g_all_blk_used_slc_mode
17354 ldr x0, [x0, #:got_lo12:g_all_blk_used_slc_mode]
17357 adrp x0, :got:g_inkDie_check_enable
17358 ldr x0, [x0, #:got_lo12:g_inkDie_check_enable]
17362 ldr x1, [x1, #:got_lo12:p_valid_page_count_table]
17364 ldrh w5, [x0,x2,lsl 1]
17365 adrp x0, :got:c_ftl_nand_page_pre_slc_blk
17366 ldr x2, [x4, #:got_lo12:c_ftl_nand_type]
17367 ldr x0, [x0, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
17370 adrp x0, :got:c_ftl_nand_planes_num
17372 ldr x0, [x0, #:got_lo12:c_ftl_nand_planes_num]
17377 csel w0, w1, w0, eq
17382 bl List_get_gc_head_node
17384 adrp x0, :got:g_MaxLpn
17385 adrp x1, :got:g_VaildLpn
17386 ldr x20, [x20, #:got_lo12:g_gc_merge_free_blk_threshold]
17387 ldr x0, [x0, #:got_lo12:g_MaxLpn]
17388 ldr x1, [x1, #:got_lo12:g_VaildLpn]
17391 add w0, w0, w0, lsl 1
17402 ldr x20, [x20, #:got_lo12:g_gc_merge_free_blk_threshold]
17407 ldr x1, [x1, #:got_lo12:p_valid_page_count_table]
17409 ldrh w1, [x1,x2,lsl 1]
17412 bl List_get_gc_head_node
17430 adrp x0, :got:p_valid_page_count_table
17431 adrp x5, :got:g_gc_free_blk_threshold
17432 ubfiz x4, x21, 1, 16
17433 ldr x25, [x25, #:got_lo12:g_num_free_superblocks]
17435 ldr x0, [x0, #:got_lo12:p_valid_page_count_table]
17436 ldr x5, [x5, #:got_lo12:g_gc_free_blk_threshold]
17439 adrp x0, :got:p_erase_count_table
17441 ldr x0, [x0, #:got_lo12:p_erase_count_table]
17445 add x0, x0, :lo12:.LC117
17449 bl FtlGcReFreshBadBlk
17456 adrp x0, :got:g_num_free_superblocks
17458 ldr x0, [x0, #:got_lo12:g_num_free_superblocks]
17462 adrp x0, :got:c_ftl_nand_page_pre_blk
17464 ldr x0, [x0, #:got_lo12:c_ftl_nand_page_pre_blk]
17479 adrp x0, :got:g_gc_free_blk_threshold
17480 ldr x4, [x0, #:got_lo12:g_gc_free_blk_threshold]
17484 adrp x1, :got:g_gc_temp_superblock
17485 ldr x1, [x1, #:got_lo12:g_gc_temp_superblock]
17490 adrp x1, :got:g_gc_next_blk
17491 ldr x1, [x1, #:got_lo12:g_gc_next_blk]
17495 adrp x1, :got:gc_ink_free_return_value
17496 ldr x1, [x1, #:got_lo12:gc_ink_free_return_value]
17499 adrp x1, :got:g_MaxLpn
17500 adrp x3, :got:g_VaildLpn
17501 ldr x1, [x1, #:got_lo12:g_MaxLpn]
17502 ldr x3, [x3, #:got_lo12:g_VaildLpn]
17505 add w1, w1, w1, lsl 1
17509 adrp x1, :got:c_ftl_nand_data_op_blks_per_plane
17510 ldr x0, [x0, #:got_lo12:g_gc_free_blk_threshold]
17511 ldr x1, [x1, #:got_lo12:c_ftl_nand_data_op_blks_per_plane]
17513 add w1, w1, w1, lsl 1
17521 adrp x0, :got:g_in_swl_replace
17522 ldr x0, [x0, #:got_lo12:g_in_swl_replace]
17526 adrp x1, :got:c_ftl_nand_data_op_blks_per_plane
17527 ldr x0, [x0, #:got_lo12:g_gc_free_blk_threshold]
17528 ldr x1, [x1, #:got_lo12:c_ftl_nand_data_op_blks_per_plane]
17530 add w1, w1, w1, lsl 1
17536 adrp x0, :got:g_inkDie_check_enable
17537 ldr x0, [x0, #:got_lo12:g_inkDie_check_enable]
17544 adrp x0, :got:g_gc_temp_superblock
17546 ldr x0, [x0, #:got_lo12:g_gc_temp_superblock]
17551 adrp x1, :got:g_gc_next_blk
17552 ldr x1, [x1, #:got_lo12:g_gc_next_blk]
17556 ldr x1, [x19, #:got_lo12:g_gc_superblock]
17564 adrp x0, :got:g_in_swl_replace
17565 adrp x20, :got:g_num_free_superblocks
17566 adrp x21, :got:gc_ink_free_return_value
17567 ldr x0, [x0, #:got_lo12:g_in_swl_replace]
17569 adrp x0, :got:g_gc_free_blk_threshold
17570 ldr x24, [x20, #:got_lo12:g_num_free_superblocks]
17571 ldr x2, [x0, #:got_lo12:g_gc_free_blk_threshold]
17576 ldr x1, [x21, #:got_lo12:gc_ink_free_return_value]
17579 adrp x1, :got:g_MaxLpn
17580 adrp x3, :got:g_VaildLpn
17581 ldr x1, [x1, #:got_lo12:g_MaxLpn]
17582 ldr x3, [x3, #:got_lo12:g_VaildLpn]
17585 add w1, w1, w1, lsl 1
17589 adrp x1, :got:c_ftl_nand_data_op_blks_per_plane
17590 ldr x0, [x0, #:got_lo12:g_gc_free_blk_threshold]
17591 ldr x1, [x1, #:got_lo12:c_ftl_nand_data_op_blks_per_plane]
17593 add w1, w1, w1, lsl 1
17602 ldr x21, [x21, #:got_lo12:gc_ink_free_return_value]
17605 ldr x21, [x21, #:got_lo12:gc_ink_free_return_value]
17608 adrp x23, :got:c_ftl_nand_data_op_blks_per_plane
17609 ldr x23, [x23, #:got_lo12:c_ftl_nand_data_op_blks_per_plane]
17611 add w1, w1, w1, lsl 1
17614 bl List_get_gc_head_node
17615 ubfiz x0, x0, 1, 16
17616 adrp x1, :got:p_valid_page_count_table
17617 ldr x1, [x1, #:got_lo12:p_valid_page_count_table]
17620 adrp x0, :got:c_ftl_nand_page_pre_slc_blk
17621 adrp x1, :got:c_ftl_nand_planes_num
17622 ldr x0, [x0, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
17623 ldr x1, [x1, #:got_lo12:c_ftl_nand_planes_num]
17643 bl decrement_vpc_count
17644 ldr x20, [x20, #:got_lo12:g_num_free_superblocks]
17649 adrp x0, :got:g_inkDie_check_enable
17651 ldr x0, [x0, #:got_lo12:g_inkDie_check_enable]
17654 csinc w20, w20, wzr, ne
17659 ldr x1, [x19, #:got_lo12:g_gc_superblock]
17669 adrp x0, :got:g_gc_next_blk
17670 ldr x0, [x0, #:got_lo12:g_gc_next_blk]
17678 ldr x23, [x19, #:got_lo12:g_gc_superblock]
17685 ldr x23, [x19, #:got_lo12:g_gc_superblock]
17693 adrp x0, :got:g_gc_cur_blk_valid_pages
17696 ldr x0, [x0, #:got_lo12:g_gc_cur_blk_valid_pages]
17698 adrp x0, :got:p_valid_page_count_table
17699 ldr x0, [x0, #:got_lo12:p_valid_page_count_table]
17701 ldrh w1, [x0,x1,lsl 1]
17702 adrp x0, :got:g_gc_cur_blk_max_valid_pages
17703 ldr x0, [x0, #:got_lo12:g_gc_cur_blk_max_valid_pages]
17706 ldr x0, [x19, #:got_lo12:g_gc_superblock]
17708 adrp x0, :got:g_active_superblock
17709 ldr x0, [x0, #:got_lo12:g_active_superblock]
17713 adrp x0, :got:g_buffer_superblock
17714 ldr x0, [x0, #:got_lo12:g_buffer_superblock]
17724 ldr x19, [x19, #:got_lo12:g_gc_superblock]
17729 ldr x1, [x19, #:got_lo12:g_gc_superblock]
17732 adrp x0, :got:c_ftl_nand_page_pre_blk
17735 ldr x0, [x0, #:got_lo12:c_ftl_nand_page_pre_blk]
17739 adrp x1, :got:g_gc_cur_blk_valid_pages
17740 adrp x0, :got:g_gc_cur_blk_max_valid_pages
17741 ldr x1, [x1, #:got_lo12:g_gc_cur_blk_valid_pages]
17742 ldr x0, [x0, #:got_lo12:g_gc_cur_blk_max_valid_pages]
17748 adrp x0, :got:g_num_free_superblocks
17749 ldr x0, [x0, #:got_lo12:g_num_free_superblocks]
17753 adrp x0, :got:c_ftl_nand_page_pre_blk
17754 ldr x0, [x0, #:got_lo12:c_ftl_nand_page_pre_blk]
17757 ldr x0, [x19, #:got_lo12:g_gc_superblock]
17761 adrp x0, :got:g_in_swl_replace
17762 adrp x23, :got:c_ftl_nand_planes_num
17764 ldr x0, [x0, #:got_lo12:g_in_swl_replace]
17767 adrp x0, :got:g_gc_blk_index
17768 adrp x26, :got:g_gc_blk_index
17769 ldr x27, [x0, #:got_lo12:g_gc_blk_index]
17771 bl List_get_gc_head_node
17772 ldr x28, [x19, #:got_lo12:g_gc_superblock]
17789 adrp x1, :got:p_valid_page_count_table
17795 ldr x1, [x1, #:got_lo12:p_valid_page_count_table]
17796 ldr x5, [x23, #:got_lo12:c_ftl_nand_planes_num]
17798 adrp x1, :got:c_ftl_nand_page_pre_blk
17800 ldr x1, [x1, #:got_lo12:c_ftl_nand_page_pre_blk]
17811 adrp x0, :got:g_gc_blk_num
17812 ldr x0, [x0, #:got_lo12:g_gc_blk_num]
17817 ldr x0, [x26, #:got_lo12:g_gc_blk_index]
17825 ldr x19, [x19, #:got_lo12:g_gc_superblock]
17828 ldr x26, [x26, #:got_lo12:g_gc_blk_index]
17834 bl decrement_vpc_count
17835 ldr x26, [x26, #:got_lo12:g_gc_blk_index]
17841 ldr x23, [x19, #:got_lo12:g_gc_superblock]
17845 adrp x0, :got:g_gc_cur_blk_valid_pages
17847 ldr x0, [x0, #:got_lo12:g_gc_cur_blk_valid_pages]
17849 adrp x0, :got:p_valid_page_count_table
17850 ldr x0, [x0, #:got_lo12:p_valid_page_count_table]
17852 ldrh w1, [x0,x1,lsl 1]
17853 adrp x0, :got:g_gc_cur_blk_max_valid_pages
17854 ldr x0, [x0, #:got_lo12:g_gc_cur_blk_max_valid_pages]
17860 ldr x0, [x22, #:got_lo12:g_in_gc_progress]
17863 ldr x0, [x19, #:got_lo12:g_gc_superblock]
17865 adrp x0, :got:c_ftl_nand_page_pre_blk
17867 ldr x0, [x0, #:got_lo12:c_ftl_nand_page_pre_blk]
17878 adrp x0, :got:c_ftl_nand_planes_num
17879 ldr x0, [x0, #:got_lo12:c_ftl_nand_planes_num]
17881 ldr x0, [x19, #:got_lo12:g_gc_superblock]
17889 ldr x1, [x19, #:got_lo12:g_gc_superblock]
17890 add x1, x1, x0, lsl 1
17894 adrp x5, :got:req_gc
17896 orr w1, w2, w1, lsl 10
17898 ldr x5, [x5, #:got_lo12:req_gc]
17908 adrp x0, :got:req_gc
17913 ldr x0, [x0, #:got_lo12:req_gc]
17919 adrp x0, :got:req_gc
17921 ldr x6, [x0, #:got_lo12:req_gc]
17948 adrp x0, :got:g_gc_cur_blk_valid_pages
17952 ldr x1, [x0, #:got_lo12:g_gc_cur_blk_valid_pages]
17956 adrp x0, :got:g_gc_num_req
17957 ldr x28, [x0, #:got_lo12:g_gc_num_req]
17958 adrp x0, :got:req_gc_dst
17959 ldr x7, [x0, #:got_lo12:req_gc_dst]
17963 madd x1, x0, x27, x1
17967 bl Ftl_get_new_temp_ppa
17976 madd x0, x0, x27, x1
17981 adrp x2, :got:g_gc_temp_superblock
17987 ldr x2, [x2, #:got_lo12:g_gc_temp_superblock]
17991 adrp x0, :got:g_GlobalDataVersion
17992 ldr x0, [x0, #:got_lo12:g_GlobalDataVersion]
18009 bl Ftl_gc_temp_data_write_back
18018 adrp x0, :got:g_gc_num_req
18019 ldr x0, [x0, #:got_lo12:g_gc_num_req]
18022 bl Ftl_gc_temp_data_write_back
18025 ldr x22, [x22, #:got_lo12:g_in_gc_progress]
18028 adrp x0, :got:gc_ink_free_return_value
18029 ldr x0, [x0, #:got_lo12:gc_ink_free_return_value]
18033 adrp x0, :got:g_gc_cur_blk_valid_pages
18034 ldr x0, [x0, #:got_lo12:g_gc_cur_blk_valid_pages]
18037 adrp x0, :got:p_valid_page_count_table
18038 ldr x1, [x19, #:got_lo12:g_gc_superblock]
18039 ldr x2, [x0, #:got_lo12:p_valid_page_count_table]
18048 bl FtlCacheWriteBack
18052 ldr x0, [x19, #:got_lo12:g_gc_superblock]
18057 ldr x22, [x22, #:got_lo12:g_in_gc_progress]
18058 adrp x1, :got:gc_ink_free_return_value
18060 ldr x1, [x1, #:got_lo12:gc_ink_free_return_value]
18063 csinc w2, w2, w0, ne
18066 ldp x19, x20, [sp,16]
18067 ldp x21, x22, [sp,32]
18068 ldp x23, x24, [sp,48]
18069 ldp x25, x26, [sp,64]
18070 ldp x27, x28, [sp,80]
18071 ldp x29, x30, [sp], 160
18073 .size rk_ftl_garbage_collect, .-rk_ftl_garbage_collect
18076 .type FtlRead, %function
18078 stp x29, x30, [sp, -192]!
18081 stp x19, x20, [sp,16]
18082 stp x25, x26, [sp,64]
18083 stp x27, x28, [sp,80]
18084 stp x21, x22, [sp,32]
18085 stp x23, x24, [sp,48]
18094 bl FtlVendorPartRead
18099 adrp x0, :got:g_MaxLbaSector
18101 ldr x0, [x0, #:got_lo12:g_MaxLbaSector]
18106 adrp x23, :got:c_ftl_nand_sec_pre_page
18108 ldr x0, [x23, #:got_lo12:c_ftl_nand_sec_pre_page]
18112 adrp x0, :got:g_totle_read_sector
18114 ldr x0, [x0, #:got_lo12:g_totle_read_sector]
18119 adrp x0, :got:g_totle_read_page_count
18120 ldr x0, [x0, #:got_lo12:g_totle_read_page_count]
18126 bl FtlCacheMetchLpa
18128 bl FtlCacheWriteBack
18148 ldr x0, [x23, #:got_lo12:c_ftl_nand_sec_pre_page]
18152 madd w0, w20, w0, w3
18160 ubfiz x0, x0, 9, 23
18173 adrp x0, :got:req_read
18174 ldr x0, [x0, #:got_lo12:req_read]
18179 adrp x2, :got:p_io_data_buf_0
18182 ldr x2, [x2, #:got_lo12:p_io_data_buf_0]
18185 ldr x2, [x23, #:got_lo12:c_ftl_nand_sec_pre_page]
18188 msub w3, w3, w2, w19
18192 csel w3, w3, w28, ls
18203 adrp x0, :got:p_io_data_buf_1
18205 ldr x0, [x0, #:got_lo12:p_io_data_buf_1]
18208 ldr x0, [x23, #:got_lo12:c_ftl_nand_sec_pre_page]
18216 ldr x0, [x23, #:got_lo12:c_ftl_nand_sec_pre_page]
18221 ubfiz x0, x0, 9, 23
18225 adrp x0, :got:req_read
18226 adrp x2, :got:p_io_spare_buf
18227 ldr x0, [x0, #:got_lo12:req_read]
18228 ldr x2, [x2, #:got_lo12:p_io_spare_buf]
18232 adrp x0, :got:c_ftl_nand_byte_pre_oob
18233 ldr x0, [x0, #:got_lo12:c_ftl_nand_byte_pre_oob]
18238 and x0, x0, 4294967292
18245 adrp x0, :got:c_ftl_nand_planes_num
18246 ldr x0, [x0, #:got_lo12:c_ftl_nand_planes_num]
18252 adrp x0, :got:req_read
18255 ldr x0, [x0, #:got_lo12:req_read]
18260 ubfiz x0, x0, 9, 23
18274 adrp x0, :got:req_read
18275 ldr x0, [x0, #:got_lo12:req_read]
18282 adrp x0, :got:p_io_data_buf_0
18283 ldr x0, [x0, #:got_lo12:p_io_data_buf_0]
18297 adrp x0, :got:p_io_data_buf_1
18298 ldr x0, [x0, #:got_lo12:p_io_data_buf_1]
18302 ldr x0, [x23, #:got_lo12:c_ftl_nand_sec_pre_page]
18308 ubfiz x0, x0, 9, 23
18314 adrp x0, :got:req_read
18315 ldr x0, [x0, #:got_lo12:req_read]
18321 adrp x1, :got:g_sys_ext_data
18323 ldr x4, [x1, #:got_lo12:g_sys_ext_data]
18333 bl P2V_block_in_plane
18334 bl FtlGcRefreshBlock
18344 adrp x0, :got:g_gc_bad_block_temp_num
18345 ldr x0, [x0, #:got_lo12:g_gc_bad_block_temp_num]
18350 bl rk_ftl_garbage_collect
18354 ldp x19, x20, [sp,16]
18355 ldp x21, x22, [sp,32]
18356 ldp x23, x24, [sp,48]
18357 ldp x25, x26, [sp,64]
18358 ldp x27, x28, [sp,80]
18359 ldp x29, x30, [sp], 192
18361 .size FtlRead, .-FtlRead
18363 .global StorageSysDataLoad
18364 .type StorageSysDataLoad, %function
18365 StorageSysDataLoad:
18366 stp x29, x30, [sp, -48]!
18375 bl rknand_device_lock
18382 bl rknand_device_unlock
18385 ldp x29, x30, [sp], 48
18387 .size StorageSysDataLoad, .-StorageSysDataLoad
18390 .type FtlWrite, %function
18392 stp x29, x30, [sp, -320]!
18395 stp x23, x24, [sp,48]
18396 stp x25, x26, [sp,64]
18397 stp x19, x20, [sp,16]
18398 stp x21, x22, [sp,32]
18399 stp x27, x28, [sp,80]
18408 bl FtlVendorPartWrite
18411 adrp x0, :got:g_MaxLbaSector
18413 ldr x0, [x0, #:got_lo12:g_MaxLbaSector]
18418 adrp x0, :got:g_ftl_nand_free_count
18419 adrp x3, :got:c_ftl_nand_sec_pre_page
18423 ldr x0, [x0, #:got_lo12:g_ftl_nand_free_count]
18425 ldr x0, [x3, #:got_lo12:c_ftl_nand_sec_pre_page]
18432 adrp x0, :got:g_totle_write_page_count
18434 ldr x0, [x0, #:got_lo12:g_totle_write_page_count]
18438 adrp x0, :got:g_totle_write_sector
18439 ldr x0, [x0, #:got_lo12:g_totle_write_sector]
18447 adrp x19, :got:g_buffer_superblock
18448 ldr x19, [x19, #:got_lo12:g_buffer_superblock]
18451 adrp x19, :got:g_active_superblock
18452 ldr x19, [x19, #:got_lo12:g_active_superblock]
18454 adrp x22, :got:g_wr_page_num
18455 ldr x0, [x22, #:got_lo12:g_wr_page_num]
18458 adrp x0, :got:req_wr_io
18461 adrp x20, :got:last_cache_match_count
18462 ldr x0, [x0, #:got_lo12:req_wr_io]
18469 adrp x0, :got:g_totle_cache_write_count
18470 ldr x0, [x0, #:got_lo12:g_totle_cache_write_count]
18474 ldr x28, [x20, #:got_lo12:last_cache_match_count]
18478 msub w0, w26, w1, w23
18480 ubfiz x0, x0, 9, 23
18482 csel w19, w1, w24, ls
18501 ldr x20, [x20, #:got_lo12:last_cache_match_count]
18502 adrp x0, :got:gp_last_act_superblock
18504 ldr x0, [x0, #:got_lo12:gp_last_act_superblock]
18509 bl FtlCacheMetchLpa
18511 bl FtlCacheWriteBack
18513 adrp x0, :got:gp_last_act_superblock
18516 ldr x1, [x0, #:got_lo12:gp_last_act_superblock]
18522 add x0, x0, :lo12:.LC118
18529 adrp x0, :got:g_active_superblock
18530 adrp x20, :got:g_active_superblock
18531 ldr x0, [x0, #:got_lo12:g_active_superblock]
18534 adrp x19, :got:g_buffer_superblock
18535 ldr x0, [x19, #:got_lo12:g_buffer_superblock]
18538 bl allocate_new_data_superblock
18539 adrp x0, :got:power_up_flag
18540 ldr x0, [x0, #:got_lo12:power_up_flag]
18543 ldr x0, [x20, #:got_lo12:g_active_superblock]
18544 bl allocate_new_data_superblock
18545 adrp x0, :got:power_up_flag
18546 ldr x0, [x0, #:got_lo12:power_up_flag]
18550 ldr x19, [x20, #:got_lo12:g_active_superblock]
18553 adrp x2, :got:power_up_flag
18555 ldr x2, [x2, #:got_lo12:power_up_flag]
18559 bl allocate_new_data_superblock
18562 ldr x19, [x19, #:got_lo12:g_buffer_superblock]
18567 bl allocate_new_data_superblock
18570 ldr x0, [x0, #:got_lo12:gp_last_act_superblock]
18573 adrp x2, :got:c_wr_page_buf_num
18574 ldr x3, [x22, #:got_lo12:g_wr_page_num]
18577 ldr x0, [x2, #:got_lo12:c_wr_page_buf_num]
18583 csel w0, w1, w0, ls
18585 csel w0, w0, w21, ls
18610 ldr x1, [x1, #:got_lo12:c_ftl_nand_sec_pre_page]
18612 msub w2, w28, w1, w2
18622 bl get_new_active_ppa
18623 ldr x8, [x22, #:got_lo12:g_wr_page_num]
18624 adrp x4, :got:req_wr_io
18628 ldr x6, [x4, #:got_lo12:req_wr_io]
18638 adrp x0, :got:c_ftl_nand_byte_pre_oob
18639 ldr x0, [x0, #:got_lo12:c_ftl_nand_byte_pre_oob]
18641 adrp x0, :got:p_wr_io_spare_buf
18642 ldr x0, [x0, #:got_lo12:p_wr_io_spare_buf]
18645 and x3, x5, 4294967292
18646 adrp x5, :got:c_ftl_nand_byte_pre_page
18651 ldr x20, [x5, #:got_lo12:c_ftl_nand_byte_pre_page]
18655 adrp x9, :got:p_wr_io_data_buf
18656 and x0, x0, 4294967292
18657 ldr x9, [x9, #:got_lo12:p_wr_io_data_buf]
18677 ldr x0, [x0, #:got_lo12:c_ftl_nand_sec_pre_page]
18680 msub w20, w28, w20, w0
18687 ldr x0, [x0, #:got_lo12:c_ftl_nand_sec_pre_page]
18690 msub w0, w0, w20, w23
18694 csel w20, w20, w24, ls
18697 ldr x0, [x0, #:got_lo12:c_ftl_nand_sec_pre_page]
18706 ubfiz x1, x1, 9, 23
18712 ldr x2, [x22, #:got_lo12:g_wr_page_num]
18713 ldr x4, [x4, #:got_lo12:req_wr_io]
18721 ldr x2, [x22, #:got_lo12:g_wr_page_num]
18722 ldr x4, [x4, #:got_lo12:req_wr_io]
18723 ldr x5, [x5, #:got_lo12:c_ftl_nand_byte_pre_page]
18740 ldr x0, [x22, #:got_lo12:g_wr_page_num]
18741 ldr x1, [x4, #:got_lo12:req_wr_io]
18760 adrp x0, :got:g_sys_ext_data
18761 ldr x0, [x0, #:got_lo12:g_sys_ext_data]
18770 adrp x0, :got:g_sys_ext_data
18773 ldr x0, [x0, #:got_lo12:g_sys_ext_data]
18782 ldr x0, [x22, #:got_lo12:g_wr_page_num]
18784 ldr x5, [x5, #:got_lo12:c_ftl_nand_byte_pre_page]
18789 ldr x1, [x4, #:got_lo12:req_wr_io]
18802 ldr x1, [x22, #:got_lo12:g_wr_page_num]
18803 ldr x4, [x4, #:got_lo12:req_wr_io]
18809 ubfiz x0, x0, 9, 23
18815 ldr x1, [x22, #:got_lo12:g_wr_page_num]
18816 ldr x4, [x4, #:got_lo12:req_wr_io]
18822 ldr x1, [x1, #:got_lo12:c_ftl_nand_sec_pre_page]
18827 ubfiz x1, x1, 9, 23
18838 ldr x0, [x0, #:got_lo12:c_ftl_nand_sec_pre_page]
18842 ubfiz x0, x0, 9, 23
18852 ldr x1, [x1, #:got_lo12:c_ftl_nand_sec_pre_page]
18857 ubfiz x1, x1, 9, 23
18866 adrp x1, :got:g_GlobalDataVersion
18867 ldr x1, [x1, #:got_lo12:g_GlobalDataVersion]
18873 csel w0, w0, wzr, ne
18879 ldr x1, [x22, #:got_lo12:g_wr_page_num]
18898 ldr x1, [x22, #:got_lo12:g_wr_page_num]
18899 ldr x0, [x0, #:got_lo12:c_wr_page_buf_num]
18910 bl FtlCacheWriteBack
18911 ldr x0, [x22, #:got_lo12:g_wr_page_num]
18916 bl rknand_queue_cond_resched
18922 bl rk_ftl_garbage_collect
18925 ldp x19, x20, [sp,16]
18926 ldp x21, x22, [sp,32]
18927 ldp x23, x24, [sp,48]
18928 ldp x25, x26, [sp,64]
18929 ldp x27, x28, [sp,80]
18930 ldp x29, x30, [sp], 320
18932 .size FtlWrite, .-FtlWrite
18934 .global StorageSysDataStore
18935 .type StorageSysDataStore, %function
18936 StorageSysDataStore:
18937 stp x29, x30, [sp, -48]!
18942 bl rknand_device_lock
18949 bl rknand_device_unlock
18952 ldp x29, x30, [sp], 48
18954 .size StorageSysDataStore, .-StorageSysDataStore
18956 .type FlashReadFacBbtData.part.16, %function
18957 FlashReadFacBbtData.part.16:
18958 stp x29, x30, [sp, -32]!
18960 adrp x4, :got:gFlashPageBuffer0
18965 adrp x1, :got:gNandFlashIdbBlockAddr
18968 ldr x0, [x1, #:got_lo12:gNandFlashIdbBlockAddr]
18972 ldr x0, [x4, #:got_lo12:gFlashPageBuffer0]
18984 ldr x4, [x4, #:got_lo12:gFlashPageBuffer0]
18991 add x0, x0, :lo12:.LC119
18993 bl rknand_print_hex
18996 ldp x29, x30, [sp], 32
18998 .size FlashReadFacBbtData.part.16, .-FlashReadFacBbtData.part.16
19000 .global FlashReadFacBbtData
19001 .type FlashReadFacBbtData, %function
19002 FlashReadFacBbtData:
19003 adrp x4, :got:gNandPhyInfo
19004 stp x29, x30, [sp, -160]!
19006 ldr x4, [x4, #:got_lo12:gNandPhyInfo]
19007 stp x19, x20, [sp,16]
19008 stp x21, x22, [sp,32]
19009 stp x23, x24, [sp,48]
19010 stp x25, x26, [sp,64]
19018 adrp x4, :got:gFlashSpareBuffer
19022 adrp x0, :got:gFlashPageBuffer0
19024 ldr x0, [x0, #:got_lo12:gFlashPageBuffer0]
19031 ldr x0, [x4, #:got_lo12:gFlashSpareBuffer]
19047 ldr x0, [x21, #:got_lo12:gFlashSpareBuffer]
19057 bl FlashReadFacBbtData.part.16
19066 ldp x19, x20, [sp,16]
19067 ldp x21, x22, [sp,32]
19068 ldp x23, x24, [sp,48]
19069 ldp x25, x26, [sp,64]
19071 ldp x29, x30, [sp], 160
19073 .size FlashReadFacBbtData, .-FlashReadFacBbtData
19075 .global FlashGetBadBlockList
19076 .type FlashGetBadBlockList, %function
19077 FlashGetBadBlockList:
19078 adrp x2, :got:gpNandParaInfo
19079 stp x29, x30, [sp, -48]!
19081 ldr x2, [x2, #:got_lo12:gpNandParaInfo]
19082 stp x19, x20, [sp,16]
19085 adrp x20, :got:gFlashPageBuffer1
19089 ldr x0, [x20, #:got_lo12:gFlashPageBuffer1]
19095 bl FlashReadFacBbtData
19110 ldr x3, [x20, #:got_lo12:gFlashPageBuffer1]
19114 ldr w4, [x6,x4,lsl 2]
19118 ubfiz x1, x1, 1, 16
19128 ubfiz x1, x1, 1, 16
19130 ldp x19, x20, [sp,16]
19134 ldp x29, x30, [sp], 48
19136 .size FlashGetBadBlockList, .-FlashGetBadBlockList
19139 .type FtlMakeBbt, %function
19141 stp x29, x30, [sp, -96]!
19143 stp x19, x20, [sp,16]
19144 adrp x19, :got:gBbtInfo
19145 stp x21, x22, [sp,32]
19146 stp x23, x24, [sp,48]
19147 stp x25, x26, [sp,64]
19148 stp x27, x28, [sp,80]
19151 bl FtlLoadFactoryBbt
19152 ldr x22, [x19, #:got_lo12:gBbtInfo]
19153 adrp x25, :got:c_ftl_nand_blks_per_die
19156 adrp x0, :got:c_ftl_nand_die_num
19157 ldr x0, [x0, #:got_lo12:c_ftl_nand_die_num]
19161 adrp x0, :got:p_sys_data_buf
19162 adrp x1, :got:req_sys
19164 ldr x0, [x0, #:got_lo12:p_sys_data_buf]
19165 ldr x20, [x1, #:got_lo12:req_sys]
19166 adrp x1, :got:p_sys_spare_buf
19169 ldr x1, [x1, #:got_lo12:p_sys_spare_buf]
19175 ldr x24, [x25, #:got_lo12:c_ftl_nand_blks_per_die]
19177 madd w26, w21, w1, w26
19193 adrp x28, :got:c_ftl_nand_bbm_buf_size
19194 bl FlashGetBadBlockList
19198 ldr x0, [x25, #:got_lo12:c_ftl_nand_blks_per_die]
19203 ldr x26, [x25, #:got_lo12:c_ftl_nand_blks_per_die]
19205 madd w0, w21, w0, w20
19206 bl FtlBbmIsBadBlock
19213 adrp x0, :got:p_sys_spare_buf
19217 ldr x0, [x0, #:got_lo12:p_sys_spare_buf]
19227 madd w26, w21, w0, w1
19228 adrp x0, :got:req_sys
19230 ldr x27, [x0, #:got_lo12:req_sys]
19233 ldr x0, [x28, #:got_lo12:c_ftl_nand_bbm_buf_size]
19240 bl FlashEraseBlocks
19250 bl FtlBbmMapBadBlock
19257 bl FtlBbmMapBadBlock
19261 adrp x21, :got:c_ftl_nand_reserved_blks
19263 ldr x0, [x21, #:got_lo12:c_ftl_nand_reserved_blks]
19269 bl FtlBbmMapBadBlock
19273 ldr x0, [x19, #:got_lo12:gBbtInfo]
19279 ldr x21, [x19, #:got_lo12:gBbtInfo]
19285 bl FtlBbmIsBadBlock
19292 bl FtlBbmMapBadBlock
19308 ldr x19, [x19, #:got_lo12:gBbtInfo]
19309 adrp x0, :got:req_erase
19313 ldr x0, [x0, #:got_lo12:req_erase]
19322 bl FlashEraseBlocks
19324 bl FtlBbmMapBadBlock
19326 bl FtlBbmMapBadBlock
19338 ldp x19, x20, [sp,16]
19339 ldp x21, x22, [sp,32]
19340 ldp x23, x24, [sp,48]
19341 ldp x25, x26, [sp,64]
19342 ldp x27, x28, [sp,80]
19343 ldp x29, x30, [sp], 96
19345 .size FtlMakeBbt, .-FtlMakeBbt
19347 .global FtlLowFormat
19348 .type FtlLowFormat, %function
19350 stp x29, x30, [sp, -80]!
19352 stp x19, x20, [sp,16]
19353 adrp x19, :got:g_GlobalSysVersion
19355 stp x23, x24, [sp,48]
19356 stp x21, x22, [sp,32]
19357 ldr x0, [x19, #:got_lo12:g_GlobalSysVersion]
19358 adrp x23, :got:c_ftl_nand_max_sys_blks
19360 adrp x0, :got:g_GlobalDataVersion
19361 ldr x0, [x0, #:got_lo12:g_GlobalDataVersion]
19363 ldr x0, [x23, #:got_lo12:c_ftl_nand_max_sys_blks]
19365 bl FtlFreeSysBlkQueueInit
19371 adrp x3, :got:c_ftl_nand_sec_pre_page
19372 adrp x4, :got:p_io_data_buf_0
19373 adrp x5, :got:p_io_data_buf_1
19375 ldr x1, [x3, #:got_lo12:c_ftl_nand_sec_pre_page]
19379 ldr x1, [x4, #:got_lo12:p_io_data_buf_0]
19380 ubfiz x2, x0, 2, 16
19383 orr w1, w0, w1, lsl 16
19387 ldr x1, [x5, #:got_lo12:p_io_data_buf_1]
19390 movk w1, 0xa0f, lsl 16
19394 adrp x24, :got:c_ftl_nand_data_blks_per_plane
19396 adrp x25, :got:c_ftl_nand_blk_pre_plane
19397 ldr x0, [x24, #:got_lo12:c_ftl_nand_data_blks_per_plane]
19400 ldr x0, [x25, #:got_lo12:c_ftl_nand_blk_pre_plane]
19401 adrp x20, :got:c_ftl_nand_blk_pre_plane
19408 bl FtlLowFormatEraseBlock
19414 adrp x22, :got:c_ftl_nand_planes_num
19416 ldr x0, [x22, #:got_lo12:c_ftl_nand_planes_num]
19426 adrp x0, :got:c_ftl_nand_init_sys_blks_per_plane
19427 ldr x0, [x0, #:got_lo12:c_ftl_nand_init_sys_blks_per_plane]
19430 bl FtlSysBlkNumInit
19431 ldr x23, [x23, #:got_lo12:c_ftl_nand_max_sys_blks]
19433 bl FtlFreeSysBlkQueueInit
19434 ldr x0, [x24, #:got_lo12:c_ftl_nand_data_blks_per_plane]
19437 ldr x0, [x20, #:got_lo12:c_ftl_nand_blk_pre_plane]
19444 bl FtlLowFormatEraseBlock
19448 ldr x0, [x24, #:got_lo12:c_ftl_nand_data_blks_per_plane]
19455 bl FtlLowFormatEraseBlock
19461 adrp x0, :got:g_cur_erase_blk
19462 ldr x1, [x20, #:got_lo12:c_ftl_nand_blk_pre_plane]
19463 adrp x2, :got:g_MaxLpn
19464 adrp x5, :got:c_ftl_nand_data_op_blks_per_plane
19465 ldr x0, [x0, #:got_lo12:g_cur_erase_blk]
19468 adrp x0, :got:c_ftl_nand_max_data_blks
19469 ldr x22, [x22, #:got_lo12:c_ftl_nand_planes_num]
19470 ldr x0, [x0, #:got_lo12:c_ftl_nand_max_data_blks]
19471 ldr x8, [x2, #:got_lo12:g_MaxLpn]
19477 ldr x4, [x5, #:got_lo12:c_ftl_nand_data_op_blks_per_plane]
19491 adrp x3, :got:g_inkDie_check_enable
19492 ldr x3, [x3, #:got_lo12:g_inkDie_check_enable]
19496 ldr x1, [x5, #:got_lo12:c_ftl_nand_data_op_blks_per_plane]
19500 add w3, w4, w3, asr 2
19503 adrp x3, :got:c_ftl_nand_ext_blk_pre_plane
19504 ldr x3, [x3, #:got_lo12:c_ftl_nand_ext_blk_pre_plane]
19507 ldr x3, [x5, #:got_lo12:c_ftl_nand_data_op_blks_per_plane]
19509 add w4, w4, w1, lsr 1
19514 ldr x4, [x2, #:got_lo12:g_MaxLpn]
19520 ldr x1, [x5, #:got_lo12:c_ftl_nand_data_op_blks_per_plane]
19521 adrp x22, :got:g_MaxLbn
19522 ldr x2, [x2, #:got_lo12:g_MaxLpn]
19523 adrp x21, :got:p_valid_page_count_table
19527 ldr x1, [x22, #:got_lo12:g_MaxLbn]
19530 adrp x1, :got:c_ftl_nand_page_pre_blk
19531 ldr x1, [x1, #:got_lo12:c_ftl_nand_page_pre_blk]
19535 adrp x2, :got:c_ftl_nand_sec_pre_page
19536 adrp x1, :got:g_MaxLbaSector
19537 ldr x2, [x2, #:got_lo12:c_ftl_nand_sec_pre_page]
19538 ldr x1, [x1, #:got_lo12:g_MaxLbaSector]
19543 ldr x0, [x20, #:got_lo12:c_ftl_nand_blk_pre_plane]
19545 ldr x1, [x21, #:got_lo12:p_valid_page_count_table]
19551 adrp x0, :got:g_VaildLpn
19554 ldr x0, [x0, #:got_lo12:g_VaildLpn]
19556 adrp x0, :got:g_gc_superblock
19557 ldr x0, [x0, #:got_lo12:g_gc_superblock]
19562 adrp x0, :got:g_active_superblock
19564 ldr x2, [x0, #:got_lo12:g_active_superblock]
19570 ldr x21, [x24, #:got_lo12:g_active_superblock]
19575 ldr x0, [x20, #:got_lo12:p_valid_page_count_table]
19578 strh w23, [x0,x1,lsl 1]
19584 ldr x1, [x19, #:got_lo12:g_GlobalSysVersion]
19592 ldr x0, [x20, #:got_lo12:p_valid_page_count_table]
19594 strh w2, [x0,x1,lsl 1]
19595 adrp x0, :got:g_buffer_superblock
19598 ldr x1, [x0, #:got_lo12:g_buffer_superblock]
19606 ldr x21, [x23, #:got_lo12:g_buffer_superblock]
19611 ldr x0, [x20, #:got_lo12:p_valid_page_count_table]
19614 strh w24, [x0,x1,lsl 1]
19620 ldr x19, [x19, #:got_lo12:g_GlobalSysVersion]
19627 ldr x20, [x20, #:got_lo12:p_valid_page_count_table]
19630 strh w2, [x0,x1,lsl 1]
19631 adrp x0, :got:g_gc_temp_superblock
19632 ldr x0, [x0, #:got_lo12:g_gc_temp_superblock]
19634 bl FtlFreeSysBlkQueueOut
19635 adrp x1, :got:gSysInfo
19636 ldr x1, [x1, #:got_lo12:gSysInfo]
19640 ldr x22, [x22, #:got_lo12:g_MaxLbn]
19650 adrp x0, :got:gFtlInitStatus
19652 ldr x0, [x0, #:got_lo12:gFtlInitStatus]
19657 ldp x19, x20, [sp,16]
19658 ldp x21, x22, [sp,32]
19659 ldp x23, x24, [sp,48]
19660 ldp x29, x30, [sp], 80
19662 .size FtlLowFormat, .-FtlLowFormat
19664 .global FtlReInitForSDUpdata
19665 .type FtlReInitForSDUpdata, %function
19666 FtlReInitForSDUpdata:
19667 adrp x0, :got:RK29_NANDC_REG_BASE
19668 stp x29, x30, [sp, -48]!
19670 ldr x0, [x0, #:got_lo12:RK29_NANDC_REG_BASE]
19676 bl FlashLoadFactorBbt
19678 bl FlashMakeFactorBbt
19680 adrp x0, :got:gFlashPageBuffer1
19681 ldr x0, [x0, #:got_lo12:gFlashPageBuffer1]
19683 bl FlashReadIdbDataRaw
19688 bl FlashReadFacBbtData
19703 adrp x0, :got:gNandIDBResBlkNum
19704 ldr x0, [x0, #:got_lo12:gNandIDBResBlkNum]
19718 adrp x0, :got:gNandIDBResBlkNum
19719 ldr x0, [x0, #:got_lo12:gNandIDBResBlkNum]
19724 adrp x1, :got:gNandIDBResBlkNum
19725 adrp x0, :got:gNandPhyInfo
19726 ldr x1, [x1, #:got_lo12:gNandIDBResBlkNum]
19727 ldr x0, [x0, #:got_lo12:gNandPhyInfo]
19733 add x1, x1, :lo12:.LC73
19734 add x0, x0, :lo12:.LC72
19737 adrp x0, :got:gNandPhyInfo
19738 ldr x0, [x0, #:got_lo12:gNandPhyInfo]
19739 bl FtlConstantsInit
19740 bl FtlVariablesInit
19741 adrp x0, :got:c_ftl_nand_max_sys_blks
19742 ldr x0, [x0, #:got_lo12:c_ftl_nand_max_sys_blks]
19744 bl FtlFreeSysBlkQueueInit
19760 adrp x1, :got:gFtlInitStatus
19762 ldr x1, [x1, #:got_lo12:gFtlInitStatus]
19768 ldp x29, x30, [sp], 48
19770 .size FtlReInitForSDUpdata, .-FtlReInitForSDUpdata
19772 .global IdBlockReadData
19773 .type IdBlockReadData, %function
19775 stp x29, x30, [sp, -176]!
19777 stp x19, x20, [sp,16]
19778 stp x23, x24, [sp,48]
19780 adrp x23, :got:gpNandParaInfo
19781 adrp x0, :got:gBlockPageAlignSize
19782 stp x21, x22, [sp,32]
19783 ldr x21, [x23, #:got_lo12:gpNandParaInfo]
19785 ldr x0, [x0, #:got_lo12:gBlockPageAlignSize]
19786 stp x27, x28, [sp,80]
19787 stp x25, x26, [sp,64]
19796 add x0, x0, :lo12:.LC120
19803 adrp x6, :got:slcPageToMlcPageTbl
19804 adrp x7, :got:gFlashPageBuffer1
19806 adrp x8, :got:gNandFlashEccBits
19808 adrp x9, :got:gNandFlashIDBEccBits
19809 msub w19, w0, w19, w20
19817 ldr x1, [x6, #:got_lo12:slcPageToMlcPageTbl]
19819 ldr x25, [x7, #:got_lo12:gFlashPageBuffer1]
19823 ldrh w24, [x1,w0,sxtw 1]
19825 ldr x0, [x26, #:got_lo12:gpNandParaInfo]
19832 ldr x0, [x8, #:got_lo12:gNandFlashEccBits]
19836 ldr x0, [x9, #:got_lo12:gNandFlashIDBEccBits]
19837 madd w24, w24, w28, w3
19852 ubfiz x0, x21, 9, 16
19872 add x0, x0, :lo12:.LC121
19875 ldp x19, x20, [sp,16]
19876 ldp x21, x22, [sp,32]
19877 ldp x23, x24, [sp,48]
19878 ldp x25, x26, [sp,64]
19879 ldp x27, x28, [sp,80]
19880 ldp x29, x30, [sp], 176
19882 .size IdBlockReadData, .-IdBlockReadData
19884 .global IDBlockWriteData
19885 .type IDBlockWriteData, %function
19887 stp x29, x30, [sp, -224]!
19889 stp x21, x22, [sp,32]
19890 stp x25, x26, [sp,64]
19891 adrp x21, :got:gpNandParaInfo
19893 adrp x0, :got:gBlockPageAlignSize
19894 stp x23, x24, [sp,48]
19895 ldr x22, [x21, #:got_lo12:gpNandParaInfo]
19897 ldr x0, [x0, #:got_lo12:gBlockPageAlignSize]
19898 stp x27, x28, [sp,80]
19899 stp x19, x20, [sp,16]
19909 add x0, x0, :lo12:.LC122
19912 adrp x0, :got:gNandPhyInfo
19915 ldr x0, [x0, #:got_lo12:gNandPhyInfo]
19922 adrp x5, :got:slcPageToMlcPageTbl
19923 adrp x6, :got:gNandFlashEccBits
19924 adrp x7, :got:gNandFlashIDBEccBits
19926 msub w26, w26, w19, w25
19936 ldr x0, [x5, #:got_lo12:slcPageToMlcPageTbl]
19939 ldrh w4, [x0,w1,sxtw 1]
19944 ldr x4, [x5, #:got_lo12:slcPageToMlcPageTbl]
19945 ubfiz x2, x24, 9, 16
19946 ldr x0, [x6, #:got_lo12:gNandFlashEccBits]
19950 ldrh w1, [x4,w19,sxtw 1]
19953 ldr x0, [x7, #:got_lo12:gNandFlashIDBEccBits]
19954 madd w1, w1, w22, w23
19963 ldr x0, [x21, #:got_lo12:gpNandParaInfo]
19978 ldrh w2, [x4,w19,sxtw 1]
19980 bl FlashPageProgMsbFFData
19990 add x0, x0, :lo12:.LC123
19993 ldp x19, x20, [sp,16]
19994 ldp x21, x22, [sp,32]
19995 ldp x23, x24, [sp,48]
19996 ldp x25, x26, [sp,64]
19997 ldp x27, x28, [sp,80]
19998 ldp x29, x30, [sp], 224
20000 .size IDBlockWriteData, .-IDBlockWriteData
20002 .global write_idblock
20003 .type write_idblock, %function
20005 stp x29, x30, [sp, -112]!
20007 stp x23, x24, [sp,48]
20009 adrp x0, :got:gpNandParaInfo
20010 stp x19, x20, [sp,16]
20011 stp x21, x22, [sp,32]
20012 ldr x0, [x0, #:got_lo12:gpNandParaInfo]
20014 stp x25, x26, [sp,64]
20015 stp x27, x28, [sp,80]
20019 movk w1, 0x240, lsl 16
20022 adrp x0, :got:gBlockPageAlignSize
20023 ldr x0, [x0, #:got_lo12:gBlockPageAlignSize]
20026 movk x0, 0x3, lsl 16
20027 bl kmalloc_order_trace
20035 ubfiz x0, x19, 9, 23
20045 adrp x26, :got:gNandIDBResBlkNum
20046 csel w19, w19, w0, ls
20048 add x0, x0, :lo12:.LC124
20052 bl rknand_print_hex
20053 ldr x26, [x26, #:got_lo12:gNandIDBResBlkNum]
20056 add x0, x0, :lo12:.LC125
20068 add x0, x0, :lo12:.LC126
20079 add x25, x25, :lo12:.LC127
20080 add x26, x26, :lo12:.LC128
20081 add x27, x27, :lo12:.LC129
20083 adrp x0, :got:gNandPhyInfo
20084 ldr w2, [x23,x28,lsl 2]
20086 ldr x0, [x0, #:got_lo12:gNandPhyInfo]
20090 adrp x0, :got:gNandFlashIdbBlockAddr
20091 ldr x0, [x0, #:got_lo12:gNandFlashIdbBlockAddr]
20100 ldr w0, [x23,x28,lsl 2]
20104 bl IDBlockWriteData
20105 ldr w0, [x23,x28,lsl 2]
20117 ldr w4, [x20,x0,lsl 2]
20120 add x1, x21, x0, lsl 2
20124 ldr w2, [x23,x28,lsl 2]
20137 bl rknand_print_hex
20143 bl rknand_print_hex
20148 ldr w0, [x23,x28,lsl 2]
20152 bl IDBlockWriteData
20154 add x0, x0, :lo12:.LC130
20168 ldp x19, x20, [sp,16]
20169 ldp x21, x22, [sp,32]
20170 ldp x23, x24, [sp,48]
20171 ldp x25, x26, [sp,64]
20172 ldp x27, x28, [sp,80]
20173 ldp x29, x30, [sp], 112
20175 .size write_idblock, .-write_idblock
20178 .type CRC_32, %function
20182 adrp x5, :got:gTable_Crc32
20189 ldr x6, [x5, #:got_lo12:gTable_Crc32]
20190 eor w3, w3, w0, lsr 24
20191 ldr w3, [x6,w3,uxtw 2]
20192 eor w0, w3, w0, lsl 8
20196 .size CRC_32, .-CRC_32
20198 .type rknand_sys_storage_ioctl, %function
20199 rknand_sys_storage_ioctl:
20201 stp x29, x30, [sp, -48]!
20203 stp x19, x20, [sp,16]
20209 movk w0, 0x4004, lsl 16
20213 movk w0, 0x4004, lsl 16
20217 movk w0, 0x4004, lsl 16
20221 movk w0, 0x4004, lsl 16
20225 movk w0, 0x4004, lsl 16
20229 movk w0, 0x4004, lsl 16
20233 movk w0, 0x4004, lsl 16
20236 bl rknand_dev_flush
20240 movk w0, 0x4004, lsl 16
20244 movk w0, 0x4004, lsl 16
20250 movk w0, 0x4004, lsl 16
20254 movk w0, 0x4004, lsl 16
20258 movk w0, 0x4004, lsl 16
20264 movk w0, 0x4004, lsl 16
20268 movk w0, 0x4004, lsl 16
20274 movk w0, 0x4004, lsl 16
20278 movk w0, 0x4004, lsl 16
20282 movk w0, 0x4004, lsl 16
20286 movk w0, 0x4004, lsl 16
20290 movk w0, 0x4004, lsl 16
20294 movk w0, 0x4004, lsl 16
20300 movk w0, 0x4004, lsl 16
20304 movk w0, 0x4004, lsl 16
20308 movk w0, 0x4004, lsl 16
20312 movk w0, 0x4004, lsl 16
20318 movk w0, 0x4004, lsl 16
20322 movk w0, 0x4004, lsl 16
20328 add x0, x0, :lo12:.LC131
20333 bl rk_copy_from_user
20337 add x0, x0, :lo12:.LC132
20343 add x0, x0, :lo12:.LC133
20348 bl rknand_device_unlock
20353 bl rknand_device_unlock
20356 ubfiz x2, x19, 9, 23
20360 add x0, x0, :lo12:.LC134
20366 add x0, x0, :lo12:.LC135
20371 bl rk_copy_from_user
20376 add x0, x0, :lo12:.LC136
20378 adrp x0, :got:g_idb_buffer
20380 ldr x21, [x0, #:got_lo12:g_idb_buffer]
20391 movk w1, 0x240, lsl 16
20393 bl kmalloc_order_trace
20400 movk w1, 0x3, lsl 16
20403 ldr x19, [x19, #:got_lo12:g_idb_buffer]
20406 add x0, x1, x0, uxtw
20412 add x0, x0, :lo12:.LC137
20417 bl rk_copy_from_user
20422 add x0, x0, :lo12:.LC138
20426 movk w0, 0x3, lsl 16
20429 adrp x19, :got:g_idb_buffer
20430 ldr x19, [x19, #:got_lo12:g_idb_buffer]
20441 bl rknand_device_unlock
20446 bl rknand_device_unlock
20453 add x0, x0, :lo12:.LC139
20463 add x0, x0, :lo12:.LC140
20465 bl rknand_device_unlock
20466 bl FtlReInitForSDUpdata
20468 bl rknand_device_unlock
20470 bl nand_blk_add_whole_disk
20471 bl rknand_device_unlock
20475 bl FlashReadFacBbtData
20476 bl rknand_device_unlock
20479 add x0, x0, :lo12:.LC141
20482 bl rknand_print_hex
20489 add x0, x0, :lo12:.LC142
20491 adrp x0, :got:gpDrmKeyInfo
20494 ldr x0, [x0, #:got_lo12:gpDrmKeyInfo]
20502 add x0, x0, :lo12:.LC143
20504 bl rknand_device_unlock
20510 bl rknand_device_unlock
20518 add x0, x0, :lo12:.LC144
20523 bl rk_copy_from_user
20528 movk w0, 0x4b4d, lsl 16
20538 adrp x1, :got:gpDrmKeyInfo
20541 ldr x1, [x1, #:got_lo12:gpDrmKeyInfo]
20544 adrp x0, :got:SecureBootCheckOK
20545 ldr x0, [x0, #:got_lo12:SecureBootCheckOK]
20548 movk w0, 0xc059, lsl 16
20567 add x0, x0, :lo12:.LC145
20572 bl rk_copy_from_user
20576 movk w0, 0x4b4d, lsl 16
20582 adrp x0, :got:SecureBootCheckOK
20583 ldr x0, [x0, #:got_lo12:SecureBootCheckOK]
20586 movk w0, 0xc059, lsl 16
20594 adrp x0, :got:gpDrmKeyInfo
20595 ldr x0, [x0, #:got_lo12:gpDrmKeyInfo]
20608 add x0, x0, :lo12:.LC146
20613 bl rk_copy_from_user
20617 movk w0, 0x4253, lsl 16
20623 adrp x19, :got:SecureBootEn
20624 ldr x0, [x19, #:got_lo12:SecureBootEn]
20631 adrp x0, :got:gpBootConfig
20633 movk w3, 0x4453, lsl 16
20634 ldr x1, [x0, #:got_lo12:gpBootConfig]
20640 movk w3, 0x4453, lsl 16
20649 ldr x0, [x0, #:got_lo12:gpBootConfig]
20653 bl StorageSysDataStore
20654 adrp x0, :got:gpDrmKeyInfo
20656 movk w3, 0x4b4d, lsl 16
20657 ldr x1, [x0, #:got_lo12:gpDrmKeyInfo]
20663 movk w3, 0x4b4d, lsl 16
20671 ldr x0, [x0, #:got_lo12:gpDrmKeyInfo]
20680 bl StorageSysDataStore
20681 ldr x19, [x19, #:got_lo12:SecureBootEn]
20682 adrp x0, :got:SecureBootCheckOK
20684 ldr x0, [x0, #:got_lo12:SecureBootCheckOK]
20690 add x0, x0, :lo12:.LC147
20695 bl rk_copy_from_user
20699 movk w1, 0x4253, lsl 16
20705 adrp x19, :got:SecureBootEn
20706 ldr x1, [x19, #:got_lo12:SecureBootEn]
20710 adrp x1, :got:gpBootConfig
20712 movk w4, 0x4453, lsl 16
20713 ldr x2, [x1, #:got_lo12:gpBootConfig]
20719 movk w4, 0x4453, lsl 16
20728 ldr x1, [x1, #:got_lo12:gpBootConfig]
20733 bl StorageSysDataStore
20734 adrp x0, :got:gpDrmKeyInfo
20736 movk w3, 0x4b4d, lsl 16
20737 ldr x1, [x0, #:got_lo12:gpDrmKeyInfo]
20743 movk w3, 0x4b4d, lsl 16
20751 ldr x0, [x0, #:got_lo12:gpDrmKeyInfo]
20760 bl StorageSysDataStore
20761 ldr x19, [x19, #:got_lo12:SecureBootEn]
20768 add x0, x0, :lo12:.LC148
20773 bl rk_copy_from_user
20777 movk w0, 0x4144, lsl 16
20783 adrp x1, :got:gSnSectorData
20786 ldr x1, [x1, #:got_lo12:gSnSectorData]
20794 movk w0, 0x4004, lsl 16
20798 add x0, x0, :lo12:.LC149
20802 movk w0, 0x4004, lsl 16
20806 add x0, x0, :lo12:.LC150
20810 add x0, x0, :lo12:.LC151
20817 bl rk_copy_from_user
20821 movk w0, 0x4c4f, lsl 16
20825 movk w0, 0x4004, lsl 16
20828 adrp x0, :got:gpDrmKeyInfo
20831 ldr x0, [x0, #:got_lo12:gpDrmKeyInfo]
20841 adrp x2, :got:SecureBootUnlockTryCount
20843 ldr x21, [x2, #:got_lo12:SecureBootUnlockTryCount]
20847 adrp x0, :got:gpDrmKeyInfo
20849 ldr x0, [x0, #:got_lo12:gpDrmKeyInfo]
20856 add x0, x0, :lo12:.LC152
20865 ldr x3, [x3, #:got_lo12:SecureBootUnlockTryCount]
20867 movk w0, 0x4004, lsl 16
20882 bl StorageSysDataStore
20889 add x0, x0, :lo12:.LC153
20894 bl rk_copy_from_user
20898 movk w0, 0x444e, lsl 16
20906 movk w0, 0x4004, lsl 16
20910 adrp x1, :got:gpVendor0Info
20911 ldr x1, [x1, #:got_lo12:gpVendor0Info]
20914 adrp x1, :got:gpVendor1Info
20915 ldr x1, [x1, #:got_lo12:gpVendor1Info]
20931 add x0, x0, :lo12:.LC154
20936 bl rk_copy_from_user
20940 movk w0, 0x444e, lsl 16
20948 movk w0, 0x4004, lsl 16
20951 adrp x19, :got:gpVendor0Info
20953 ldr x19, [x19, #:got_lo12:gpVendor0Info]
20959 adrp x19, :got:gpVendor1Info
20961 ldr x19, [x19, #:got_lo12:gpVendor1Info]
20968 bl StorageSysDataStore
20976 add x0, x0, :lo12:.LC155
20983 ldp x19, x20, [sp,16]
20985 ldp x29, x30, [sp], 48
20988 .size rknand_sys_storage_ioctl, .-rknand_sys_storage_ioctl
20990 .global rk_ftl_storage_sys_init
20991 .type rk_ftl_storage_sys_init, %function
20992 rk_ftl_storage_sys_init:
20993 adrp x0, :got:g_idb_buffer
20994 stp x29, x30, [sp, -80]!
20996 ldr x0, [x0, #:got_lo12:g_idb_buffer]
20997 stp x19, x20, [sp,16]
20998 stp x21, x22, [sp,32]
20999 stp x23, x24, [sp,48]
21001 adrp x21, :got:gpBootConfig
21003 adrp x0, :got:gLoaderBootInfo
21004 adrp x20, :got:gpVendor0Info
21005 adrp x19, :got:gpVendor1Info
21006 ldr x21, [x21, #:got_lo12:gpBootConfig]
21007 ldr x0, [x0, #:got_lo12:gLoaderBootInfo]
21009 adrp x0, :got:gpDrmKeyInfo
21012 ldr x0, [x0, #:got_lo12:gpDrmKeyInfo]
21016 ldr x0, [x20, #:got_lo12:gpVendor0Info]
21019 ldr x0, [x19, #:got_lo12:gpVendor1Info]
21021 adrp x0, :got:gSnSectorData
21022 ldr x0, [x0, #:got_lo12:gSnSectorData]
21024 adrp x1, :got:SecureBootEn
21026 adrp x3, :got:SecureBootCheckOK
21029 ldr x22, [x1, #:got_lo12:SecureBootEn]
21033 ldr x2, [x3, #:got_lo12:SecureBootCheckOK]
21035 adrp x2, :got:SecureBootUnlockTryCount
21036 ldr x2, [x2, #:got_lo12:SecureBootUnlockTryCount]
21047 add x0, x0, :lo12:.LC156
21050 ldr x1, [x25, #:got_lo12:SecureBootEn]
21053 ldr x0, [x24, #:got_lo12:SecureBootCheckOK]
21055 movk w1, 0xc059, lsl 16
21058 ldr x20, [x20, #:got_lo12:gpVendor0Info]
21061 bl StorageSysDataLoad
21062 ldr x19, [x19, #:got_lo12:gpVendor1Info]
21065 bl StorageSysDataLoad
21067 add x0, x0, :lo12:.LANCHOR3
21070 ldp x19, x20, [sp,16]
21071 ldp x21, x22, [sp,32]
21072 ldp x23, x24, [sp,48]
21073 ldp x29, x30, [sp], 80
21075 .size rk_ftl_storage_sys_init, .-rk_ftl_storage_sys_init
21077 .global StorageSysDataDeInit
21078 .type StorageSysDataDeInit, %function
21079 StorageSysDataDeInit:
21080 stp x29, x30, [sp, -16]!
21083 add x0, x0, :lo12:.LANCHOR3
21086 ldp x29, x30, [sp], 16
21088 .size StorageSysDataDeInit, .-StorageSysDataDeInit
21089 .global rknand_sys_storage_fops
21090 .global gTable_Crc32
21091 .global SecureBootUnlockTryCount
21092 .global SecureBootCheckOK
21093 .global SecureBootEn
21094 .global gpVendor1Info
21095 .global gpVendor0Info
21096 .global g_idb_buffer
21097 .global gSnSectorData
21098 .global gpDrmKeyInfo
21099 .global gpBootConfig
21100 .global gLoaderBootInfo
21101 .global RK29_NANDC1_REG_BASE
21102 .global RK29_NANDC_REG_BASE
21103 .global gc_ink_free_return_value
21104 .global FtlUpdateVaildLpnCount
21105 .global g_ect_tbl_power_up_flush
21106 .global last_cache_match_count
21107 .global power_up_flag
21108 .global g_LowFormat
21109 .global gFtlInitStatus
21110 .global DeviceCapacity
21111 .global ToshibaRefValue
21112 .global Toshiba15RefValue
21113 .global ToshibaA19RefValue
21114 .global SamsungRefValue
21115 .global refValueDefault
21117 .global random_seed
21118 .global gSlcNandParaInfo
21119 .global gNandParaInfo
21120 .global NandFlashParaTbl
21121 .global g_power_lost_recovery_flag
21122 .global c_mlc_erase_count_value
21123 .global g_recovery_ppa_tbl
21124 .global g_recovery_page_min_ver
21125 .global g_recovery_page_num
21126 .global g_cur_erase_blk
21127 .global g_gc_skip_write_count
21128 .global g_gc_head_data_block_count
21129 .global g_gc_head_data_block
21130 .global g_ftl_nand_free_count
21131 .global g_in_swl_replace
21132 .global g_in_gc_progress
21133 .global g_all_blk_used_slc_mode
21134 .global g_max_erase_count
21135 .global g_totle_sys_slc_erase_count
21136 .global g_totle_slc_erase_count
21137 .global g_min_erase_count
21138 .global g_totle_avg_erase_count
21139 .global g_totle_mlc_erase_count
21140 .global g_totle_l2p_write_count
21141 .global g_totle_cache_write_count
21142 .global g_tmp_data_superblock_id
21143 .global g_totle_read_page_count
21144 .global g_totle_discard_page_count
21145 .global g_totle_read_sector
21146 .global g_totle_write_sector
21147 .global g_totle_write_page_count
21148 .global g_totle_gc_page_count
21149 .global g_gc_blk_index
21150 .global g_gc_merge_free_blk_threshold
21151 .global g_gc_free_blk_threshold
21152 .global g_gc_bad_block_temp_tbl
21153 .global g_gc_bad_block_gc_index
21154 .global g_gc_bad_block_temp_num
21155 .global g_gc_next_blk_1
21156 .global g_gc_next_blk
21157 .global g_gc_cur_blk_max_valid_pages
21158 .global g_gc_cur_blk_valid_pages
21159 .global g_gc_page_offset
21160 .global g_gc_blk_num
21161 .global p_gc_blk_tbl
21162 .global p_gc_page_info
21163 .global g_sys_ext_data
21164 .global g_sys_save_data
21165 .global gp_last_act_superblock
21166 .global g_gc_superblock
21167 .global g_gc_temp_superblock
21168 .global g_buffer_superblock
21169 .global g_active_superblock
21170 .global g_num_data_superblocks
21171 .global g_num_free_superblocks
21172 .global p_data_block_list_tail
21173 .global p_data_block_list_head
21174 .global p_free_data_block_list_head
21175 .global p_data_block_list_table
21176 .global g_l2p_last_update_region_id
21177 .global p_l2p_map_buf
21178 .global p_l2p_ram_map
21179 .global g_totle_vendor_block
21180 .global p_vendor_region_ppn_table
21181 .global p_vendor_block_ver_table
21182 .global p_vendor_block_valid_page_count
21183 .global p_vendor_block_table
21184 .global g_totle_map_block
21185 .global p_map_region_ppn_table
21186 .global p_map_block_ver_table
21187 .global p_map_block_valid_page_count
21188 .global p_map_block_table
21189 .global p_valid_page_count_check_table
21190 .global p_valid_page_count_table
21191 .global g_totle_swl_count
21192 .global p_swl_mul_table
21193 .global p_erase_count_table
21194 .global g_ect_tbl_info_size
21195 .global gp_ect_tbl_info
21196 .global g_gc_num_req
21197 .global c_gc_page_buf_num
21198 .global gp_gc_page_buf_info
21199 .global p_gc_data_buf
21200 .global p_gc_spare_buf
21201 .global p_io_spare_buf
21202 .global p_io_data_buf_1
21203 .global p_io_data_buf_0
21204 .global p_sys_spare_buf
21205 .global p_vendor_data_buf
21206 .global p_sys_data_buf_1
21207 .global p_sys_data_buf
21208 .global g_wr_page_num
21210 .global c_wr_page_buf_num
21211 .global p_wr_io_data_buf
21212 .global p_wr_io_spare_buf
21213 .global p_plane_order_table
21214 .global g_req_cache
21221 .global gVendorBlkInfo
21222 .global gL2pMapInfo
21223 .global gSysFreeQueue
21226 .global g_inkDie_check_enable
21227 .global g_SlcPartLbaEndSector
21231 .global g_MaxLbaSector
21232 .global g_GlobalDataVersion
21233 .global g_GlobalSysVersion
21234 .global ftl_gc_temp_power_lost_recovery_flag
21235 .global c_ftl_nand_max_data_blks
21236 .global c_ftl_nand_data_op_blks_per_plane
21237 .global c_ftl_nand_data_blks_per_plane
21238 .global c_ftl_nand_max_sys_blks
21239 .global c_ftl_nand_init_sys_blks_per_plane
21240 .global c_ftl_nand_sys_blks_per_plane
21241 .global c_ftl_vendor_part_size
21242 .global c_ftl_nand_max_vendor_blks
21243 .global c_ftl_nand_max_map_blks
21244 .global c_ftl_nand_map_blks_per_plane
21245 .global c_ftl_nand_vendor_region_num
21246 .global c_ftl_nand_l2pmap_ram_region_num
21247 .global c_ftl_nand_map_region_num
21248 .global c_ftl_nand_totle_phy_blks
21249 .global c_ftl_nand_reserved_blks
21250 .global c_ftl_nand_byte_pre_oob
21251 .global c_ftl_nand_byte_pre_page
21252 .global c_ftl_nand_sec_pre_page_shift
21253 .global c_ftl_nand_sec_pre_page
21254 .global c_ftl_nand_page_pre_super_blk
21255 .global c_ftl_nand_page_pre_slc_blk
21256 .global c_ftl_nand_page_pre_blk
21257 .global c_ftl_nand_bbm_buf_size
21258 .global c_ftl_nand_ext_blk_pre_plane
21259 .global c_ftl_nand_blk_pre_plane
21260 .global c_ftl_nand_planes_num
21261 .global c_ftl_nand_blks_per_die_shift
21262 .global c_ftl_nand_blks_per_die
21263 .global c_ftl_nand_planes_per_die
21264 .global c_ftl_nand_die_num
21265 .global c_ftl_nand_type
21266 .global gMasterTempBuf
21267 .global gMasterInfo
21268 .global gNandcDumpWriteEn
21269 .global gToggleModeClkDiv
21270 .global gBootDdrMode
21271 .global gNandcEccBits
21275 .global gNandChipMap
21276 .global gNandIDataBuf
21277 .global FlashDdrTunningReadCount
21278 .global gNandPhyInfo
21279 .global gFlashProgCheckSpareBuffer
21280 .global gFlashProgCheckBuffer
21281 .global gFlashSpareBuffer
21282 .global gFlashPageBuffer1
21283 .global gFlashPageBuffer0
21284 .global gpFlashSaveInfo
21285 .global gReadRetryInfo
21286 .global gpNandParaInfo
21287 .global gNandOptPara
21288 .global g_slc2KBNand
21289 .global g_maxRetryCount
21290 .global g_maxRegNum
21291 .global g_retryMode
21292 .global gNandIDBResBlkNumSaveInFlash
21293 .global gNandIDBResBlkNum
21294 .global gNandFlashResEndPageAddr
21295 .global gNandFlashInfoBlockAddr
21296 .global gNandFlashIdbBlockAddr
21297 .global gNandFlashInfoBlockEcc
21298 .global gNandFlashIDBEccBits
21299 .global gNandFlashEccBits
21300 .global gNandRandomizer
21301 .global gBlockPageAlignSize
21302 .global gTotleBlock
21303 .global gNandMaxChip
21304 .global gNandMaxDie
21305 .global gFlashInterfaceMode
21306 .global gFlashOnfiModeEn
21307 .global gFlashToggleModeEn
21308 .global gFlashSdrModeEn
21309 .global gMultiPageProgEn
21310 .global gMultiPageReadEn
21311 .global gpReadRetrial
21312 .global mlcPageToSlcPageTbl
21313 .global slcPageToMlcPageTbl
21318 .global read_retry_cur_offset
21322 .type __func__.18162, %object
21323 .size __func__.18162, 11
21325 .string "FtlMemInit"
21327 .type __func__.19016, %object
21328 .size __func__.19016, 21
21330 .string "FtlVpcCheckAndModify"
21331 .section .data.rel.local,"aw",%progbits
21333 .type rknand_sys_storage_fops, %object
21334 .size rknand_sys_storage_fops, 216
21335 rknand_sys_storage_fops:
21337 .xword rknand_sys_storage_ioctl
21338 .xword rknand_sys_storage_ioctl
21340 .xword rknand_sys_storage_open
21342 .xword rknand_sys_storage_release
21347 .type NandOptPara, %object
21348 .size NandOptPara, 128
21426 .type ftl_gc_temp_block_bops_scan_page_addr, %object
21427 .size ftl_gc_temp_block_bops_scan_page_addr, 2
21428 ftl_gc_temp_block_bops_scan_page_addr:
21431 .type gTable_Crc32, %object
21432 .size gTable_Crc32, 1024
21690 .type power_up_flag, %object
21691 .size power_up_flag, 4
21694 .type gFtlInitStatus, %object
21695 .size gFtlInitStatus, 4
21698 .type ToshibaRefValue, %object
21699 .size ToshibaRefValue, 8
21709 .type Toshiba15RefValue, %object
21710 .size Toshiba15RefValue, 95
21808 .type ToshibaA19RefValue, %object
21809 .size ToshibaA19RefValue, 45
21810 ToshibaA19RefValue:
21857 .type SamsungRefValue, %object
21858 .size SamsungRefValue, 64
21924 .type refValueDefault, %object
21925 .size refValueDefault, 28
21956 .type random_seed, %object
21957 .size random_seed, 256
22087 .type gSlcNandParaInfo, %object
22088 .size gSlcNandParaInfo, 32
22115 .type gNandParaInfo, %object
22116 .size gNandParaInfo, 32
22139 .type NandFlashParaTbl, %object
22140 .size NandFlashParaTbl, 2112
23792 .section .rodata.str1.1,"aMS",%progbits,1
23794 .string "Context allocation failed\n"
23796 .string "phyBlk = 0x%x die = %d block_in_die = 0x%x 0x%8x\n"
23798 .string "FLASH INFO:\n"
23800 .string "FLASH ID: %x\n"
23802 .string "Device Capacity: %d MB\n"
23804 .string "FMWAIT: %x %x %x %x\n"
23806 .string "FTL INFO:\n"
23808 .string "g_MaxLpn = 0x%x\n"
23810 .string "g_VaildLpn = 0x%x\n"
23812 .string "read_page_count = 0x%x\n"
23814 .string "discard_page_count = 0x%x\n"
23816 .string "write_page_count = 0x%x\n"
23818 .string "cache_write_count = 0x%x\n"
23820 .string "l2p_write_count = 0x%x\n"
23822 .string "gc_page_count = 0x%x\n"
23824 .string "totle_write = %d MB\n"
23826 .string "totle_read = %d MB\n"
23828 .string "GSV = 0x%x\n"
23830 .string "GDV = 0x%x\n"
23832 .string "bad blk num = %d %d\n"
23834 .string "free_superblocks = 0x%x\n"
23836 .string "mlc_EC = 0x%x\n"
23838 .string "slc_EC = 0x%x\n"
23840 .string "avg_EC = 0x%x\n"
23842 .string "sys_EC = 0x%x\n"
23844 .string "max_EC = 0x%x\n"
23846 .string "min_EC = 0x%x\n"
23848 .string "PLT = 0x%x\n"
23850 .string "POT = 0x%x\n"
23852 .string "MaxSector = 0x%x\n"
23854 .string "init_sys_blks_pp = 0x%x\n"
23856 .string "sys_blks_pp = 0x%x\n"
23858 .string "free sysblock = 0x%x\n"
23860 .string "data_blks_pp = 0x%x\n"
23862 .string "data_op_blks_pp = 0x%x\n"
23864 .string "max_data_blks = 0x%x\n"
23866 .string "Sys.id = 0x%x\n"
23868 .string "Bbt.id = 0x%x\n"
23870 .string "ACT.page = 0x%x\n"
23872 .string "ACT.plane = 0x%x\n"
23874 .string "ACT.id = 0x%x\n"
23876 .string "ACT.mode = 0x%x\n"
23878 .string "ACT.a_pages = 0x%x\n"
23880 .string "ACT VPC = 0x%x\n"
23882 .string "BUF.page = 0x%x\n"
23884 .string "BUF.plane = 0x%x\n"
23886 .string "BUF.id = 0x%x\n"
23888 .string "BUF.mode = 0x%x\n"
23890 .string "BUF.a_pages = 0x%x\n"
23892 .string "BUF VPC = 0x%x\n"
23894 .string "TMP.page = 0x%x\n"
23896 .string "TMP.plane = 0x%x\n"
23898 .string "TMP.id = 0x%x\n"
23900 .string "TMP.mode = 0x%x\n"
23902 .string "TMP.a_pages = 0x%x\n"
23904 .string "GC.page = 0x%x\n"
23906 .string "GC.plane = 0x%x\n"
23908 .string "GC.id = 0x%x\n"
23910 .string "GC.mode = 0x%x\n"
23912 .string "GC.a_pages = 0x%x\n"
23914 .string "WR_CHK = 0x%x %x %x %x\n"
23916 .string "Read Err Cnt = 0x%x\n"
23918 .string "Prog Err Cnt = 0x%x\n"
23920 .string "gc_free_blk_th= 0x%x\n"
23922 .string "gc_merge_free_blk_th= 0x%x\n"
23924 .string "gc_skip_write_count= 0x%x\n"
23926 .string "gc_blk_index= 0x%x\n"
23928 .string "free min EC= 0x%x\n"
23930 .string "free max EC= 0x%x\n"
23932 .string "GC__SB VPC = 0x%x\n"
23934 .string "%d. [0x%x]=0x%x 0x%x 0x%x\n"
23936 .string "free %d. [0x%x] 0x%x 0x%x\n"
23940 .string "FTL version: 5.0.31 20160315"
23942 .string "GetSwlReplaceBlock min_ec_id =%x %x\n"
23944 .string "swblk %x ,avg = %x max= %x vpc= %x,ec=%x ,max ec=%x\n"
23946 .string "FtlGcRefreshBlock 0x%x \n"
23948 .string "FtlGcMarkBadPhyBlk %d 0x%x\n"
23950 .string "%s error allocating memory. return -1\n"
23958 .string "%d statReg->V6.mtrans_cnt=%d flReg.V6.page_num=%d\n"
23962 .string "%d flReg.d32=%x %x\n"
23964 .string "sdr read ok %x ecc=%d\n"
23966 .string "sync para %d\n"
23968 .string "TOG mode Read error %x %x\n"
23970 .string "read retry status %x %x %x\n"
23974 .string "No.%d FLASH ID:%x %x %x %x %x %x\n"
23976 .string "FlashLoadPhyInfo fail %x!!\n"
23978 .string "ReadRetry pageadd=%x ecc=%x err=%x\n"
23980 .string "Read pageadd=%x ecc=%x err=%x\n"
23984 .string "FLFB:%d %d\n"
23990 .string "prog error: = %x\n"
23992 .string "prog read error: = %x\n"
23994 .string "prog read s error: = %x %x %x\n"
23996 .string "prog read d error: = %x %x %x\n"
23998 .string "FlashMakeFactorBbt %d\n"
24000 .string "bad block:%d %d\n"
24002 .string "FMFB:%d %d\n"
24004 .string "E:bad block:%d\n"
24006 .string "FMFB:Save %d %d\n"
24008 .string "FtlBbmTblFlush id=%x,page=%x,previd=%x cnt=%d\n"
24010 .string "FtlBbmTblFlush error:%x\n"
24012 .string "FtlGcFreeBadSuperBlk 0x%x\n"
24014 .string "decrement_vpc_count %x = %d\n"
24016 .string "spuer block %x vpn is 0\n "
24018 .string "...%s enter...\n"
24020 .string "FtlCheckVpc %x = %x %x\n"
24022 .string "Ftlwrite decrement_vpc_count %x = %d\n"
24024 .string "FtlInit %x\n"
24026 .string "%d GC datablk = %x vpc %x %x\n"
24028 .string "SWL %x, FSB = %x vpc= %x,ec=%x th=%x\n"
24030 .string "FtlWrite: lpa error:%x %x\n"
24034 .string "IdBlockReadData %x %x\n"
24036 .string "IdBlockReadData %x %x ret= %x\n"
24038 .string "IDBlockWriteData %x %x\n"
24040 .string "IDBlockWriteData %x %x ret= %x\n"
24044 .string "idb reverse %x %x\n"
24046 .string "write_idblock totle_sec %x %x\n"
24048 .string "write and check error:%d idb=%x,offset=%x,r=%x,w=%x \n"
24054 .string "write_idblock error\n"
24056 .string "READ_SECTOR_IO\n"
24058 .string "rk_copy_from_user error \n"
24060 .string "READ_SECTOR_IO %x %x\n"
24062 .string "rk_copy_to_user error\n"
24064 .string "WRITE_SECTOR_IO\n"
24066 .string "WRITE_SECTOR_IO %x %x\n"
24068 .string "END_WRITE_SECTOR_IO\n"
24070 .string "END_WRITE_SECTOR_IO %x %x\n"
24072 .string "GET_FLASH_INFO_IO\n"
24074 .string "GET_BAD_BLOCK_IO\n"
24078 .string "GET_LOCK_FLAG_IO\n"
24080 .string "GET_PUBLIC_KEY_IO\n"
24082 .string "RKNAND_GET_DRM_KEY\n"
24084 .string "RKNAND_STORE_DRM_KEY\n"
24086 .string "RKNAND_DIASBLE_SECURE_BOOT\n"
24088 .string "RKNAND_ENASBLE_SECURE_BOOT\n"
24090 .string "RKNAND_GET_SN_SECTOR\n"
24092 .string "RKNAND_LOADER_UNLOCK\n"
24094 .string "RKNAND_LOADER_STATUS\n"
24096 .string "RKNAND_LOADER_LOCK\n"
24098 .string "LockKey not match %d\n"
24100 .string "RKNAND_GET_VENDOR_SECTOR\n"
24102 .string "RKNAND_STORE_VENDOR_SECTOR\n"
24104 .string "return ret = %lx\n"
24106 .string "secureBootEn check error\n"
24108 .string "rknand_sys_storage"
24112 .type NANDC_FMCTL, %object
24113 .size NANDC_FMCTL, 4
24116 .type NANDC_FMWAIT, %object
24117 .size NANDC_FMWAIT, 4
24120 .type NANDC_FLCTL, %object
24121 .size NANDC_FLCTL, 4
24124 .type NANDC_BCHCTL, %object
24125 .size NANDC_BCHCTL, 4
24128 .type NANDC_DLL_CTL_REG0, %object
24129 .size NANDC_DLL_CTL_REG0, 4
24130 NANDC_DLL_CTL_REG0:
24132 .type NANDC_DLL_CTL_REG1, %object
24133 .size NANDC_DLL_CTL_REG1, 4
24134 NANDC_DLL_CTL_REG1:
24136 .type NANDC_RANDMZ_CFG, %object
24137 .size NANDC_RANDMZ_CFG, 4
24140 .type NANDC_FMWAIT_SYN, %object
24141 .size NANDC_FMWAIT_SYN, 4
24144 .type gc_discard_updated, %object
24145 .size gc_discard_updated, 4
24146 gc_discard_updated:
24148 .type SecureBootUnlockTryCount, %object
24149 .size SecureBootUnlockTryCount, 4
24150 SecureBootUnlockTryCount:
24152 .type SecureBootCheckOK, %object
24153 .size SecureBootCheckOK, 4
24156 .type SecureBootEn, %object
24157 .size SecureBootEn, 4
24160 .type gpVendor1Info, %object
24161 .size gpVendor1Info, 8
24164 .type gpVendor0Info, %object
24165 .size gpVendor0Info, 8
24168 .type g_idb_buffer, %object
24169 .size g_idb_buffer, 8
24172 .type gSnSectorData, %object
24173 .size gSnSectorData, 512
24176 .type gpDrmKeyInfo, %object
24177 .size gpDrmKeyInfo, 8
24180 .type gpBootConfig, %object
24181 .size gpBootConfig, 8
24184 .type gLoaderBootInfo, %object
24185 .size gLoaderBootInfo, 8
24188 .type RK29_NANDC1_REG_BASE, %object
24189 .size RK29_NANDC1_REG_BASE, 8
24190 RK29_NANDC1_REG_BASE:
24192 .type RK29_NANDC_REG_BASE, %object
24193 .size RK29_NANDC_REG_BASE, 8
24194 RK29_NANDC_REG_BASE:
24196 .type gc_ink_free_return_value, %object
24197 .size gc_ink_free_return_value, 2
24198 gc_ink_free_return_value:
24200 .type FtlUpdateVaildLpnCount, %object
24201 .size FtlUpdateVaildLpnCount, 2
24202 FtlUpdateVaildLpnCount:
24204 .type g_ect_tbl_power_up_flush, %object
24205 .size g_ect_tbl_power_up_flush, 2
24206 g_ect_tbl_power_up_flush:
24209 .type last_cache_match_count, %object
24210 .size last_cache_match_count, 4
24211 last_cache_match_count:
24213 .type g_LowFormat, %object
24214 .size g_LowFormat, 4
24217 .type DeviceCapacity, %object
24218 .size DeviceCapacity, 4
24222 .type FbbtBlk, %object
24226 .type g_power_lost_recovery_flag, %object
24227 .size g_power_lost_recovery_flag, 2
24228 g_power_lost_recovery_flag:
24230 .type c_mlc_erase_count_value, %object
24231 .size c_mlc_erase_count_value, 2
24232 c_mlc_erase_count_value:
24235 .type g_recovery_ppa_tbl, %object
24236 .size g_recovery_ppa_tbl, 128
24237 g_recovery_ppa_tbl:
24239 .type g_recovery_page_min_ver, %object
24240 .size g_recovery_page_min_ver, 4
24241 g_recovery_page_min_ver:
24243 .type g_recovery_page_num, %object
24244 .size g_recovery_page_num, 4
24245 g_recovery_page_num:
24247 .type g_cur_erase_blk, %object
24248 .size g_cur_erase_blk, 4
24251 .type g_gc_skip_write_count, %object
24252 .size g_gc_skip_write_count, 4
24253 g_gc_skip_write_count:
24255 .type g_gc_head_data_block_count, %object
24256 .size g_gc_head_data_block_count, 4
24257 g_gc_head_data_block_count:
24259 .type g_gc_head_data_block, %object
24260 .size g_gc_head_data_block, 4
24261 g_gc_head_data_block:
24263 .type g_ftl_nand_free_count, %object
24264 .size g_ftl_nand_free_count, 4
24265 g_ftl_nand_free_count:
24267 .type g_in_swl_replace, %object
24268 .size g_in_swl_replace, 4
24271 .type g_in_gc_progress, %object
24272 .size g_in_gc_progress, 4
24275 .type g_all_blk_used_slc_mode, %object
24276 .size g_all_blk_used_slc_mode, 4
24277 g_all_blk_used_slc_mode:
24279 .type g_max_erase_count, %object
24280 .size g_max_erase_count, 4
24283 .type g_totle_sys_slc_erase_count, %object
24284 .size g_totle_sys_slc_erase_count, 4
24285 g_totle_sys_slc_erase_count:
24287 .type g_totle_slc_erase_count, %object
24288 .size g_totle_slc_erase_count, 4
24289 g_totle_slc_erase_count:
24291 .type g_min_erase_count, %object
24292 .size g_min_erase_count, 4
24295 .type g_totle_avg_erase_count, %object
24296 .size g_totle_avg_erase_count, 4
24297 g_totle_avg_erase_count:
24299 .type g_totle_mlc_erase_count, %object
24300 .size g_totle_mlc_erase_count, 4
24301 g_totle_mlc_erase_count:
24303 .type g_totle_l2p_write_count, %object
24304 .size g_totle_l2p_write_count, 4
24305 g_totle_l2p_write_count:
24307 .type g_totle_cache_write_count, %object
24308 .size g_totle_cache_write_count, 4
24309 g_totle_cache_write_count:
24311 .type g_tmp_data_superblock_id, %object
24312 .size g_tmp_data_superblock_id, 2
24313 g_tmp_data_superblock_id:
24316 .type g_totle_read_page_count, %object
24317 .size g_totle_read_page_count, 4
24318 g_totle_read_page_count:
24320 .type g_totle_discard_page_count, %object
24321 .size g_totle_discard_page_count, 4
24322 g_totle_discard_page_count:
24324 .type g_totle_read_sector, %object
24325 .size g_totle_read_sector, 4
24326 g_totle_read_sector:
24328 .type g_totle_write_sector, %object
24329 .size g_totle_write_sector, 4
24330 g_totle_write_sector:
24332 .type g_totle_write_page_count, %object
24333 .size g_totle_write_page_count, 4
24334 g_totle_write_page_count:
24336 .type g_totle_gc_page_count, %object
24337 .size g_totle_gc_page_count, 4
24338 g_totle_gc_page_count:
24340 .type g_gc_blk_index, %object
24341 .size g_gc_blk_index, 2
24344 .type g_gc_merge_free_blk_threshold, %object
24345 .size g_gc_merge_free_blk_threshold, 2
24346 g_gc_merge_free_blk_threshold:
24348 .type g_gc_free_blk_threshold, %object
24349 .size g_gc_free_blk_threshold, 2
24350 g_gc_free_blk_threshold:
24353 .type g_gc_bad_block_temp_tbl, %object
24354 .size g_gc_bad_block_temp_tbl, 34
24355 g_gc_bad_block_temp_tbl:
24357 .type g_gc_bad_block_gc_index, %object
24358 .size g_gc_bad_block_gc_index, 2
24359 g_gc_bad_block_gc_index:
24361 .type g_gc_bad_block_temp_num, %object
24362 .size g_gc_bad_block_temp_num, 2
24363 g_gc_bad_block_temp_num:
24365 .type g_gc_next_blk_1, %object
24366 .size g_gc_next_blk_1, 2
24369 .type g_gc_next_blk, %object
24370 .size g_gc_next_blk, 2
24373 .type g_gc_cur_blk_max_valid_pages, %object
24374 .size g_gc_cur_blk_max_valid_pages, 2
24375 g_gc_cur_blk_max_valid_pages:
24377 .type g_gc_cur_blk_valid_pages, %object
24378 .size g_gc_cur_blk_valid_pages, 2
24379 g_gc_cur_blk_valid_pages:
24381 .type g_gc_page_offset, %object
24382 .size g_gc_page_offset, 2
24385 .type g_gc_blk_num, %object
24386 .size g_gc_blk_num, 2
24390 .type p_gc_blk_tbl, %object
24391 .size p_gc_blk_tbl, 8
24394 .type p_gc_page_info, %object
24395 .size p_gc_page_info, 8
24398 .type g_sys_ext_data, %object
24399 .size g_sys_ext_data, 512
24402 .type g_sys_save_data, %object
24403 .size g_sys_save_data, 48
24406 .type gp_last_act_superblock, %object
24407 .size gp_last_act_superblock, 8
24408 gp_last_act_superblock:
24410 .type g_gc_superblock, %object
24411 .size g_gc_superblock, 48
24414 .type g_gc_temp_superblock, %object
24415 .size g_gc_temp_superblock, 48
24416 g_gc_temp_superblock:
24418 .type g_buffer_superblock, %object
24419 .size g_buffer_superblock, 48
24420 g_buffer_superblock:
24422 .type g_active_superblock, %object
24423 .size g_active_superblock, 48
24424 g_active_superblock:
24426 .type g_num_data_superblocks, %object
24427 .size g_num_data_superblocks, 2
24428 g_num_data_superblocks:
24430 .type g_num_free_superblocks, %object
24431 .size g_num_free_superblocks, 2
24432 g_num_free_superblocks:
24435 .type p_data_block_list_tail, %object
24436 .size p_data_block_list_tail, 8
24437 p_data_block_list_tail:
24439 .type p_data_block_list_head, %object
24440 .size p_data_block_list_head, 8
24441 p_data_block_list_head:
24443 .type p_free_data_block_list_head, %object
24444 .size p_free_data_block_list_head, 8
24445 p_free_data_block_list_head:
24447 .type p_data_block_list_table, %object
24448 .size p_data_block_list_table, 8
24449 p_data_block_list_table:
24451 .type g_l2p_last_update_region_id, %object
24452 .size g_l2p_last_update_region_id, 2
24453 g_l2p_last_update_region_id:
24456 .type p_l2p_map_buf, %object
24457 .size p_l2p_map_buf, 8
24460 .type p_l2p_ram_map, %object
24461 .size p_l2p_ram_map, 8
24464 .type g_totle_vendor_block, %object
24465 .size g_totle_vendor_block, 2
24466 g_totle_vendor_block:
24469 .type p_vendor_region_ppn_table, %object
24470 .size p_vendor_region_ppn_table, 8
24471 p_vendor_region_ppn_table:
24473 .type p_vendor_block_ver_table, %object
24474 .size p_vendor_block_ver_table, 8
24475 p_vendor_block_ver_table:
24477 .type p_vendor_block_valid_page_count, %object
24478 .size p_vendor_block_valid_page_count, 8
24479 p_vendor_block_valid_page_count:
24481 .type p_vendor_block_table, %object
24482 .size p_vendor_block_table, 8
24483 p_vendor_block_table:
24485 .type g_totle_map_block, %object
24486 .size g_totle_map_block, 2
24490 .type p_map_region_ppn_table, %object
24491 .size p_map_region_ppn_table, 8
24492 p_map_region_ppn_table:
24494 .type p_map_block_ver_table, %object
24495 .size p_map_block_ver_table, 8
24496 p_map_block_ver_table:
24498 .type p_map_block_valid_page_count, %object
24499 .size p_map_block_valid_page_count, 8
24500 p_map_block_valid_page_count:
24502 .type p_map_block_table, %object
24503 .size p_map_block_table, 8
24506 .type p_valid_page_count_check_table, %object
24507 .size p_valid_page_count_check_table, 8
24508 p_valid_page_count_check_table:
24510 .type p_valid_page_count_table, %object
24511 .size p_valid_page_count_table, 8
24512 p_valid_page_count_table:
24514 .type g_totle_swl_count, %object
24515 .size g_totle_swl_count, 4
24519 .type p_swl_mul_table, %object
24520 .size p_swl_mul_table, 8
24523 .type p_erase_count_table, %object
24524 .size p_erase_count_table, 8
24525 p_erase_count_table:
24527 .type g_ect_tbl_info_size, %object
24528 .size g_ect_tbl_info_size, 2
24529 g_ect_tbl_info_size:
24532 .type gp_ect_tbl_info, %object
24533 .size gp_ect_tbl_info, 8
24536 .type g_gc_num_req, %object
24537 .size g_gc_num_req, 4
24540 .type c_gc_page_buf_num, %object
24541 .size c_gc_page_buf_num, 4
24544 .type gp_gc_page_buf_info, %object
24545 .size gp_gc_page_buf_info, 8
24546 gp_gc_page_buf_info:
24548 .type p_gc_data_buf, %object
24549 .size p_gc_data_buf, 8
24552 .type p_gc_spare_buf, %object
24553 .size p_gc_spare_buf, 8
24556 .type p_io_spare_buf, %object
24557 .size p_io_spare_buf, 8
24560 .type p_io_data_buf_1, %object
24561 .size p_io_data_buf_1, 8
24564 .type p_io_data_buf_0, %object
24565 .size p_io_data_buf_0, 8
24568 .type p_sys_spare_buf, %object
24569 .size p_sys_spare_buf, 8
24572 .type p_vendor_data_buf, %object
24573 .size p_vendor_data_buf, 8
24576 .type p_sys_data_buf_1, %object
24577 .size p_sys_data_buf_1, 8
24580 .type p_sys_data_buf, %object
24581 .size p_sys_data_buf, 8
24584 .type g_wr_page_num, %object
24585 .size g_wr_page_num, 4
24589 .type req_wr_io, %object
24593 .type c_wr_page_buf_num, %object
24594 .size c_wr_page_buf_num, 4
24598 .type p_wr_io_data_buf, %object
24599 .size p_wr_io_data_buf, 8
24602 .type p_wr_io_spare_buf, %object
24603 .size p_wr_io_spare_buf, 8
24606 .type p_plane_order_table, %object
24607 .size p_plane_order_table, 32
24608 p_plane_order_table:
24610 .type g_req_cache, %object
24611 .size g_req_cache, 8
24614 .type req_gc_dst, %object
24615 .size req_gc_dst, 8
24618 .type req_gc, %object
24622 .type req_erase, %object
24626 .type req_prgm, %object
24630 .type req_read, %object
24634 .type req_sys, %object
24638 .type gVendorBlkInfo, %object
24639 .size gVendorBlkInfo, 64
24642 .type gL2pMapInfo, %object
24643 .size gL2pMapInfo, 64
24646 .type gSysFreeQueue, %object
24647 .size gSysFreeQueue, 2056
24650 .type gSysInfo, %object
24655 .type gBbtInfo, %object
24659 .type g_inkDie_check_enable, %object
24660 .size g_inkDie_check_enable, 4
24661 g_inkDie_check_enable:
24663 .type g_SlcPartLbaEndSector, %object
24664 .size g_SlcPartLbaEndSector, 4
24665 g_SlcPartLbaEndSector:
24667 .type g_MaxLbn, %object
24671 .type g_VaildLpn, %object
24672 .size g_VaildLpn, 4
24675 .type g_MaxLpn, %object
24679 .type g_MaxLbaSector, %object
24680 .size g_MaxLbaSector, 4
24683 .type g_GlobalDataVersion, %object
24684 .size g_GlobalDataVersion, 4
24685 g_GlobalDataVersion:
24687 .type g_GlobalSysVersion, %object
24688 .size g_GlobalSysVersion, 4
24689 g_GlobalSysVersion:
24691 .type ftl_gc_temp_power_lost_recovery_flag, %object
24692 .size ftl_gc_temp_power_lost_recovery_flag, 4
24693 ftl_gc_temp_power_lost_recovery_flag:
24695 .type c_ftl_nand_max_data_blks, %object
24696 .size c_ftl_nand_max_data_blks, 4
24697 c_ftl_nand_max_data_blks:
24699 .type c_ftl_nand_data_op_blks_per_plane, %object
24700 .size c_ftl_nand_data_op_blks_per_plane, 2
24701 c_ftl_nand_data_op_blks_per_plane:
24703 .type c_ftl_nand_data_blks_per_plane, %object
24704 .size c_ftl_nand_data_blks_per_plane, 2
24705 c_ftl_nand_data_blks_per_plane:
24707 .type c_ftl_nand_max_sys_blks, %object
24708 .size c_ftl_nand_max_sys_blks, 4
24709 c_ftl_nand_max_sys_blks:
24711 .type c_ftl_nand_init_sys_blks_per_plane, %object
24712 .size c_ftl_nand_init_sys_blks_per_plane, 4
24713 c_ftl_nand_init_sys_blks_per_plane:
24715 .type c_ftl_nand_sys_blks_per_plane, %object
24716 .size c_ftl_nand_sys_blks_per_plane, 4
24717 c_ftl_nand_sys_blks_per_plane:
24719 .type c_ftl_vendor_part_size, %object
24720 .size c_ftl_vendor_part_size, 2
24721 c_ftl_vendor_part_size:
24723 .type c_ftl_nand_max_vendor_blks, %object
24724 .size c_ftl_nand_max_vendor_blks, 2
24725 c_ftl_nand_max_vendor_blks:
24727 .type c_ftl_nand_max_map_blks, %object
24728 .size c_ftl_nand_max_map_blks, 4
24729 c_ftl_nand_max_map_blks:
24731 .type c_ftl_nand_map_blks_per_plane, %object
24732 .size c_ftl_nand_map_blks_per_plane, 2
24733 c_ftl_nand_map_blks_per_plane:
24735 .type c_ftl_nand_vendor_region_num, %object
24736 .size c_ftl_nand_vendor_region_num, 2
24737 c_ftl_nand_vendor_region_num:
24739 .type c_ftl_nand_l2pmap_ram_region_num, %object
24740 .size c_ftl_nand_l2pmap_ram_region_num, 2
24741 c_ftl_nand_l2pmap_ram_region_num:
24743 .type c_ftl_nand_map_region_num, %object
24744 .size c_ftl_nand_map_region_num, 2
24745 c_ftl_nand_map_region_num:
24747 .type c_ftl_nand_totle_phy_blks, %object
24748 .size c_ftl_nand_totle_phy_blks, 4
24749 c_ftl_nand_totle_phy_blks:
24751 .type c_ftl_nand_reserved_blks, %object
24752 .size c_ftl_nand_reserved_blks, 2
24753 c_ftl_nand_reserved_blks:
24755 .type c_ftl_nand_byte_pre_oob, %object
24756 .size c_ftl_nand_byte_pre_oob, 2
24757 c_ftl_nand_byte_pre_oob:
24759 .type c_ftl_nand_byte_pre_page, %object
24760 .size c_ftl_nand_byte_pre_page, 2
24761 c_ftl_nand_byte_pre_page:
24763 .type c_ftl_nand_sec_pre_page_shift, %object
24764 .size c_ftl_nand_sec_pre_page_shift, 2
24765 c_ftl_nand_sec_pre_page_shift:
24767 .type c_ftl_nand_sec_pre_page, %object
24768 .size c_ftl_nand_sec_pre_page, 2
24769 c_ftl_nand_sec_pre_page:
24771 .type c_ftl_nand_page_pre_super_blk, %object
24772 .size c_ftl_nand_page_pre_super_blk, 2
24773 c_ftl_nand_page_pre_super_blk:
24775 .type c_ftl_nand_page_pre_slc_blk, %object
24776 .size c_ftl_nand_page_pre_slc_blk, 2
24777 c_ftl_nand_page_pre_slc_blk:
24779 .type c_ftl_nand_page_pre_blk, %object
24780 .size c_ftl_nand_page_pre_blk, 2
24781 c_ftl_nand_page_pre_blk:
24783 .type c_ftl_nand_bbm_buf_size, %object
24784 .size c_ftl_nand_bbm_buf_size, 2
24785 c_ftl_nand_bbm_buf_size:
24787 .type c_ftl_nand_ext_blk_pre_plane, %object
24788 .size c_ftl_nand_ext_blk_pre_plane, 2
24789 c_ftl_nand_ext_blk_pre_plane:
24791 .type c_ftl_nand_blk_pre_plane, %object
24792 .size c_ftl_nand_blk_pre_plane, 2
24793 c_ftl_nand_blk_pre_plane:
24795 .type c_ftl_nand_planes_num, %object
24796 .size c_ftl_nand_planes_num, 2
24797 c_ftl_nand_planes_num:
24799 .type c_ftl_nand_blks_per_die_shift, %object
24800 .size c_ftl_nand_blks_per_die_shift, 2
24801 c_ftl_nand_blks_per_die_shift:
24803 .type c_ftl_nand_blks_per_die, %object
24804 .size c_ftl_nand_blks_per_die, 2
24805 c_ftl_nand_blks_per_die:
24807 .type c_ftl_nand_planes_per_die, %object
24808 .size c_ftl_nand_planes_per_die, 2
24809 c_ftl_nand_planes_per_die:
24811 .type c_ftl_nand_die_num, %object
24812 .size c_ftl_nand_die_num, 2
24813 c_ftl_nand_die_num:
24815 .type c_ftl_nand_type, %object
24816 .size c_ftl_nand_type, 2
24820 .type gMasterTempBuf, %object
24821 .size gMasterTempBuf, 8
24824 .type gMasterInfo, %object
24825 .size gMasterInfo, 48
24828 .type gNandcDumpWriteEn, %object
24829 .size gNandcDumpWriteEn, 4
24832 .type gToggleModeClkDiv, %object
24833 .size gToggleModeClkDiv, 4
24836 .type gBootDdrMode, %object
24837 .size gBootDdrMode, 4
24840 .type gNandcEccBits, %object
24841 .size gNandcEccBits, 4
24844 .type gpNandc1, %object
24848 .type gpNandc, %object
24852 .type gNandcVer, %object
24857 .type gNandChipMap, %object
24858 .size gNandChipMap, 64
24861 .type gNandIDataBuf, %object
24862 .size gNandIDataBuf, 2048
24865 .type FlashDdrTunningReadCount, %object
24866 .size FlashDdrTunningReadCount, 4
24867 FlashDdrTunningReadCount:
24870 .type gNandPhyInfo, %object
24871 .size gNandPhyInfo, 28
24875 .type gFlashProgCheckSpareBuffer, %object
24876 .size gFlashProgCheckSpareBuffer, 8
24877 gFlashProgCheckSpareBuffer:
24879 .type gFlashProgCheckBuffer, %object
24880 .size gFlashProgCheckBuffer, 8
24881 gFlashProgCheckBuffer:
24883 .type gFlashSpareBuffer, %object
24884 .size gFlashSpareBuffer, 8
24887 .type gFlashPageBuffer1, %object
24888 .size gFlashPageBuffer1, 8
24891 .type gFlashPageBuffer0, %object
24892 .size gFlashPageBuffer0, 8
24895 .type gpFlashSaveInfo, %object
24896 .size gpFlashSaveInfo, 8
24899 .type gReadRetryInfo, %object
24900 .size gReadRetryInfo, 852
24904 .type gpNandParaInfo, %object
24905 .size gpNandParaInfo, 8
24908 .type gNandOptPara, %object
24909 .size gNandOptPara, 32
24912 .type g_slc2KBNand, %object
24913 .size g_slc2KBNand, 1
24916 .type g_maxRetryCount, %object
24917 .size g_maxRetryCount, 1
24920 .type g_maxRegNum, %object
24921 .size g_maxRegNum, 1
24924 .type g_retryMode, %object
24925 .size g_retryMode, 1
24928 .type gNandIDBResBlkNumSaveInFlash, %object
24929 .size gNandIDBResBlkNumSaveInFlash, 1
24930 gNandIDBResBlkNumSaveInFlash:
24932 .type gNandIDBResBlkNum, %object
24933 .size gNandIDBResBlkNum, 1
24937 .type gNandFlashResEndPageAddr, %object
24938 .size gNandFlashResEndPageAddr, 4
24939 gNandFlashResEndPageAddr:
24941 .type gNandFlashInfoBlockAddr, %object
24942 .size gNandFlashInfoBlockAddr, 4
24943 gNandFlashInfoBlockAddr:
24945 .type gNandFlashIdbBlockAddr, %object
24946 .size gNandFlashIdbBlockAddr, 4
24947 gNandFlashIdbBlockAddr:
24949 .type gNandFlashInfoBlockEcc, %object
24950 .size gNandFlashInfoBlockEcc, 1
24951 gNandFlashInfoBlockEcc:
24953 .type gNandFlashIDBEccBits, %object
24954 .size gNandFlashIDBEccBits, 1
24955 gNandFlashIDBEccBits:
24957 .type gNandFlashEccBits, %object
24958 .size gNandFlashEccBits, 1
24961 .type gNandRandomizer, %object
24962 .size gNandRandomizer, 1
24965 .type gBlockPageAlignSize, %object
24966 .size gBlockPageAlignSize, 4
24967 gBlockPageAlignSize:
24969 .type gTotleBlock, %object
24970 .size gTotleBlock, 2
24973 .type gNandMaxChip, %object
24974 .size gNandMaxChip, 1
24977 .type gNandMaxDie, %object
24978 .size gNandMaxDie, 1
24981 .type gFlashInterfaceMode, %object
24982 .size gFlashInterfaceMode, 1
24983 gFlashInterfaceMode:
24985 .type gFlashOnfiModeEn, %object
24986 .size gFlashOnfiModeEn, 1
24989 .type gFlashToggleModeEn, %object
24990 .size gFlashToggleModeEn, 1
24991 gFlashToggleModeEn:
24993 .type gFlashSdrModeEn, %object
24994 .size gFlashSdrModeEn, 1
24997 .type gMultiPageProgEn, %object
24998 .size gMultiPageProgEn, 1
25001 .type gMultiPageReadEn, %object
25002 .size gMultiPageReadEn, 1
25006 .type gpReadRetrial, %object
25007 .size gpReadRetrial, 8
25010 .type mlcPageToSlcPageTbl, %object
25011 .size mlcPageToSlcPageTbl, 1024
25012 mlcPageToSlcPageTbl:
25014 .type slcPageToMlcPageTbl, %object
25015 .size slcPageToMlcPageTbl, 512
25016 slcPageToMlcPageTbl:
25018 .type DieAddrs, %object
25022 .type gDieOp, %object
25026 .type DieCsIndex, %object
25027 .size DieCsIndex, 8
25030 .type IDByte, %object
25034 .type read_retry_cur_offset, %object
25035 .size read_retry_cur_offset, 4
25036 read_retry_cur_offset:
25038 .section .data.rel,"aw",%progbits
25041 .type rknand_sys_storage_dev, %object
25042 .size rknand_sys_storage_dev, 80
25043 rknand_sys_storage_dev:
25047 .xword rknand_sys_storage_fops