reply: [PATCH v5 1/3] ARM: mxs: add GPMI-NFC support for imx23/imx28

Huang Shijie-B32955 B32955 at freescale.com
Thu Jun 30 12:12:27 EDT 2011


Hi Arnd:

On Thursday 30 June 2011, Huang Shijie wrote:
> add GPMI-NFC support for imx23 and imx28.
>
> Signed-off-by: Huang Shijie <b32955 at freescale.com>

>This needs a better changelog, please at least spell out what GPMI-NFC means.
>I'm probably not the only one who gets confused into reading this as
>'near field communication' instead of 'nand flash controller'.

=============================================
thanks.
I will add more information in the following version.


=============================================

>Could you rename this all into gpmi-nand or gpmi-flash instead, to avoid
>confusion when you add support for near field communication?

==========================================
This is a nand flash controller driver.

I think gpmi-nfc is much better then gpmi-nand or gpmi-flash.
==========================================

> +#define RES_MEM(soc, _id, _s, _n)                            \
> +     {                                                       \
> +             .start = soc ##_## _id ## _BASE_ADDR,           \
> +             .end   = soc ##_## _id ## _BASE_ADDR + (_s) - 1,\
> +             .name  = (_n),                                  \
> +             .flags = IORESOURCE_MEM,                        \
> +     }
> +
> +#define RES_IRQ(soc, _id, _n)                        \
> +     {                                       \
> +             .start = soc ##_INT_## _id,     \
> +             .end   = soc ##_INT_## _id,     \
> +             .name  = (_n),                  \
> +             .flags = IORESOURCE_IRQ,        \
> +     }
> +
> +#define RES_DMA(soc, _i_s, _i_e, _n)         \
> +     {                                       \
> +             .start = soc ##_## _i_s,        \
> +             .end   = soc ##_## _i_e,        \
> +             .name  = (_n),                  \
> +             .flags = IORESOURCE_DMA,        \
> +     }

>I know that you didn't start this pattern, but I find these macros
>extremely annoying. It obscures the use of the macros with the
>string concatenation and the macro names are way too generic
>for something platform specific. If people think it's a good idea
>to have these, please submit a patch to add macros (without the
>string concatenation) into include/linux/ioport.h.

>Until then, better spell out the resources.

==============================================
I ever tried several methods,  but  I can not find a better method to
replace the current method.

It's annoying, but it really saves some lines.

==============================================


> +/**
> + * struct gpmi_nfc_platform_data - GPMI NFC driver platform data.
> + *
> + * This structure communicates platform-specific information to the GPMI NFC
> + * driver that can't be expressed as resources.
> + *
> + * @platform_init:           A pointer to a function the driver will call to
> + *                           initialize the platform (e.g., set up the pin mux).
> + * @platform_exit:           A pointer to a function the driver will call to
> + *                           exit the platform (e.g., free pins).
> + * @min_prop_delay_in_ns:    Minimum propagation delay of GPMI signals to and
> + *                           from the NAND Flash device, in nanoseconds.
> + * @max_prop_delay_in_ns:    Maximum propagation delay of GPMI signals to and
> + *                           from the NAND Flash device, in nanoseconds.
> + * @max_chip_count:          The maximum number of chips for which the driver
> + *                           should configure the hardware. This value most
> + *                           likely reflects the number of pins that are
> + *                           connected to a NAND Flash device. If this is
> + *                           greater than the SoC hardware can support, the
> + *                           driver will print a message and fail to initialize.
> + * @partitions:              An optional pointer to an array of partition
> + *                           descriptions.
> + * @partition_count:         The number of elements in the partitions array.
> + */
> +struct gpmi_nfc_platform_data {
> +     /* SoC hardware information. */
> +     int             (*platform_init)(void);
> +     void            (*platform_exit)(void);
> +
> +     /* NAND Flash information. */
> +     unsigned int    min_prop_delay_in_ns;
> +     unsigned int    max_prop_delay_in_ns;
> +     unsigned int    max_chip_count;
> +
> +     /* Medium information. */
> +     struct mtd_partition *partitions;
> +     unsigned        partition_count;
> +};

>When adding new infrastructure, always keep in mind how you want it to look
>after the device tree conversion. The partitions and min/max_* are easily covered
>with that, but the init/exit function pointers are somewhat problematic.

>Fortunately, you don't really require these functions for this driver. The _exit
>function is completely unused, so just get rid of it.
===================================================
I am reluctant to remove it, I am not sure whether I will use the _exit() in future.
But, yes, it can be removed now.



Best Regards
Huang Shijie

===================================================

The init function is used only to set up iomux, so the logical replacement is
a pointer to the iomux data, and calling mxs_iomux_setup_multiple_pads
directly from the driver.

        Arnd

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel at lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel





More information about the linux-mtd mailing list