2009.07.20
1. yaffs_fs.c: if mtd->size<32MB, increase dev->nReservedBlocks to 10%
   of dev->nErasedBlocks for more aggressive GC
2. add mcp MCP_AES_ECB in nand driver, system_parameters: mcp=ecb
=======================================================================
2009.07.01
1 nand_base_rtk.c: Underclock specific nand flashs Cuz of WE
=======================================================================
2009.06.02
1. rtk_nand.c: add CP AES_ECB encryption/decryption of nand data. But not
   check in svn.
=======================================================================
2009.05.20
1. nanddump.c: add -r to present realtek nand data layout
=======================================================================
2009.05.14
1. nand_base_rtk.c: If mp_erase_flag=1, nand driver will not create BBT.
=======================================================================
2009.05.12
1. nand_base_rtk.c:
 (1) add mp_time_para in system_parameters to tune T1, T2 and T3 for MP
 (2) add nf_clock in system_parameters to change nand flash clock
=======================================================================
2009.05.04 (NOT check in SVN)
1. nand_base_rtk.c: add nand_get_device() and nand_release_device() according
   to nand_base.c
2. rtk_nand.c: add power_suspend_flag to protect illegal access nand in
   suspend time. but Jimmy do not want me to check in svn. It is not
   good without protection.
=======================================================================
2009.04.22
1. nand_base_rtk.c: implement nand_suspend() and nand_resume()
2. rtk_nand.c: implement rtk_nand_suspend() and rtk_nand_resume()
=======================================================================
2009.04.20
1 nandwrite.c:
  - add -c: read back one page data and oob after write one page data
    and oob to verify them
=======================================================================
2009.04.15
1. nand_base_rtk.c: remove CONFIG_RTK_MP_ERASE_ALL and get mp_erase_nand
   from /sys/realtek_boards/system_parameters
=======================================================================
2009.04.14
* MP bug: yaffs chunk %d was not erased
1. nanddump.c: Jack bug: should memset oobpackedbuf to 0xff, not 0x00
2. nandwrite.c:
  - Jack bug: miss a option: -n. It will use wrong oob buffer: oobbuf,
    not oobreadbuf
  - add -i: do not write page that data and oob are all 0xff
  - yaffs_guts: yaffs_CheckChunkErased(): double blank check, HW blank
    check and for loop
3. mtdchar.c: add ioctl RTKEMEERASE for erase
4. add kernel config: CONFIG_RTK_MP_ERASE_ALL for MP
=======================================================================
2009.04.06
1. nand_base_rtk.c: support K9F2G08U0B and HY27UF082G2B
=======================================================================
2009.03.26
1. yaffs_guts.h: set YAFFS_WR_ATTEMPTS to original value
=======================================================================
2009.03.12
1. nand_base_rtk.c:
  - add HY27UT084G2A, but no sample to test
  - add B5th to check nand type if it has the 5th byte.
  - nand_type_id will be the first 4 bytes of read-id and re-define all
    nand flash type
2. rtk_nand.h: remove CycleID3rd and CycleID4th in struct device_type_t
=======================================================================
2009.03.06
1. upgrade yaffs_guts.c to 1.80
=======================================================================
2009.03.05
1. upgrade yaffs_guts.c to 1.79 and yaffs_fs.c to 1.75 to fix bug that
   "rmdir oop" will pop "==>> yaffs bug: fs/yaffs2/yaffs_guts.c 6818"
=======================================================================
2009.03.04
1. nand_base_rtk.c: fix the potential bug that R/W/E bad block mapping
   of multi dies. If remapping block is bad, remapping block is mapping
   to new block in BBT.
   ex: if (0, 130, 0, 1020) and (0, 1020, 0, 1019), when
   U R/W/E block 130, it should mapp to 1019, not 1020.
   ex:(0, 156, 1, 4095) and (1, 4095, 1, 4073)
=======================================================================
2009.02.19
1. add mark BB in TEST_RWE() and TEST_ERASE_ALL()
=======================================================================
2009.02.17
1. rtk_nand.c: add RTK_TEST_RWE to stress test on specific block and page.
=======================================================================
2009.02.16
1. nand_base_rtk.c: support NAND01GW3B2C:son of NAND01GW3B2B
=======================================================================
2009.02.13
1. nand_base_rtk.c: support Libra nand: NAND01GW3B2B
2. rtk_nand.c: When driver can not recognize nand, it should not print
   "Realtek Nand Flash Driver is successfully installing."
