Message ID | 20231117083853.33329-4-jaimeliao.tw@gmail.com |
---|---|
State | Changes Requested |
Delegated to: | Michael Walle |
Headers | show |
Series | Add octal DTR support for Macronix flash | expand |
Hi, > +static inline bool spi_nor_is_octal_dtr_swab16(const struct spi_nor > *nor, > + enum spi_nor_protocol proto) > +{ > + return (proto == SNOR_PROTO_8_8_8_DTR) && > + (nor->flags & SNOR_F_DTR_SWAB16); > +} I think you can keep this code, but SNOR_F_DTR_SWAB16 only makes sense for SNOR_PROTO_8_8_8_DTR, because this is the only protocol where one clock cycle transfers more than 8 bit. Are there any other use cases? -michael
Hi Michael > > Hi, > > > +static inline bool spi_nor_is_octal_dtr_swab16(const struct spi_nor > > *nor, > > + enum spi_nor_protocol proto) > > +{ > > + return (proto == SNOR_PROTO_8_8_8_DTR) && > > + (nor->flags & SNOR_F_DTR_SWAB16); > > +} > > I think you can keep this code, but SNOR_F_DTR_SWAB16 only makes sense > for > SNOR_PROTO_8_8_8_DTR, because this is the only protocol where one clock > cycle transfers more than 8 bit. Are there any other use cases? No, as I know 8_8_8_DTR swapped byte only. > > -michael Thanks Jaime
diff --git a/drivers/mtd/spi-nor/core.c b/drivers/mtd/spi-nor/core.c index 1c443fe568cf..f659dd037a25 100644 --- a/drivers/mtd/spi-nor/core.c +++ b/drivers/mtd/spi-nor/core.c @@ -70,6 +70,13 @@ static u8 spi_nor_get_cmd_ext(const struct spi_nor *nor, } } +static inline bool spi_nor_is_octal_dtr_swab16(const struct spi_nor *nor, + enum spi_nor_protocol proto) +{ + return (proto == SNOR_PROTO_8_8_8_DTR) && + (nor->flags & SNOR_F_DTR_SWAB16); +} + /** * spi_nor_spimem_setup_op() - Set up common properties of a spi-mem op. * @nor: pointer to a 'struct spi_nor' @@ -105,6 +112,7 @@ void spi_nor_spimem_setup_op(const struct spi_nor *nor, op->addr.dtr = true; op->dummy.dtr = true; op->data.dtr = true; + op->data.dtr_swab16 = spi_nor_is_octal_dtr_swab16(nor, proto); /* 2 bytes per clock cycle in DTR mode. */ op->dummy.nbytes *= 2; diff --git a/drivers/mtd/spi-nor/core.h b/drivers/mtd/spi-nor/core.h index 93cd2fc3606d..fe1259b32110 100644 --- a/drivers/mtd/spi-nor/core.h +++ b/drivers/mtd/spi-nor/core.h @@ -140,6 +140,7 @@ enum spi_nor_option_flags { SNOR_F_RWW = BIT(14), SNOR_F_ECC = BIT(15), SNOR_F_NO_WP = BIT(16), + SNOR_F_DTR_SWAB16 = BIT(17), }; struct spi_nor_read_command {