* [PATCH v4 0/2] Add support for two-plane serial NAND flash
@ 2024-08-29 3:25 Cheng Ming Lin
2024-08-29 3:25 ` [PATCH v4 1/2] mtd: spinand: Add support for the flag Cheng Ming Lin
2024-08-29 3:25 ` [PATCH v4 2/2] mtd: spinand: macronix: Use the flag in Macronix driver Cheng Ming Lin
0 siblings, 2 replies; 5+ messages in thread
From: Cheng Ming Lin @ 2024-08-29 3:25 UTC (permalink / raw)
To: miquel.raynal, vigneshr, linux-mtd, linux-kernel
Cc: richard, alvinzhou, leoyu, Cheng Ming Lin
From: Cheng Ming Lin <chengminglin@mxic.com.tw>
Add support for Macronix serial NAND flash with a two-plane structure.
Insert the Plane Select bit during the read_from_cache and the
write_to_cache operation.
v4:
Separate the core changes and Macronix changes
v3:
Add flags for the Plane Select bit
Remove fixups and corresponding function
v2:
Squash patches 1 and 3 and come before patch 2
Cheng Ming Lin (2):
mtd: spinand: Add support for the flag
mtd: spinand: macronix: Use the flag in Macronix driver
drivers/mtd/nand/spi/core.c | 6 ++++++
drivers/mtd/nand/spi/macronix.c | 17 ++++++++++-------
include/linux/mtd/spinand.h | 2 ++
3 files changed, 18 insertions(+), 7 deletions(-)
--
2.25.1
______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v4 1/2] mtd: spinand: Add support for the flag
2024-08-29 3:25 [PATCH v4 0/2] Add support for two-plane serial NAND flash Cheng Ming Lin
@ 2024-08-29 3:25 ` Cheng Ming Lin
2024-08-29 3:25 ` [PATCH v4 2/2] mtd: spinand: macronix: Use the flag in Macronix driver Cheng Ming Lin
1 sibling, 0 replies; 5+ messages in thread
From: Cheng Ming Lin @ 2024-08-29 3:25 UTC (permalink / raw)
To: miquel.raynal, vigneshr, linux-mtd, linux-kernel
Cc: richard, alvinzhou, leoyu, Cheng Ming Lin
From: Cheng Ming Lin <chengminglin@mxic.com.tw>
Add two flags for inserting the Plane Select bit into the column
address during the write_to_cache and the read_from_cache operation.
Add the SPINAND_HAS_PP_PLANE_SELECT_BIT flag for serial NAND flash
that require inserting the Plane Select bit into the column address
during the write_to_cache operation.
Add the SPINAND_HAS_READ_PLANE_SELECT_BIT flag for serial NAND flash
that require inserting the Plane Select bit into the column address
during the read_from_cache operation.
Signed-off-by: Cheng Ming Lin <chengminglin@mxic.com.tw>
---
drivers/mtd/nand/spi/core.c | 6 ++++++
include/linux/mtd/spinand.h | 2 ++
2 files changed, 8 insertions(+)
diff --git a/drivers/mtd/nand/spi/core.c b/drivers/mtd/nand/spi/core.c
index e0b6715e5dfe..49f2d66c3a9c 100644
--- a/drivers/mtd/nand/spi/core.c
+++ b/drivers/mtd/nand/spi/core.c
@@ -386,6 +386,9 @@ static int spinand_read_from_cache_op(struct spinand_device *spinand,
else
rdesc = spinand->dirmaps[req->pos.plane].rdesc_ecc;
+ if (spinand->flags & SPINAND_HAS_READ_PLANE_SELECT_BIT)
+ column |= req->pos.plane << fls(nanddev_page_size(nand));
+
while (nbytes) {
ret = spi_mem_dirmap_read(rdesc, column, nbytes, buf);
if (ret < 0)
@@ -460,6 +463,9 @@ static int spinand_write_to_cache_op(struct spinand_device *spinand,
else
wdesc = spinand->dirmaps[req->pos.plane].wdesc_ecc;
+ if (spinand->flags & SPINAND_HAS_PP_PLANE_SELECT_BIT)
+ column |= req->pos.plane << fls(nanddev_page_size(nand));
+
while (nbytes) {
ret = spi_mem_dirmap_write(wdesc, column, nbytes, buf);
if (ret < 0)
diff --git a/include/linux/mtd/spinand.h b/include/linux/mtd/spinand.h
index 5c19ead60499..cec451e7c71c 100644
--- a/include/linux/mtd/spinand.h
+++ b/include/linux/mtd/spinand.h
@@ -312,6 +312,8 @@ struct spinand_ecc_info {
#define SPINAND_HAS_QE_BIT BIT(0)
#define SPINAND_HAS_CR_FEAT_BIT BIT(1)
+#define SPINAND_HAS_PP_PLANE_SELECT_BIT BIT(2)
+#define SPINAND_HAS_READ_PLANE_SELECT_BIT BIT(3)
/**
* struct spinand_ondie_ecc_conf - private SPI-NAND on-die ECC engine structure
--
2.25.1
______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH v4 2/2] mtd: spinand: macronix: Use the flag in Macronix driver
2024-08-29 3:25 [PATCH v4 0/2] Add support for two-plane serial NAND flash Cheng Ming Lin
2024-08-29 3:25 ` [PATCH v4 1/2] mtd: spinand: Add support for the flag Cheng Ming Lin
@ 2024-08-29 3:25 ` Cheng Ming Lin
2024-08-30 7:23 ` Miquel Raynal
1 sibling, 1 reply; 5+ messages in thread
From: Cheng Ming Lin @ 2024-08-29 3:25 UTC (permalink / raw)
To: miquel.raynal, vigneshr, linux-mtd, linux-kernel
Cc: richard, alvinzhou, leoyu, Cheng Ming Lin
From: Cheng Ming Lin <chengminglin@mxic.com.tw>
Macronix serial NAND flash with a two-plane structure requires
insertion of the Plane Select bit into the column address during
the write_to_cache operation.
Additionally, for MX35{U,F}2G14AC and MX35LF2GE4AB, insertion of
the Plane Select bit into the column address is required during
the read_from_cache operation.
Signed-off-by: Cheng Ming Lin <chengminglin@mxic.com.tw>
---
drivers/mtd/nand/spi/macronix.c | 17 ++++++++++-------
1 file changed, 10 insertions(+), 7 deletions(-)
diff --git a/drivers/mtd/nand/spi/macronix.c b/drivers/mtd/nand/spi/macronix.c
index 3f9e9c572854..f17cd4a6f4d0 100644
--- a/drivers/mtd/nand/spi/macronix.c
+++ b/drivers/mtd/nand/spi/macronix.c
@@ -118,7 +118,8 @@ static const struct spinand_info macronix_spinand_table[] = {
SPINAND_INFO_OP_VARIANTS(&read_cache_variants,
&write_cache_variants,
&update_cache_variants),
- SPINAND_HAS_QE_BIT,
+ SPINAND_HAS_QE_BIT | SPINAND_HAS_PP_PLANE_SELECT_BIT |
+ SPINAND_HAS_READ_PLANE_SELECT_BIT,
SPINAND_ECCINFO(&mx35lfxge4ab_ooblayout, NULL)),
SPINAND_INFO("MX35LF2GE4AD",
SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0x26, 0x03),
@@ -156,7 +157,7 @@ static const struct spinand_info macronix_spinand_table[] = {
SPINAND_INFO_OP_VARIANTS(&read_cache_variants,
&write_cache_variants,
&update_cache_variants),
- SPINAND_HAS_QE_BIT,
+ SPINAND_HAS_QE_BIT | SPINAND_HAS_PP_PLANE_SELECT_BIT,
SPINAND_ECCINFO(&mx35lfxge4ab_ooblayout, NULL)),
SPINAND_INFO("MX35LF2G24AD-Z4I8",
SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0x64, 0x03),
@@ -174,7 +175,7 @@ static const struct spinand_info macronix_spinand_table[] = {
SPINAND_INFO_OP_VARIANTS(&read_cache_variants,
&write_cache_variants,
&update_cache_variants),
- SPINAND_HAS_QE_BIT,
+ SPINAND_HAS_QE_BIT | SPINAND_HAS_PP_PLANE_SELECT_BIT,
SPINAND_ECCINFO(&mx35lfxge4ab_ooblayout, NULL)),
SPINAND_INFO("MX35LF4G24AD-Z4I8",
SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0x75, 0x03),
@@ -213,7 +214,8 @@ static const struct spinand_info macronix_spinand_table[] = {
SPINAND_INFO_OP_VARIANTS(&read_cache_variants,
&write_cache_variants,
&update_cache_variants),
- SPINAND_HAS_QE_BIT,
+ SPINAND_HAS_QE_BIT | SPINAND_HAS_PP_PLANE_SELECT_BIT |
+ SPINAND_HAS_READ_PLANE_SELECT_BIT,
SPINAND_ECCINFO(&mx35lfxge4ab_ooblayout,
mx35lf1ge4ab_ecc_get_status)),
SPINAND_INFO("MX35UF4G24AD",
@@ -223,7 +225,7 @@ static const struct spinand_info macronix_spinand_table[] = {
SPINAND_INFO_OP_VARIANTS(&read_cache_variants,
&write_cache_variants,
&update_cache_variants),
- SPINAND_HAS_QE_BIT,
+ SPINAND_HAS_QE_BIT | SPINAND_HAS_PP_PLANE_SELECT_BIT,
SPINAND_ECCINFO(&mx35lfxge4ab_ooblayout,
mx35lf1ge4ab_ecc_get_status)),
SPINAND_INFO("MX35UF4G24AD-Z4I8",
@@ -253,7 +255,8 @@ static const struct spinand_info macronix_spinand_table[] = {
SPINAND_INFO_OP_VARIANTS(&read_cache_variants,
&write_cache_variants,
&update_cache_variants),
- SPINAND_HAS_QE_BIT,
+ SPINAND_HAS_QE_BIT | SPINAND_HAS_PP_PLANE_SELECT_BIT |
+ SPINAND_HAS_READ_PLANE_SELECT_BIT,
SPINAND_ECCINFO(&mx35lfxge4ab_ooblayout,
mx35lf1ge4ab_ecc_get_status)),
SPINAND_INFO("MX35UF2G24AD",
@@ -263,7 +266,7 @@ static const struct spinand_info macronix_spinand_table[] = {
SPINAND_INFO_OP_VARIANTS(&read_cache_variants,
&write_cache_variants,
&update_cache_variants),
- SPINAND_HAS_QE_BIT,
+ SPINAND_HAS_QE_BIT | SPINAND_HAS_PP_PLANE_SELECT_BIT,
SPINAND_ECCINFO(&mx35lfxge4ab_ooblayout,
mx35lf1ge4ab_ecc_get_status)),
SPINAND_INFO("MX35UF2G24AD-Z4I8",
--
2.25.1
______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH v4 2/2] mtd: spinand: macronix: Use the flag in Macronix driver
2024-08-29 3:25 ` [PATCH v4 2/2] mtd: spinand: macronix: Use the flag in Macronix driver Cheng Ming Lin
@ 2024-08-30 7:23 ` Miquel Raynal
2024-08-30 8:35 ` Cheng Ming Lin
0 siblings, 1 reply; 5+ messages in thread
From: Miquel Raynal @ 2024-08-30 7:23 UTC (permalink / raw)
To: Cheng Ming Lin
Cc: vigneshr, linux-mtd, linux-kernel, richard, alvinzhou, leoyu,
Cheng Ming Lin
Hi ChengMing,
linchengming884@gmail.com wrote on Thu, 29 Aug 2024 11:25:17 +0800:
> From: Cheng Ming Lin <chengminglin@mxic.com.tw>
>
> Macronix serial NAND flash with a two-plane structure requires
> insertion of the Plane Select bit into the column address during
> the write_to_cache operation.
>
> Additionally, for MX35{U,F}2G14AC and MX35LF2GE4AB, insertion of
> the Plane Select bit into the column address is required during
> the read_from_cache operation.
>
PATH 1 is fine except the commit title, let me explain. Once applied in
the kernel tree, there is no cover letter anymore. So both titles would
be "Add support for the flag" and "Use the flag...", which is really
missing the important information as we don't know what this flag is
for. Furthermore, the fact that we decided to use a flag is an
implementation detail, what is important is the feature: setting the
plane select bit.
Can you please change the first commit title to:
mtd: spinand: Add support for setting plane select bits
and for the second, something like:
mtd: spinand: macronix: Flag parts needing explicit plane select
> Signed-off-by: Cheng Ming Lin <chengminglin@mxic.com.tw>
> ---
> drivers/mtd/nand/spi/macronix.c | 17 ++++++++++-------
> 1 file changed, 10 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/mtd/nand/spi/macronix.c b/drivers/mtd/nand/spi/macronix.c
> index 3f9e9c572854..f17cd4a6f4d0 100644
> --- a/drivers/mtd/nand/spi/macronix.c
> +++ b/drivers/mtd/nand/spi/macronix.c
> @@ -118,7 +118,8 @@ static const struct spinand_info macronix_spinand_table[] = {
> SPINAND_INFO_OP_VARIANTS(&read_cache_variants,
> &write_cache_variants,
> &update_cache_variants),
> - SPINAND_HAS_QE_BIT,
> + SPINAND_HAS_QE_BIT | SPINAND_HAS_PP_PLANE_SELECT_BIT |
> + SPINAND_HAS_READ_PLANE_SELECT_BIT,
And I know this is not what the normal coding style would ask for, but
I would prefer to have the two plane select bits on the same line if
possible, otherwise on two independent lines, so either:
QE_BIT |
PP_SELECT_BIT | READ SELECT_BIT,
or otherwise:
QE_BIT |
PP_SELECT_BIT |
READ SELECT_BIT,
And finally, could we name the former
SPINAND_HAS_PROG_PLANE_SELECT_BIT
? Because "PP" sounds a little bit too cryptic.
Thanks,
Miquèl
______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v4 2/2] mtd: spinand: macronix: Use the flag in Macronix driver
2024-08-30 7:23 ` Miquel Raynal
@ 2024-08-30 8:35 ` Cheng Ming Lin
0 siblings, 0 replies; 5+ messages in thread
From: Cheng Ming Lin @ 2024-08-30 8:35 UTC (permalink / raw)
To: Miquel Raynal
Cc: vigneshr, linux-mtd, linux-kernel, richard, alvinzhou, leoyu,
Cheng Ming Lin
Hi Miquel,
Miquel Raynal <miquel.raynal@bootlin.com> 於 2024年8月30日 週五 下午3:23寫道:
>
> Hi ChengMing,
>
> linchengming884@gmail.com wrote on Thu, 29 Aug 2024 11:25:17 +0800:
>
> > From: Cheng Ming Lin <chengminglin@mxic.com.tw>
> >
> > Macronix serial NAND flash with a two-plane structure requires
> > insertion of the Plane Select bit into the column address during
> > the write_to_cache operation.
> >
> > Additionally, for MX35{U,F}2G14AC and MX35LF2GE4AB, insertion of
> > the Plane Select bit into the column address is required during
> > the read_from_cache operation.
> >
>
> PATH 1 is fine except the commit title, let me explain. Once applied in
> the kernel tree, there is no cover letter anymore. So both titles would
> be "Add support for the flag" and "Use the flag...", which is really
> missing the important information as we don't know what this flag is
> for. Furthermore, the fact that we decided to use a flag is an
> implementation detail, what is important is the feature: setting the
> plane select bit.
>
> Can you please change the first commit title to:
>
> mtd: spinand: Add support for setting plane select bits
>
> and for the second, something like:
>
> mtd: spinand: macronix: Flag parts needing explicit plane select
>
Sure, I will update the commit titles as suggested.
> > Signed-off-by: Cheng Ming Lin <chengminglin@mxic.com.tw>
> > ---
> > drivers/mtd/nand/spi/macronix.c | 17 ++++++++++-------
> > 1 file changed, 10 insertions(+), 7 deletions(-)
> >
> > diff --git a/drivers/mtd/nand/spi/macronix.c b/drivers/mtd/nand/spi/macronix.c
> > index 3f9e9c572854..f17cd4a6f4d0 100644
> > --- a/drivers/mtd/nand/spi/macronix.c
> > +++ b/drivers/mtd/nand/spi/macronix.c
> > @@ -118,7 +118,8 @@ static const struct spinand_info macronix_spinand_table[] = {
> > SPINAND_INFO_OP_VARIANTS(&read_cache_variants,
> > &write_cache_variants,
> > &update_cache_variants),
> > - SPINAND_HAS_QE_BIT,
> > + SPINAND_HAS_QE_BIT | SPINAND_HAS_PP_PLANE_SELECT_BIT |
> > + SPINAND_HAS_READ_PLANE_SELECT_BIT,
>
> And I know this is not what the normal coding style would ask for, but
> I would prefer to have the two plane select bits on the same line if
> possible, otherwise on two independent lines, so either:
>
> QE_BIT |
> PP_SELECT_BIT | READ SELECT_BIT,
>
> or otherwise:
>
> QE_BIT |
> PP_SELECT_BIT |
> READ SELECT_BIT,
>
> And finally, could we name the former
>
> SPINAND_HAS_PROG_PLANE_SELECT_BIT
>
> ? Because "PP" sounds a little bit too cryptic.
>
No problem. I will adjust the formatting to have the two plane select bits on
separate lines and also rename it to SPINAND_HAS_PROG_PLANE_SELECT_BIT
to avoid any confusion.
> Thanks,
> Miquèl
Thanks,
Cheng Ming Lin
______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2024-08-30 8:39 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-08-29 3:25 [PATCH v4 0/2] Add support for two-plane serial NAND flash Cheng Ming Lin
2024-08-29 3:25 ` [PATCH v4 1/2] mtd: spinand: Add support for the flag Cheng Ming Lin
2024-08-29 3:25 ` [PATCH v4 2/2] mtd: spinand: macronix: Use the flag in Macronix driver Cheng Ming Lin
2024-08-30 7:23 ` Miquel Raynal
2024-08-30 8:35 ` Cheng Ming Lin
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).