Unverified Commit 59273180 authored by Miquel Raynal's avatar Miquel Raynal Committed by Tudor Ambarus
Browse files

mtd: spi-nor: Create macros to define chip IDs and geometries



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 no functional change.

Signed-off-by: default avatarMiquel Raynal <miquel.raynal@bootlin.com>
Reviewed-by: default avatarPratyush Yadav <pratyush@kernel.org>
Link: https://lore.kernel.org/r/20221215081241.407098-2-miquel.raynal@bootlin.com


Signed-off-by: default avatarTudor Ambarus <tudor.ambarus@linaro.org>
parent ca5a16db
Loading
Loading
Loading
Loading
+20 −23
Original line number Diff line number Diff line
@@ -529,33 +529,30 @@ struct flash_info {
	const struct spi_nor_fixups *fixups;
};

/* 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))),	\
#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,					\
	.page_size = 256

/* Used when the "_ext_id" is two bytes at most */
#define INFO(_jedec_id, _ext_id, _sector_size, _n_sectors)		\
	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),				\