3. add bi_cmp.c to compare cp in/out file of nand
=======================================================================
2009.02.12
1. nandwrite supports writing normal files
2. support nand:
  - Toshiba: TC58NVG0S3C, TC58NVG1S3C
  - STMicorn: NAND02GW3B2D, NAND04GW3B2D, NAND08GW3C2B
=======================================================================
2009.02.11
1. mtdblock.c: #define ERASE_NAND to en/disable erase before writing data.
2. add dd_time.c to calculate the program run time for dd and nandwrite.
=======================================================================
2009.02.10
1. mtdchar.c and mtd-abi.h: add ioctl MEMRELOADBBT for chip MP
2. mtd.h: add reload_bbt callback funciton in struct mtd_info
3. nand_base_rtk.c: set up rtk_nand_scan_bbt to mtd->reload_bbt
4. add reload_bbt.c to test relaod function in ~/nand_yaffs/mtd/util
=======================================================================
2009.01.23
1. rtk_nand.h: add RBA_PERCENT in struct nand_chip and remove #define RBA_PERCENT
2. rtk_nand.c: RBA_PERCENT can be passed in kernel parameter in the future.
3. nand_base_rtk.c: RBA is not limited to 2*page_size NOW.
=======================================================================
2009.01.21
1. yaffs_fs.c:
  - add sb MS_RDONLY check for MTDBLOCK1_CHECKPOINT
=======================================================================
2009.01.20
1. yaffs_fs.c:
 - define MTDBLOCK1_CHECKPOINT to force writing checkpiont of mtdblock1
 - speed up kernel bootup time from 15 sec to 9 sec
=======================================================================
2009.01.19
1. yaffs_fs.c:
 - upgrade 1.70. I mark out autocheckpoint in v1.70 Cuz it will be confused
   that mtdblock1 "yaffs: restored from checkpoint" if mtdblock > 2.
 - remove useless /proc/yaffs member
=======================================================================
2009.01.16
1. yaffs_mtdif2.c: add NAND_DRIVER_BBM check for "struct mtd_info *mtd"
   to remove making kernel warnning.
2. yaffs_guts.c: upgrade to 1.73: Change some object verification
=======================================================================
2009.01.14
1. yaffs_guts.c: upgrade to 1.71: Consolidate unlinked file handling during
   init to take care of restored checkpoint case too.
=======================================================================
2009.01.13
1. I will print "successfully installing" msg. after nand and yaffs driver
   are loading.
=======================================================================
2009.01.09
1. yaffs_guts.c: upgrade to 1.70:Fix chunk start problem properly
2. rtk_nand.c: add nand PLL check if bootcode close nand PLL
=======================================================================
2009.01.08
1. remove R/W page RTK_FLUSH_CACHE from nand_base_rtk.c to rtk_nand.c
   and let maintain codes easily.
2. /proc/nandinfo show one nand info size, not total nand size.
3. let RTK_TEST_ERASE_ALL more robust for multi-dies
=======================================================================
2009.01.07
1. support K9K8G08U0A
2. rtk_nand.c: add RTK_FLUSH_CACHE in rtk_read_ecc_page() Cuz loading bbt
   error occurs when using two memory page to load.
=======================================================================
2009.01.06
1. add CycleID4th and CycleID5th in struct device_type_t
2. nand_base_rtk.c: use 4th byte to distinguish nand type
3. support K9G8G08U0A
=======================================================================
2009.01.05
1. remove auto-trigger mode check in R/W page
=======================================================================
2008.12.30
1. add unyaffs.c to un-tar yaffs image and support 4k page
2. fix KEN_TIMER_WRITE in rtk_nand.c
=======================================================================
2008.12.26
1. I can calculate R/W speed of nand driver and yaffs at the same time.
2. move rtk_reset_controller() codes in rtk_nand_init()
3. HY27UT084G2M recognization problem:
  - Cuz my Seventeam power supply power up slope slowly. This is HW issue.
=======================================================================
2008.12.25
1. setup lower T1, T2, T3 and REG_DELAY_CNT and disable EDO in rtk_nand_init()
   in order to read id of slow nand flash(ex:HY27UT084G2M). reset the
   optimal speed after hitting Nand Chip ID list table.
=======================================================================
2008.12.23
1. rtk_nand.c:
  - mark "Disable Table SRAM" in R/W page and write it in rtk_nand_init()
    one time.
