• X
    mtd: rawnand: mtk: Correct low level time calculation of r/w cycle · f435a098
    Xiaolei Li 提交于
    commit e1884ffddacc0424d7e785e6f8087bd12f7196db upstream.
    
    At present, the flow of calculating AC timing of read/write cycle in SDR
    mode is that:
    At first, calculate high hold time which is valid for both read and write
    cycle using the max value between tREH_min and tWH_min.
    Secondly, calculate WE# pulse width using tWP_min.
    Thridly, calculate RE# pulse width using the bigger one between tREA_max
    and tRP_min.
    
    But NAND SPEC shows that Controller should also meet write/read cycle time.
    That is write cycle time should be more than tWC_min and read cycle should
    be more than tRC_min. Obviously, we do not achieve that now.
    
    This patch corrects the low level time calculation to meet minimum
    read/write cycle time required. After getting the high hold time, WE# low
    level time will be promised to meet tWP_min and tWC_min requirement,
    and RE# low level time will be promised to meet tREA_max, tRP_min and
    tRC_min requirement.
    
    Fixes: edfee361 ("mtd: nand: mtk: add ->setup_data_interface() hook")
    Cc: stable@vger.kernel.org # v4.17+
    Signed-off-by: NXiaolei Li <xiaolei.li@mediatek.com>
    Reviewed-by: NMiquel Raynal <miquel.raynal@bootlin.com>
    Signed-off-by: NMiquel Raynal <miquel.raynal@bootlin.com>
    Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
    f435a098
mtk_nand.c 39.6 KB