[PATCH v2 1/9] mtd: spi-nor: Create macros to define chip IDs and geometries
Pratyush Yadav
pratyush at kernel.org
Sun Nov 20 07:57:27 PST 2022
On 10/11/22 04:55PM, Miquel Raynal wrote:
> The INFO() macro defines an ID array and a couple of geometry
> properties. Right now all its lines are duplicated twice because of the
> INFO6() macro (for extended IDs) and soon as well we will need to add a
> geometry parameter to include the number of banks.
>
> In order to limit the code duplication, let's create a number of
> intermediate macros which will facilitate defining high-level INFOX()
> macros.
>
> There is not functional change.
I think the INFO() macros in general are a bit convoluted, but this at
least makes them a bit better.
Reviewed-by: Pratyush Yadav <pratyush at kernel.org>
>
> Signed-off-by: Miquel Raynal <miquel.raynal at bootlin.com>
> ---
> drivers/mtd/spi-nor/core.h | 43 ++++++++++++++++++--------------------
> 1 file changed, 20 insertions(+), 23 deletions(-)
>
> diff --git a/drivers/mtd/spi-nor/core.h b/drivers/mtd/spi-nor/core.h
> index 85b0cf254e97..dc74c7be3e28 100644
> --- a/drivers/mtd/spi-nor/core.h
> +++ b/drivers/mtd/spi-nor/core.h
> @@ -527,33 +527,30 @@ struct flash_info {
> const struct spi_nor_fixups *fixups;
> };
>
> +#define SPI_NOR_ID_2ITEMS(_id) ((_id) >> 8) & 0xff, (_id) & 0xff
> +#define SPI_NOR_ID_3ITEMS(_id) ((_id) >> 16) & 0xff, SPI_NOR_ID_2ITEMS(_id)
> +
> +#define SPI_NOR_ID(_jedec_id, _ext_id) \
> + .id = { SPI_NOR_ID_3ITEMS(_jedec_id), SPI_NOR_ID_2ITEMS(_ext_id) }, \
> + .id_len = !(_jedec_id) ? 0 : (3 + ((_ext_id) ? 2 : 0))
> +
> +#define SPI_NOR_ID6(_jedec_id, _ext_id) \
> + .id = { SPI_NOR_ID_3ITEMS(_jedec_id), SPI_NOR_ID_3ITEMS(_ext_id) }, \
> + .id_len = 6
> +
> +#define SPI_NOR_GEOMETRY(_sector_size, _n_sectors) \
> + .sector_size = (_sector_size), \
> + .n_sectors = (_n_sectors), \
> + .page_size = 256
> +
> /* Used when the "_ext_id" is two bytes at most */
> #define INFO(_jedec_id, _ext_id, _sector_size, _n_sectors) \
> - .id = { \
> - ((_jedec_id) >> 16) & 0xff, \
> - ((_jedec_id) >> 8) & 0xff, \
> - (_jedec_id) & 0xff, \
> - ((_ext_id) >> 8) & 0xff, \
> - (_ext_id) & 0xff, \
> - }, \
> - .id_len = (!(_jedec_id) ? 0 : (3 + ((_ext_id) ? 2 : 0))), \
> - .sector_size = (_sector_size), \
> - .n_sectors = (_n_sectors), \
> - .page_size = 256, \
> + SPI_NOR_ID((_jedec_id), (_ext_id)), \
> + SPI_NOR_GEOMETRY((_sector_size), (_n_sectors)),
>
> #define INFO6(_jedec_id, _ext_id, _sector_size, _n_sectors) \
> - .id = { \
> - ((_jedec_id) >> 16) & 0xff, \
> - ((_jedec_id) >> 8) & 0xff, \
> - (_jedec_id) & 0xff, \
> - ((_ext_id) >> 16) & 0xff, \
> - ((_ext_id) >> 8) & 0xff, \
> - (_ext_id) & 0xff, \
> - }, \
> - .id_len = 6, \
> - .sector_size = (_sector_size), \
> - .n_sectors = (_n_sectors), \
> - .page_size = 256, \
> + SPI_NOR_ID6((_jedec_id), (_ext_id)), \
> + SPI_NOR_GEOMETRY((_sector_size), (_n_sectors)),
>
> #define CAT25_INFO(_sector_size, _n_sectors, _page_size, _addr_nbytes) \
> .sector_size = (_sector_size), \
> --
> 2.34.1
>
>
> ______________________________________________________
> Linux MTD discussion mailing list
> http://lists.infradead.org/mailman/listinfo/linux-mtd/
--
Regards,
Pratyush Yadav
More information about the linux-mtd
mailing list