=======================================================================
2008.12.22
1. mips version tools for 4k page size nand:
  - mkyaffs2image: use ioctl to get page size
  - mkyaffs2image: use cmdline to get page size
  - nandwrite and nanddump both get page size by ioctl to auto detect
2. rtk_nand.c:
  - read activity: mark "Reset PP" in 2nd-1K page
=======================================================================
2008.12.19
1. add T1, T2 and T3 in strcut device_type_t
2. support K9F8G08U0M
3. nandwrite and mkyaffs2image support 4K page. I have to setup some
   cmdline parameter.
=======================================================================
2008.12.18
1. move RTK_FLUSH_CACHE of read page from rtk_nand.c to nand_base_rtk.c
2. remove nand_type_id from rtk_nand.h to nand_base_rtk.c and add CycleID3rd
   in strcut device_type_t
3. add distinguishability to 2 x HY27UF084G2M and HY27UG088G5M that they
   both have the same die type. I skip the situation having 2 x HY27UF084G2M
   on board.
4. support K9G8G08U0M
=======================================================================
2008.12.17
1. rtk_nand.c:
  - call RTK_FLUSH_CACHE before DMA in rtk_read_ecc_page() and rtk_read_oob()
    to fix getting stale data in cache.
2. nand_base_rtk.c
  - depend on nand_device[] and clean messy codes
=======================================================================
2008.12.15
1. add support HY27UF082G2A and fix bug that check K9G4G08U0A BB page
2. add isLastPage member in struct device_type_t and use it to check
   whether the block is ok instead of nand_type_id.
=======================================================================
2008.12.11
1. linux-2.6.12/fs/yaffs2 is sync. with ~/tools/yaffs
=======================================================================
2008.12.10
1. test for cp files to nand, It works fine.
2. yaffs_fs.c:
  - mark Ken_FlushCache_CheckPoint()
=======================================================================
2008.12.09
1. update yaffs code to v 1.69 manually.
2. The power failure problem is improved. I need to do more tests.
=======================================================================
2008.12.01
1. yaffs_fs.c:
  - set Num_ShortOpCaches=0 and do not need to call
    yaffs_FlushEntireDeviceCache() in Ken_FlushCache_CheckPoint()
2. yaffs_guts.c:
  - add Ken_yaffs_CheckpointSave() to force writing checkpoint into nand
=======================================================================
2008.11.28
1. modify etc/init.d/rcS1 to add umount and mount helper. Doing this fixs
  "Unable to handle kernel paging request at virtual address 00000000" after
  AP writes on /usr/local/etc and then OS reboots.
=======================================================================
2008.11.27
1. yaffs_guts.c:
  - remove "yaffs chunk id invalid" messages
  - add dev->YaffsBug_Block_Invalid in struct yaffs_DeviceStruct to
    check if chunk id lost after writing when power failure happened.
=======================================================================
2008.11.25
1. yaffs_fs.c: Yaffs will print version according to RTK svn version.
=======================================================================
2008.11.24
1. yaffs_fs.c: remove useless eccFixed, eccUnfixed, tagsEccFixed and
   tagsEccUnfixed in /proc/yaffs to save memory.
2. nand_fs_test.c: add PERFORMANCE or ACCESS_TEST in command line.
=======================================================================
2008.11.21
1. yaffs_fs.c: Cuz our kernel always has last piece memory data that do
   not flush into nand flash, So I add Ken_FlushCache_CheckPoint() in
   yaffs_file_flush(). When program closes the file, Ken_FlushCache_CheckPoint()
   will flush the cache and save checkpoint. It only works on "Write".
=======================================================================
2008.11.19
1. mtd_blkdevs.c: fix bug: use dd to read the nand partition that the
   size is 1/4 of origin.
=======================================================================
2008.11.18
1. yaffs_fs.c:
  - add "isCheckpointed" in /proc/yaffs
  - add yaffs_remount_fs(), but not used it.
=======================================================================
2008.11.17
1. yaffs_guts.c: remove the limitation that doing GC only when mtd size
   < 20 MB
=======================================================================
2008.11.13
1. support K9G4G08U0A and K9F1G08U0B
=======================================================================
2008.11.12
1. support HY27UF081G2A and fix bug that calculate oob_size with read_id
   4th byte.
