• Thomas Petazzoni's avatar
    mtd: nand: fsmc: fix NAND width handling · 51c3bb1d
    Thomas Petazzoni authored
    commit ee56874f upstream.
    
    In commit eea62819 ("mtd: Add device-tree support to fsmc_nand"),
    Device Tree support was added to the fmsc_nand driver. However, this
    code has a bug in how it handles the bank-width DT property to set the
    bus width.
    
    Indeed, in the function fsmc_nand_probe_config_dt() that parses the
    Device Tree, it sets pdata->width to either 8 or 16 depending on the
    value of the bank-width DT property.
    
    Then, the ->probe() function will test if pdata->width is equal to
    FSMC_NAND_BW16 (which is 2) to set NAND_BUSWIDTH_16 in
    nand->options. Therefore, with the DT probing, this condition will never
    match.
    
    This commit fixes that by removing the "width" field from
    fsmc_nand_platform_data and instead have the fsmc_nand_probe_config_dt()
    function directly set the appropriate nand->options value.
    
    It is worth mentioning that if this commit gets backported to older
    kernels, prior to the drop of non-DT probing, then non-DT probing will
    be broken because nand->options will no longer be set to
    NAND_BUSWIDTH_16.
    
    Fixes: eea62819 ("mtd: Add device-tree support to fsmc_nand")
    Signed-off-by: default avatarThomas Petazzoni <thomas.petazzoni@free-electrons.com>
    Reviewed-by: default avatarLinus Walleij <linus.walleij@linaro.org>
    Signed-off-by: default avatarBoris Brezillon <boris.brezillon@free-electrons.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    51c3bb1d
fsmc_nand.c 31 KB