Re: [PATCH 2/5] drivers: mtd: nand: Add qpic_common API file

From: Dmitry Baryshkov
Date: Tue Feb 20 2024 - 11:08:14 EST


On Tue, 20 Feb 2024 at 17:59, Md Sadre Alam <quic_mdalam@xxxxxxxxxxx> wrote:
>
>
>
> On 2/15/2024 8:30 PM, Dmitry Baryshkov wrote:
> > On Thu, 15 Feb 2024 at 15:53, Md Sadre Alam <quic_mdalam@xxxxxxxxxxx> wrote:
> >>
> >> Add qpic_common.c file which hold all the common
> >> qpic APIs which will be used by both qpic raw nand
> >> driver and qpic spi nand driver.
> >>
> >> Co-developed-by: Sricharan Ramabadhran <quic_srichara@xxxxxxxxxxx>
> >> Signed-off-by: Sricharan Ramabadhran <quic_srichara@xxxxxxxxxxx>
> >> Co-developed-by: Varadarajan Narayanan <quic_varada@xxxxxxxxxxx>
> >> Signed-off-by: Varadarajan Narayanan <quic_varada@xxxxxxxxxxx>
> >> Signed-off-by: Md Sadre Alam <quic_mdalam@xxxxxxxxxxx>
> >> ---
> >> drivers/mtd/nand/Makefile | 1 +
> >> drivers/mtd/nand/qpic_common.c | 786 +++++++++++++++++
> >> drivers/mtd/nand/raw/qcom_nandc.c | 1226 +-------------------------
> >> include/linux/mtd/nand-qpic-common.h | 488 ++++++++++
> >> 4 files changed, 1291 insertions(+), 1210 deletions(-)
> >> create mode 100644 drivers/mtd/nand/qpic_common.c
> >> create mode 100644 include/linux/mtd/nand-qpic-common.h
> >>
> >> diff --git a/drivers/mtd/nand/Makefile b/drivers/mtd/nand/Makefile
> >> index 19e1291ac4d5..131707a41293 100644
> >> --- a/drivers/mtd/nand/Makefile
> >> +++ b/drivers/mtd/nand/Makefile
> >> @@ -12,3 +12,4 @@ nandcore-$(CONFIG_MTD_NAND_ECC) += ecc.o
> >> nandcore-$(CONFIG_MTD_NAND_ECC_SW_HAMMING) += ecc-sw-hamming.o
> >> nandcore-$(CONFIG_MTD_NAND_ECC_SW_BCH) += ecc-sw-bch.o
> >> nandcore-$(CONFIG_MTD_NAND_ECC_MXIC) += ecc-mxic.o
> >> +obj-y += qpic_common.o
> >> diff --git a/drivers/mtd/nand/qpic_common.c b/drivers/mtd/nand/qpic_common.c
> >> new file mode 100644
> >> index 000000000000..4d74ba888028
> >> --- /dev/null
> >> +++ b/drivers/mtd/nand/qpic_common.c
> >> @@ -0,0 +1,786 @@
> >> +// SPDX-License-Identifier: GPL-2.0
> >> +/*
> >> + * QPIC Controller common API file.
> >> + * Copyright (C) 2023 Qualcomm Inc.
> >> + * Authors: Md sadre Alam <quic_mdalam@xxxxxxxxxxx>
> >> + * Sricharan R <quic_srichara@xxxxxxxxxxx>
> >> + * Varadarajan Narayanan <quic_varada@xxxxxxxxxxx>
> >
> > This is a bit of an exaggeration. You are moving code, not writing new
> > code. Please retain the existing copyrights for the moved code.
> Ok
> >
> >> + *
> >> + */
> >> +
> >> +#include <linux/mtd/nand-qpic-common.h>
> >> +
> >> +struct qcom_nand_controller *
> >> +get_qcom_nand_controller(struct nand_chip *chip)
> >> +{
> >> + return container_of(chip->controller, struct qcom_nand_controller,
> >> + controller);
> >> +}
> >> +EXPORT_SYMBOL(get_qcom_nand_controller);
> >
> > NAK for adding functions to the global export namespace without a
> > proper driver-specific prefix.
> Ok, will fix in next patch
> >
> > Also, a bunch of the code here seems not so well thought. It was fine
> > for an internal interface, but it doesn't look so good as a common
> > wrapper. Please consider defining a sensible common code module
> > interface instead.
>
> QPIC controller will support both raw NAND as well Serial nand interface.
> This common API file was the part of raw NAND driver , since for serial
> nand most of the APIs from raw nand driver will be re-used that's why i
> have created this common API file, so that QPIC serial nand driver
> drivers/spi/spi-qpic-snand.c and QPIC raw NAND driver
> drivers/mtd/nand/raw/qcom_nandc.c can used these common APIs.
>
> Could you please suggest how I should handle this in batter way.

Yes. Start by designing common accessor functions that form a
sufficient and complete API to access the hardware functionality. A
set of functions blindly moved from the existing driver usually do not
make such an API, because usually nobody cares enough about the driver
internals. It should be something that external user (NAND, SPI, etc)
can use without looking into the actual implementation of these
functions.

--
With best wishes
Dmitry