2. Cuz HY27UF081G2A always can not get BBT, I add RTK_FLUSH_CACHE to flush
   this->g_databuf before calling this->read_ecc_page()
=======================================================================
2008.11.07
1. yaffs_guts.c: reading will call yaffs_ReadChunkWithTagsFromNAND() two
   times in yaffs_ReadChunkDataFromObject(). I modify to do it one time
   according our HW IP characteristic. Enhancing MLC nand read speed(YAFFS)
   is from 7.947390 to 15.778585(MB/s).
=======================================================================
2008.10.29
1. check nand_test_fs into svn
2. add STRIP in Makefile for making mtd and yaffs tools
=======================================================================
2008.10.27
1. Nand Driver with multiple nands and dies formal release
=======================================================================
2008.10.24
1. do not compile nand_ids.c when making kernel. I do not need it now
   Cuz of reducing kernel code sizes.
2. clean useless annotation and codes
=======================================================================
2008.10.23
1. review the initial procedure and remove searching nand_flash_ids[] of
   nand_ids.c in rtk_nand_scan()
2. If you mount a partition as yaffs filesystem, you have to umount it
   before reboot. Otherwise you will get lots error messages like
   " **>> yaffs: BlockBits block 242738 is not valid " when you mount it
   after reboot. Cuz umount will write the memory data back into nand.
=======================================================================
2008.10.22
1. modifying nand_ptest to test R/W speed of nand: average read is 7.044(MB/s)
   and average write is 2.150(MB/s)
2. R/W on 2 x HY27UT088G2A is ok.
=======================================================================
2008.10.21
1. nand flash borad 5: 2 x HY27UT088G2A
   nand_base_rtk.c: I search HY27UT088G2A in nand_device[] and numchips=1.
   I call read_id and get the num_chips_probe=2 in rtk_update_bbt(). It
   means that there are two nand flashes on board. mtd->size = 2147483648
   this->numchips * this->chipsize; It can work on MTD layer.
2. Cuz YAFFS_MAX_CHUNK_ID=0x000FFFFF=1048575 and 2xHY27UT088G2A has 1048576
   pages, Yaffs can not support so many pages. That is it's utmost.
=======================================================================
2008.10.20
1. nandwrite yaffs image is ok.
=======================================================================
2008.10.17
1. erase: remove mark BB features from rtk_nand.c to nand_base_rtk.c
   when BB is happened.
2. change id in struct device_type_t nand_device[] to Hynix part number
3. If it occurs Un-correctableHW ECC error when reading progress, I still
   add the failure block in BBT. If I do not do this, future R/W this
   block will occur error and disobey all good blocks rules for Yaffs view.
4. R/W benchmark
====Write new (Table Sram) with Multi-Dies(SLC), BBM and kernel cache ===
file   size(Bytes) time(Sec) speed (MB)
(DDR2Nand)
05.mp3(YAFFS)     5524414  0.874748 6.315434
05.mp3(Nand Driver) 5524414  0.813680 6.789418

====Write new (Table Sram) with One-Dies(MLC), BBM and kernel cache =====
file   size(Bytes) time(Sec) speed (MB)
(DDR2Nand)
05.mp3(YAFFS)        5524414 2.422940 2.280045
05.mp3(Nand Driver)  5524414 2.389587 2.311869

====Read new with with Multi-Dies(SLC), BBM and D Read and kernel cache==
file   size(Bytes) time(Sec) speed (MB)
(DDR2Nand)
05.mp3(YAFFS)      5524414 0.611565 9.033240
05.mp3(Nand Driver)  5524414 0.301081 18.348597

====Read new with with One-Dies(MLC), BBM and D Read and kernel cache====
file   size(Bytes) time(Sec) speed (MB)
(DDR2Nand)
05.mp3(YAFFS)       5524414  0.695123 7.947390
05.mp3(Nand Driver) 5524414  0.341027 16.199344
=======================================================================
2008.10.16
1. nand_read_oob(): fix this->active_chip wrong position
2. HY27UG088G5B: has verified tough situation on Yaffs:
   writing data according BBT remapping and have errors when writing
   progress across Die boundary.
=======================================================================
2008.10.15
1. add dump_BBT() to make codes more clean
2. change /proc/nandinfo to decimal notation
3. rtk_nand.c: add chipnr parameter in R/W/E APIs to let erase_page_flag
   work correctly
