88#include "flash.h"
99#include "flash_com.h"
1010#include "nandc.h"
11+ #include "rkflash_debug.h"
1112
1213#define FLASH_STRESS_TEST_EN 0
1314
@@ -69,9 +70,9 @@ static void flash_read_id_raw(u8 cs, u8 *buf)
6970
7071 nandc_flash_de_cs (cs );
7172 if (ptr [0 ] != 0xFF && ptr [0 ] && ptr [1 ] != 0xFF )
72- PRINT_E ("No.%d FLASH ID:%x %x %x %x %x %x\n" ,
73- cs + 1 , ptr [0 ], ptr [1 ], ptr [2 ],
74- ptr [3 ], ptr [4 ], ptr [5 ]);
73+ PRINT_NANDC_E ("No.%d FLASH ID:%x %x %x %x %x %x\n" ,
74+ cs + 1 , ptr [0 ], ptr [1 ], ptr [2 ],
75+ ptr [3 ], ptr [4 ], ptr [5 ]);
7576}
7677
7778static void flash_bch_sel (u8 bits )
@@ -152,12 +153,12 @@ static u32 flash_read_page_raw(u8 cs, u32 page_addr, u32 *p_data, u32 *p_spare)
152153 error_ecc_bits = nandc_xfer_data (cs , NANDC_READ , sec_per_page ,
153154 p_data , p_spare );
154155 if (error_ecc_bits > 2 ) {
155- PRINT_E ("FlashReadRawPage %x %x error_ecc_bits %d\n" ,
156- cs , page_addr , error_ecc_bits );
156+ PRINT_NANDC_E ("FlashReadRawPage %x %x error_ecc_bits %d\n" ,
157+ cs , page_addr , error_ecc_bits );
157158 if (p_data )
158- rknand_print_hex ("data:" , p_data , 4 , 8 );
159+ PRINT_NANDC_HEX ("data:" , p_data , 4 , 8 );
159160 if (p_spare )
160- rknand_print_hex ("spare:" , p_spare , 4 , 2 );
161+ PRINT_NANDC_HEX ("spare:" , p_spare , 4 , 2 );
161162 }
162163 nandc_flash_de_cs (cs );
163164
@@ -196,10 +197,10 @@ static u32 flash_prog_page(u8 cs, u32 page_addr, u32 *p_data, u32 *p_spare)
196197 status = flash_read_status (cs , page_addr );
197198 nandc_flash_de_cs (cs );
198199 status &= 0x01 ;
199- if (status )
200- PRINT_I ("%s addr=%x status=%x\n" , __func__ ,
201- page_addr , status );
202-
200+ if (status ) {
201+ PRINT_NANDC_I ("%s addr=%x status=%x\n" ,
202+ __func__ , page_addr , status );
203+ }
203204 return status ;
204205}
205206
@@ -214,10 +215,10 @@ static u32 flash_erase_block(u8 cs, u32 page_addr)
214215 status = flash_read_status (cs , page_addr );
215216 nandc_flash_de_cs (cs );
216217 status &= 0x01 ;
217- if (status )
218- PRINT_I ("%s addr =%x status=%x\n" , __func__ ,
219- page_addr , status );
220-
218+ if (status ) {
219+ PRINT_NANDC_I ("%s pageadd =%x status=%x\n" ,
220+ __func__ , page_addr , status );
221+ }
221222 return status ;
222223}
223224
@@ -266,7 +267,7 @@ static s32 get_bad_blk_list(u16 *table, u32 die)
266267 bad_flag1 != 0xFF ||
267268 bad_flag2 != 0xFF ) {
268269 table [bad_cnt ++ ] = blk ;
269- PRINT_E ("die[%d], bad_blk[%d]\n" , die , blk );
270+ PRINT_NANDC_E ("die[%d], bad_blk[%d]\n" , die , blk );
270271 }
271272 }
272273 return bad_cnt ;
@@ -293,8 +294,7 @@ static void flash_test(void)
293294 u32 blk_addr = 64 ;
294295 u32 is_bad_blk = 0 ;
295296
296- PRINT_E ("%s\n" , __func__ );
297-
297+ PRINT_NANDC_E ("%s\n" , __func__ );
298298 bad_blk_num = 0 ;
299299 bad_page_num = 0 ;
300300 bad_cnt = get_bad_blk_list (bad_blk_list , 0 );
@@ -307,7 +307,7 @@ static void flash_test(void)
307307 if (i < bad_cnt )
308308 continue ;
309309 is_bad_blk = 0 ;
310- PRINT_E ("Flash prog block: %x\n" , blk );
310+ PRINT_NANDC_E ("Flash prog block: %x\n" , blk );
311311 flash_erase_block (0 , blk * blk_addr );
312312 for (page = 0 ; page < pages_num ; page ++ ) {
313313 page_addr = blk * blk_addr + page ;
@@ -336,19 +336,21 @@ static void flash_test(void)
336336 }
337337 if (is_bad_blk ) {
338338 bad_page_num ++ ;
339- PRINT_E ("ERR:page%x, ret=%x\n" , page_addr , ret );
340- rknand_print_hex ("data:" , pread , 4 , 8 );
341- rknand_print_hex ("spare:" , pspare_read , 4 , 2 );
339+ PRINT_NANDC_E ("ERR:page %x, ret= %x\n" ,
340+ page_addr ,
341+ ret );
342+ PRINT_NANDC_HEX ("data:" , pread , 4 , 8 );
343+ PRINT_NANDC_HEX ("spare:" , pspare_read , 4 , 2 );
342344 }
343345 }
344346 flash_erase_block (0 , blk * blk_addr );
345347 if (is_bad_blk )
346348 bad_blk_num ++ ;
347349 }
348- PRINT_E ("bad_blk_num = %d, bad_page_num = %d\n" ,
349- bad_blk_num , bad_page_num );
350+ PRINT_NANDC_E ("bad_blk_num = %d, bad_page_num = %d\n" ,
351+ bad_blk_num , bad_page_num );
350352
351- PRINT_E ("Flash Test Finish!!!\n" );
353+ PRINT_NANDC_E ("Flash Test Finish!!!\n" );
352354 while (1 )
353355 ;
354356}
@@ -369,57 +371,58 @@ static void flash_die_info_init(void)
369371 nand_para .blk_per_plane ;
370372}
371373
372- static void flash_print_info (void )
374+ static void nandc_flash_print_info (void )
373375{
374- PRINT_I ("No.0 FLASH ID: %x %x %x %x %x %x\n" ,
375- nand_para .nand_id [0 ],
376- nand_para .nand_id [1 ],
377- nand_para .nand_id [2 ],
378- nand_para .nand_id [3 ],
379- nand_para .nand_id [4 ],
380- nand_para .nand_id [5 ]);
381- PRINT_I ("die_per_chip: %x\n" , nand_para .die_per_chip );
382- PRINT_I ("sec_per_page: %x\n" , nand_para .sec_per_page );
383- PRINT_I ("page_per_blk: %x\n" , nand_para .page_per_blk );
384- PRINT_I ("cell: %x\n" , nand_para .cell );
385- PRINT_I ("plane_per_die: %x\n" , nand_para .plane_per_die );
386- PRINT_I ("blk_per_plane: %x\n" , nand_para .blk_per_plane );
387- PRINT_I ("TotleBlock: %x\n" , g_totle_block );
388- PRINT_I ("die gap: %x\n" , nand_para .die_gap );
389- PRINT_I ("lsb_mode: %x\n" , nand_para .lsb_mode );
390- PRINT_I ("read_retry_mode: %x\n" , nand_para .read_retry_mode );
391- PRINT_I ("ecc_bits: %x\n" , nand_para .ecc_bits );
392- PRINT_I ("Use ecc_bits: %x\n" , g_nand_flash_ecc_bits );
393- PRINT_I ("access_freq: %x\n" , nand_para .access_freq );
394- PRINT_I ("opt_mode: %x\n" , nand_para .opt_mode );
395-
396- PRINT_I ("Cache read enable: %x\n" ,
397- nand_para .operation_opt & NAND_CACHE_READ_EN ? 1 : 0 );
398- PRINT_I ("Cache random read enable: %x\n" ,
399- nand_para .operation_opt & NAND_CACHE_RANDOM_READ_EN ? 1 : 0 );
400- PRINT_I ("Cache prog enable: %x\n" ,
401- nand_para .operation_opt & NAND_CACHE_PROG_EN ? 1 : 0 );
402- PRINT_I ("multi read enable: %x\n" ,
403- nand_para .operation_opt & NAND_MULTI_READ_EN ? 1 : 0 );
404-
405- PRINT_I ("multi prog enable: %x\n" ,
406- nand_para .operation_opt & NAND_MULTI_PROG_EN ? 1 : 0 );
407- PRINT_I ("interleave enable: %x\n" ,
408- nand_para .operation_opt & NAND_INTERLEAVE_EN ? 1 : 0 );
409-
410- PRINT_I ("read retry enable: %x\n" ,
411- nand_para .operation_opt & NAND_READ_RETRY_EN ? 1 : 0 );
412- PRINT_I ("randomizer enable: %x\n" ,
413- nand_para .operation_opt & NAND_RANDOMIZER_EN ? 1 : 0 );
414-
415- PRINT_I ("SDR enable: %x\n" ,
416- nand_para .operation_opt & NAND_SDR_EN ? 1 : 0 );
417- PRINT_I ("ONFI enable: %x\n" ,
418- nand_para .operation_opt & NAND_ONFI_EN ? 1 : 0 );
419- PRINT_I ("TOGGLE enable: %x\n" ,
420- nand_para .operation_opt & NAND_TOGGLE_EN ? 1 : 0 );
421-
422- PRINT_I ("g_nand_idb_res_blk_num: %x\n" , g_nand_idb_res_blk_num );
376+ PRINT_NANDC_I ("No.0 FLASH ID: %x %x %x %x %x %x\n" ,
377+ nand_para .nand_id [0 ],
378+ nand_para .nand_id [1 ],
379+ nand_para .nand_id [2 ],
380+ nand_para .nand_id [3 ],
381+ nand_para .nand_id [4 ],
382+ nand_para .nand_id [5 ]);
383+ PRINT_NANDC_I ("die_per_chip: %x\n" , nand_para .die_per_chip );
384+ PRINT_NANDC_I ("sec_per_page: %x\n" , nand_para .sec_per_page );
385+ PRINT_NANDC_I ("page_per_blk: %x\n" , nand_para .page_per_blk );
386+ PRINT_NANDC_I ("cell: %x\n" , nand_para .cell );
387+ PRINT_NANDC_I ("plane_per_die: %x\n" , nand_para .plane_per_die );
388+ PRINT_NANDC_I ("blk_per_plane: %x\n" , nand_para .blk_per_plane );
389+ PRINT_NANDC_I ("TotleBlock: %x\n" , g_totle_block );
390+ PRINT_NANDC_I ("die gap: %x\n" , nand_para .die_gap );
391+ PRINT_NANDC_I ("lsb_mode: %x\n" , nand_para .lsb_mode );
392+ PRINT_NANDC_I ("read_retry_mode: %x\n" , nand_para .read_retry_mode );
393+ PRINT_NANDC_I ("ecc_bits: %x\n" , nand_para .ecc_bits );
394+ PRINT_NANDC_I ("Use ecc_bits: %x\n" , g_nand_flash_ecc_bits );
395+ PRINT_NANDC_I ("access_freq: %x\n" , nand_para .access_freq );
396+ PRINT_NANDC_I ("opt_mode: %x\n" , nand_para .opt_mode );
397+
398+ PRINT_NANDC_I ("Cache read enable: %x\n" ,
399+ nand_para .operation_opt & NAND_CACHE_READ_EN ? 1 : 0 );
400+ PRINT_NANDC_I ("Cache random read enable: %x\n" ,
401+ nand_para .operation_opt &
402+ NAND_CACHE_RANDOM_READ_EN ? 1 : 0 );
403+ PRINT_NANDC_I ("Cache prog enable: %x\n" ,
404+ nand_para .operation_opt & NAND_CACHE_PROG_EN ? 1 : 0 );
405+ PRINT_NANDC_I ("multi read enable: %x\n" ,
406+ nand_para .operation_opt & NAND_MULTI_READ_EN ? 1 : 0 );
407+
408+ PRINT_NANDC_I ("multi prog enable: %x\n" ,
409+ nand_para .operation_opt & NAND_MULTI_PROG_EN ? 1 : 0 );
410+ PRINT_NANDC_I ("interleave enable: %x\n" ,
411+ nand_para .operation_opt & NAND_INTERLEAVE_EN ? 1 : 0 );
412+
413+ PRINT_NANDC_I ("read retry enable: %x\n" ,
414+ nand_para .operation_opt & NAND_READ_RETRY_EN ? 1 : 0 );
415+ PRINT_NANDC_I ("randomizer enable: %x\n" ,
416+ nand_para .operation_opt & NAND_RANDOMIZER_EN ? 1 : 0 );
417+
418+ PRINT_NANDC_I ("SDR enable: %x\n" ,
419+ nand_para .operation_opt & NAND_SDR_EN ? 1 : 0 );
420+ PRINT_NANDC_I ("ONFI enable: %x\n" ,
421+ nand_para .operation_opt & NAND_ONFI_EN ? 1 : 0 );
422+ PRINT_NANDC_I ("TOGGLE enable: %x\n" ,
423+ nand_para .operation_opt & NAND_TOGGLE_EN ? 1 : 0 );
424+
425+ PRINT_NANDC_I ("g_nand_idb_res_blk_num: %x\n" , g_nand_idb_res_blk_num );
423426}
424427
425428static void ftl_flash_init (void )
@@ -452,7 +455,7 @@ u32 nandc_flash_init(void __iomem *nandc_addr)
452455{
453456 u32 cs ;
454457
455- /* PRINT_I ("...%s enter...\n", __func__); */
458+ PRINT_NANDC_I ("...%s enter...\n" , __func__ );
456459 g_nand_idb_res_blk_num = MAX_IDB_RESERVED_BLOCK ;
457460
458461 nandc_init (nandc_addr );
@@ -467,18 +470,29 @@ u32 nandc_flash_init(void __iomem *nandc_addr)
467470 if (id_byte [0 ][1 ] != 0xF1 &&
468471 id_byte [0 ][1 ] != 0xDA &&
469472 id_byte [0 ][1 ] != 0xD1 &&
470- id_byte [0 ][1 ] != 0x95 )
473+ id_byte [0 ][1 ] != 0x95 &&
474+ id_byte [0 ][1 ] != 0xDC )
475+
471476 return FTL_UNSUPPORTED_FLASH ;
472477 }
473478 }
474479 nand_para .nand_id [1 ] = id_byte [0 ][1 ];
475480 if (id_byte [0 ][1 ] == 0xDA ) {
476481 nand_para .plane_per_die = 2 ;
477482 nand_para .nand_id [1 ] = 0xDA ;
483+ } else if (id_byte [0 ][1 ] == 0xDC ) {
484+ nand_para .nand_id [1 ] = 0xDC ;
485+ if (id_byte [0 ][0 ] == 0x2C && id_byte [0 ][3 ] == 0xA6 ) {
486+ nand_para .plane_per_die = 2 ;
487+ nand_para .sec_per_page = 8 ;
488+ } else {
489+ nand_para .plane_per_die = 2 ;
490+ nand_para .blk_per_plane = 2048 ;
491+ }
478492 }
479493 flash_die_info_init ();
480494 flash_bch_sel (nand_para .ecc_bits );
481- flash_print_info ();
495+ nandc_flash_print_info ();
482496 /* flash_print_info(); */
483497 ftl_flash_init ();
484498
0 commit comments