Hi Stefan,

On Thu, 21 Jun 2018 22:31:43 +0200
Stefan Agner <ste...@agner.ch> wrote:

> Add support for the NAND flash controller found on NVIDIA
> Tegra 2 SoCs. This implementation does not make use of the
> command queue feature. Regular operations using ->exec_op()
> use PIO mode for data transfers. Raw, ECC and OOB read/writes
> make use of the DMA mode for data transfer.
> 
> Signed-off-by: Lucas Stach <d...@lynxeye.de>
> Signed-off-by: Stefan Agner <ste...@agner.ch>
> Reviewed-by: Dmitry Osipenko <dig...@gmail.com>
> ---
>  MAINTAINERS                       |    7 +
>  drivers/mtd/nand/raw/Kconfig      |    6 +
>  drivers/mtd/nand/raw/Makefile     |    1 +
>  drivers/mtd/nand/raw/tegra_nand.c | 1225 +++++++++++++++++++++++++++++
>  4 files changed, 1239 insertions(+)
>  create mode 100644 drivers/mtd/nand/raw/tegra_nand.c

I think we're almost good. No big issues spotted in this version.
Can you fix the CHECKs/WARNINGs reported by checkpatch --strict (most
of them are valid)?

> +
> +static int tegra_nand_remove(struct platform_device *pdev)
> +{
> +     struct tegra_nand_controller *ctrl = platform_get_drvdata(pdev);
> +
> +     nand_release(nand_to_mtd(ctrl->chip));

Use mtd_device_unregister() + nand_cleanup() instead of nand_release().
nand_release() is broken in that it does not check the return code of
mtd_device_unregister() before calling nand_cleanup(), and does not
propagate mtd_device_unregister() ret code to its caller. 

> +
> +     clk_disable_unprepare(ctrl->clk);
> +
> +     return 0;
> +}

Thanks for the great work you've done! Yay, another driver implementing
->exec_op()!

Boris

Reply via email to