4. modify rtk_block_isbad() API
=======================================================================
2008.10.14
1. modify all members in struct BB_t to u16 and BB_t is occupied 8 Bytes
   memory. If RBA is larger than one page, I have to allocate two-page
   size temp_BBT to copy back the two pages nand data. Only this way
   can work on RBA of two pages.
2. BB is happed when writing pages. Backup data will pop HW-ECC error
   at block 1st and 2nd page. So I remove mark BB features from rtk_nand.c
   to nand_base_rtk.c when BB is happened.
3. I have finished all functions in nand_base_rtk.c for multi-dies. I Still
   need to do more test on multi-dies nand.
=======================================================================
2008.10.13
1. Multi Dies: nand_erase_nand is ok.
2. In the past, I use one page to save BBT. I modidy new BBT struct and
   HY27UG088G5B has 8192 blocks. I use to two pages to save BBT. It has
   some problems in rtk_create_bbt() in writing 2th page of BBT.
=======================================================================
2008.10.09
1. Single Die: Cuz All RTK SOC use the same rescure, I have to check the
   chip types. Nand driver only supports chip type after mars
2. Multi Dies: rtk_nand_profile() has finished. I need multi-dies nand to
   check if BBT is created correctly. struct BB_t prototype is changed.
=======================================================================
2008.10.08
1. nandwrite.c: add "erase before writing" feature in option
2. start to develop nand driver version with multiple dies in single chip.
   add maxchips in rtk_nand_scan() and finish to rtk_nand_scan() parts.
=======================================================================
2008.10.07
1. rtk_nand.c: add mark BB in rtk_write_oob() by calling rtk_write_oob()
   itself and test RTK_TEST_WRITE_OOB
2. nand_base_rtk.c: add RTK_TEST_WRITE_OOB
3. Cuz rescure has to set up a fixed mtd name, mtd->name is always "rtk_nand"
4. protect BBT against writing from AP, I add isBBT in rtk_write_ecc_page()
   to check where the writing action comes from. modify relative API in
   nand_base_rtk.c and rtk_nand.h.
=======================================================================
2008.10.06
1. I modify nanddump.c, mtd-abi.h and mtdchar.c to let read page only one
   time.
2. formal nand, MTD and yaffs driver release.
=======================================================================
2008.10.05
1. Cuz nandwrite will run in rtk_write_ecc_page() instead of rtk_write_oob()
   and rtk_write_ecc_page() two times, I do not need to write 6th Bytes in oob.
   I only use rtk_write_oob() to label BB right now. I remove label_bb in
   rtk_write_oob() API and modify relative functions in rtk_read_ecc_page(),
   nand_base_rtk.c and rtk_nand.h.
2. To save memory usage, I use three global buffer: *g_databuf, *g_oobbuf and
   __u32 *erase_page_flag in struct nand_chip. I allocate them in the end of
   rtk_nand_scan(). Have to modify buffer usage in rtk_nand.c and nand_base_rtk.c.
3. add write_oob_to_TableSram() and read_oob_from_PP() in rtk_nand.c,
   reverse_to_Yaffs2Tags() in nand_base_rtk.c to make codes mode clean.
4. YAFFS2 BUGs: I test "cp" file with filename more than 15 chars to /mnt/f0,
   this file becomes a "directory with empty filename". This situation is also
   happened in mkyaffs2image and then mounting.
5. Item 4 YAFFS2 BUGs:
   Cuz I open "Cache short names in RAM" in kernel config, YAFFS_SHORT_NAME_LENGTH
   is 15 in yaffs_guts.h. I change it to 63. This bugs is fixed and support
   filename to 64 chars.
=======================================================================

2008.10.03
1. mtd-abi.h:
   add "struct mtd_data_oob", "struct mtd_data_buf" and "#define MEMWRITEDATAOOB"
   to let nandwrite to do one time ioctl( ,MEMWRITEDATAOOB, )
   to get correct data when writing yaffs images and mounting.
2. rtk_nand.c:
   add global buffer: g_databuf and g_oobbuf
3. nand_base_rtk.c:
   add rtk_block_isbad() for internal usage and nand_block_isbad() is always
   return 0;
4. mtdchar.c:
   add ioctl cmd MEMWRITEDATAOOB
5. nandwrite.c:
   use ioctl( , MEMWRITEDATAOOB, ) to do page write one time instead of write
   OOB and DATA separate 2 times.
6. mkyaffs2image.c:
   BUGS: If the filename is longer than 15 chars, mount yaffs will not see
   these files.
=======================================================================
2008.10.01
rtk_nand.h:
1. add parameter "label_bb" in (*write_oob)()
rtk_nand.c:
1. add parameter "label_bb" in rtk_write_oob() to judge to write action
   is from user-mode nandwrite.c or label BB.
2. add global buffer databuf_for_RWoob to used as data buf for R/W
3. change display_version() to call strsep() version
4. in rtk_write_oob(), I'll set databuf_for_RWoob initial values as 0xff.
   in rtk_write_ecc_page(), if oob_buf is null, I'll use oob_buf_local
   and initial values as 0xff.
   To do this Cus 0xff will not damage data on nand flash.
5. ./nandwrite -y -n -o /dev/mtd/0 test1.yaffs2 , then
   mount -t yaffs /dev/mtdblock/0 /mnt/f0 , it pop Un-correctable HW ECC Error
   <sol>
   rtk_write_oob(), I save 0xAA in 6th Bytes in oob to judge the Un-correctable
   HW ECC Error is from nandwrite, not real one.
=======================================================================
2008.09.30
Name change:
1. mars_* -> rtk_*
2. MARS_* -> RTK_*
3. nand_mars.h-> rtk_nand.h
4. nand_base_mars.c -> nand_base_rtk.c  ==> Make file and Kconfig have to
   change, too.

 

 

 

 

nand_mars.h:
1. read_ecc_pages() -> read_ecc_page() and write_ecc_pages() ->
   write_ecc_page()

rtk_nand.c
1. mars_read_oob(): modify page_len = (1024) >> 9; //512B Unit
2. mars_dump_nand_data(): dump 16B/line
3. mars_write_oob(): add: read back data area from this page, this func. call
   onlt change oob
4. mars_write_ecc_pages() ->mars_write_ecc_page() and mars_read_ecc_pages()
  ->mars_read_ecc_page()
5. rtk_nand_init(): change order of mars_nand_init() and erase_page_flag,  but
   in this way, my test can not work Cuz erase_page_flag
6. set page_size, oob_size, ppb to global variables
7. remove mars_sync()
8. add display_version() to show svn revision and date

nand_base_mars.c:
1. mars_read_oob() and mars_write_oob() add BBT, Cuz nandwrite.c write data
and oob independently
2. read_ecc_pages() -> read_ecc_page() and write_ecc_pages() ->
write_ecc_page()
3. set page_size, oob_size, ppb to global variables
4. change r/w from single to multiple pages
=======================================================================
2008.09.26
(1) change mars_write_oob() to mars_read_ecc_pages() because mtd nandwrite.c
will call mars_write_oob() to oob.
=======================================================================
2008.09.25
(1) add /proc/nandinfo
=======================================================================
2008.09.24
(1) fix bugs: when writing page error, backup pages before failure page
    should shift tags for yaffs after backup reading pages.
=======================================================================
2008.09.23
(1) fix 0922 erase bugs: It is nand_erase_nand() bugs, not yaffs.
(2) modify mars_nand_bbt() to make bbt more robust.
(3) fix: use dd will hang up at schedule() in erase_write().
=======================================================================
2008.09.22
(1) fix Yaffs bugs: rm file and cp file to nand, it pops "page %d in gc
    has no object" in yaffs_GarbageCollectBlock():
    In yaffs_BlockBecameDirty(), yaffs_InvalidateCheckpoint() and
    yaffs_EraseBlockInNAND() will both call erase function, thus erase
    2 blocks one time, I force yaffs_EraseBlockInNAND() to be YAFFS_OK.
=======================================================================
2008.09.18
(1) MTD dd and Yaffs cp is ok.
(2) RBA change to 5%, ex: Hynix 1GB 4096*5% = 204
(3) modify nand_erase_nand() to work with BBT and add erase bbt test
(4) fix bugs: cannot re-mount. because mars_read_oob() do not shift tags.
=======================================================================
2008.09.17
(1) When writing data to nand, if the data buf is used before, U have to
    call MARS_FLUSH_CACHE to flush DDR to cache to make data coherency.
    ex: nand driver creates BBT failures.
=======================================================================
2008.09.16: port to kernel with cache
(1) mars_read_ecc_pages(): do not allocate another buffer for oob_buf
    shift for yaffs tags usage
(2) fix bugs: oob_buf should not shift at page 0 and page 128 in
    mars_read_ecc_pages()
=======================================================================
2008.09.12
(1) fix bugs: writing BBT_TAG at block 0 fails when nand_write_ecc()
    because I always set 1st Bytes as 0xff when writing pages in
    mars_write_ecc_pages().
(2) when remap_block is bad, remap_block is mapping to new block in RBA.
    it works fine.
(3) yaffs_mtdif2.c: because nand driver has handled BB with remap way.
    So I do not use Yaffs BBM, fool the yaffs to treat the whole
    nand as no BB.
(4) do not do byte shift in yaffs_mtdif2.c. change to mars_read_ecc_pages().
    do this because yaffs can not get the correct tags of page offset
    0~(failure page-1)
(5) mars_read_ecc_page(): modify 2nd-1k read Auto mode as D-read
=======================================================================
2008.09.11
(1) fix bugs: read page is easy to pop un-correctable hw ecc error
    ==> add check read status and reset PP in mars_read_ecc_pages()
(2) reserve 200 blocks in RBA no matter how many good blocks we have
(3) BB management is OK when write page if BB happens
=======================================================================
2008.09.10
(1) struct mtd_info:use "type" instead of "isNand" when use dd
(2) dd read/write work on when BB happens
(3) nand_base_mars.c: update BBT when Un-correctableHW ECC
=======================================================================
2008.09.09
(1) nand_base_mars.c: load bootcode BBT, otherwise create BBT in block 0
    and BB re-mapping when r/w
=======================================================================
2008.09.03
(1) modify mtd_blkdevs.c and mtdblock.c to let "dd" work on Nand and Nor.
=======================================================================
2008.09.02
(1) modify mars_write_oob() to table sram mode
(2) It happens Un-correctableHW ECC error when reading page, I will call
    mars_write_oob() to mark the page that is bad.
=======================================================================
2008.09.01
(1) enhance READ speed: modify yaffs_guts.c: yaffs_FindChunkInFile() and
    yaffs_FindChunkInGroup() API
=======================================================================
2008.08.28
(1) add KEN_TIMER_WRITE in rtk_nand.c
(2) max iterations in !aggressive is 10
(3) rtk_nand.c: expand to suppport 4K-pagesize Nand
(4) yaffs_mtdif2.c: not use temp_buf to store tags
=======================================================================
2008.08.27
(1) add "$id$" in file: rtk_nand.c, nand_base_mars.c
(2) yaffs_fs.c: Num_ShortOpCaches = 0
(3) yaffs_FindBlockForGarbageCollection(): let !aggressive mode iterations
    decrease, iterations = iterations >> 6;
=======================================================================
2008.08.26
(1) When pagesize=2k, I send 2 X 1k-pagesize in order to use 24B spare.
(2) 16B Yaffs tags is ok.
(3) because mounting will pop HW ECC Error after cool reboot, so re-fill
the erase_page_flag if we don't use erase function.
(4) If bootcode or kernel don't pass partition table, nand drirver will
add a block node under /dev/mtdblock/0
=======================================================================
2008.08.21
(1) R/W 1K-pagex2 instead of 2K-page in auto trigger mode
=======================================================================
2008.08.19
(1) Because nand driver shares IRQ with SATA driver, I have to register
IRQ to "share" with SATA Driver. Otherwise Nand driver will occupy the
IRQ alone and close SATA Driver IRQ
=======================================================================
2008.08.18
(1) dd function ok: modify mtd_blkdevs.c and mtdblock.c. BUT if the file
is not page alignment, the other part of the page will be "0XFF" when I
just erase the partition.
=======================================================================
2008.08.15
(1) modify MTD to let nand 2K-page to work by use "dd" command
=======================================================================
2008.08.13
(1) packed yaffs_PackedTags2TagsPart struct into 11 Bytes
(2) all YAFFS tags are encapulated in 12 Bytes in spare area.
=======================================================================
2008.08.08
(1) fix 05.mp3 bobo sound: get wrong(zero) data at 1st page in every block
   yaffs_guts.c: dev->chunkBitmapStride = (dev->nChunksPerBlock + 7) >> 3
   I shift wrong bits.
(2) add KEN_MTD_PARTITION in mars_nand_init()
=======================================================================
2008.08.05
(1) mark out MARS_FLUSH_CACHE in mars_write_ecc_pages() and
    mars_write_oob()
(2) check in SVN
=======================================================================
2008.08.04
(1) change erase_page_flag record way by __32 bitmap, so the mem. usage
    is from 4096*128B to (4096*128)/8 B
(2) rtk_nand.c: add KEN_MTD_PARTITION to en/dis able mtd partition when
    the installer wanna to partition.
(3) nand_base_mars.c: add Nand_Block_Isbad_Slow_Version to choose running
    read_oob to check one/two page status of block.
(4) add "if (dev->nShortOpCaches > 0)" in yaffs_WriteDataToFile() after
    call yaffs_WriteChunkDataToObject()
=======================================================================
2008.08.01
(1) modify API: remove col parameter in mars_read_oob and mars_write_oob
(2) add erase_page_flag[4096*128] to record the page that is just erasure.
    HW ECC will pull high when read_page or read_oob just after erasure.
=======================================================================
2008.07.31
(1) modify API: nand_read_ecc and mars_read_ecc_pages to add reading
    spare area
(2) yaffs_guts.c: replace yaffs_CheckFF() by mars_nand_hw special function
(3) add 3 shift member in yaffs_DeviceStruct in yaffs_guts.h and
    change "/" to ">>"
(4) add oob_1stB in mars_write_ecc_pages because umount /mnt/f2, then
    remount /mnt/f2 will cause error.
=======================================================================
2008.07.30
(1) yaffs_guts.c: mark yaffs_CheckChunkErased() in yaffs_WriteNewChunkWithTagsToNAND()
because Yaffs force to call yaffs_CheckChunkErased() even I don't set
CONFIG_YAFFS_ALWAYS_CHECK_CHUNK_ERASED.
(2) 5.5MB from DDR to Nand: Yaffs->Nand is 4610 MiliSec
=======================================================================
2008.07.29
(1) rtk_nand.c: modify API: mars_write_ecc_pages and mars_read_ecc_pages
(2) enhance performance since yaffs_commit_write()
=======================================================================
2008.07.25
rtk_nand.c: r/w/erase be inline function
=======================================================================
2008.07.24
(1) add read ECC check and write don't need the check but need finished check.
=======================================================================
2008.07.23
(1) rtk_nand.c: put yaffs_PackedTags2TagsPart structure(8 bytes) in the area
that I define when write page data.
(2) yaffs_mtdif2.c: re-arrange spare data, then copy to PackedTags2
(3) modify structure: yaffs_PackedTags2TagsPart and yaffs_ECCOther to __u16
(4) HW ECC is OK.
=======================================================================
2008.07.22
(1) When using YAFFS software ECC, cp file from USB to nand is OK. cp file 
from nand to USB is OK, too. Because I don't take care oob when writing page.
(2) add oob_buf parameter in mars_write_ecc_pages()
(3) close debug msg.
=======================================================================
2008.07.17
(1) fix bug: mars_write_oob() doesn't work
(2) add MARS_TEST_OOB and remove read operation semophore
=======================================================================
2008.07.16
(1) nand_base_mars.c: finish data backup before write new data to nand flash
(2) nand_base_mars.c: test more detail backup condition
=======================================================================
2008.07.15
1. add CONFIG_YAFFS_DOES_ECC in nand_mars.h to en/disable HW ECC
2. backup old data before write new data in nand_write_ecc()
=======================================================================
2008.07.11
(1) port new version yaffs2: 20080703
(2) r/w, delete on one-page and two-page file on /mnt/f0: OK.
=======================================================================
2008.07.10
modify nand_block_isbad() to check two page for HYNIX_8Gbit_MLC_57nm
and others
=======================================================================
2008.07.09
add erase all function
=======================================================================
2008.07.08
(1)TEST_ERASE() and TEST_RW() are OK.
   (a) mars_erase_block(): erase a block: OK
   (b) mars_write_ecc_pages(): write a page at block 1: OK
(2) call MARS_FLUSH_CACHE after DMA action
Issue:
  Yaffs: dev->inbandTags, still can't read /mnt/f0/111
=======================================================================
2008.07.07
nand_block_isbad() is ok. ==> mount yaffs partition is ok.
=======================================================================
2008.07.04
mars_read_oob can work fine, add flush cache function:flush_dcache_line
=======================================================================
2008.07.03
mars_read_oob can read 0xff data
=======================================================================
2008.07.02
mars_read_id ok for mars EVB
=======================================================================

arrow
arrow
    全站熱搜

    淡淡 發表在 痞客邦 留言(1) 人氣()