回信: Re: [v9,23/28] mtd: spi-nor-core: Perform a Soft Reset on shutdown

jaimeliao at mxic.com.tw jaimeliao at mxic.com.tw
Mon Jun 21 03:59:29 CEST 2021


Hi Pratyush

> Hi,
> 
> On 18/06/21 04:55PM, jaimeliao at mxic.com.tw wrote:
> > 
> > Hi Pratyush
> > 
> > 
> > +#ifdef CONFIG_SPI_FLASH_SOFT_RESET
> > +/**
> > + * spi_nor_soft_reset() - perform the JEDEC Software Reset sequence
> > + * @nor:                the spi_nor structure
> > + *
> > + * This function can be used to switch from Octal DTR mode to legacy 
mode 
> > on a
> > + * flash that supports it. The soft reset is executed in Octal DTR 
mode.
> > + *
> > + * Return: 0 for success, -errno for failure.
> > + */
> > +static int spi_nor_soft_reset(struct spi_nor *nor)
> > +{
> > +                struct spi_mem_op op;
> > +                int ret;
> > +                enum spi_nor_cmd_ext ext;
> > +
> > +                ext = nor->cmd_ext_type;
> > +                nor->cmd_ext_type = SPI_NOR_EXT_REPEAT;
> > According JEDEC, cmd_ext_type has two different types, REPEAT and 
INVERT.
> > Some Flash vendor using "INVERT" as cmd_ext_type so that it is not 
> > suitable for hard coding the type as REPEAT.
> > Sending twice reset command with different types is clumsy but useful 
> > before read ID for getting Flash information.
> > It would be great if you have any other ideas for this part.
> 
> It is possible to discover the extension type from BFPT (if the flash 
> supports it, that is). But this function is supposed to be called before 

> anything else to make sure the flash is in a sane state. For that 
> reason, I don't think SFDP would be a viable approach.
> 
> Executing it twice might be a viable option. We need to see how flash 
> that expect invert react to a repeat opcode, and vice versa.
> 
> Anyway, I don't think this is a problem for now. Both the 8D-8D-8D 
> capable flashes supported with this series expect a repeat opcode.
According Macronix SPI-NOR octal bus Flash datasheet.
https://www.mxic.com.tw/Lists/Datasheet/Attachments/7721/MX66UM1G45G,%201.8V,%201Gb,%20v1.1.pdf
Most of SPI-NOR octal bus Flash are all need invert extension opcode in 
octal dtr mode.
I think repeat and invert opcode are necessary for different vendor Flash.
> 
> > 
> > +
> > +                op = (struct 
> > spi_mem_op)SPI_MEM_OP(SPI_MEM_OP_CMD(SPINOR_OP_SRSTEN, 0),
> > +                                                SPI_MEM_OP_NO_DUMMY,
> > +                                                SPI_MEM_OP_NO_ADDR,
> > +                                                SPI_MEM_OP_NO_DATA);
> > +                spi_nor_setup_op(nor, &op, SNOR_PROTO_8_8_8_DTR);
> > +                ret = spi_mem_exec_op(nor->spi, &op);
> > +                if (ret) {
> > +                                dev_warn(nor->dev, "Software reset 
enable 
> > failed: %d\n", ret);
> > +                                goto out;
> > +                }
> > +
> > +                op = (struct 
> > spi_mem_op)SPI_MEM_OP(SPI_MEM_OP_CMD(SPINOR_OP_SRST, 0),
> > +                                                SPI_MEM_OP_NO_DUMMY,
> > +                                                SPI_MEM_OP_NO_ADDR,
> > +                                                SPI_MEM_OP_NO_DATA);
> > +                spi_nor_setup_op(nor, &op, SNOR_PROTO_8_8_8_DTR);
> > +                ret = spi_mem_exec_op(nor->spi, &op);
> > +                if (ret) {
> > +                                dev_warn(nor->dev, "Software reset 
> > failed: %d\n", ret);
> > +                                goto out;
> > +                }
> > +
> > +                /*
> > +                 * Software Reset is not instant, and the delay 
varies 
> > from flash to
> > +                 * flash. Looking at a few flashes, most range 
somewhere 
> > below 100
> > +                 * microseconds. So, wait for 200ms just to be sure.
> > +                 */
> > +                udelay(SPI_NOR_SRST_SLEEP_LEN);
> > +
> > +out:
> > +                nor->cmd_ext_type = ext;
> > +                return ret;
> > +}
> > 
> > 
> > Thanks
> > Jaime
> 
> -- 
> Regards,
> Pratyush Yadav
> Texas Instruments Inc.

Thanks
Jaime


CONFIDENTIALITY NOTE:

This e-mail and any attachments may contain confidential information 
and/or personal data, which is protected by applicable laws. Please be 
reminded that duplication, disclosure, distribution, or use of this e-mail 
(and/or its attachments) or any part thereof is prohibited. If you receive 
this e-mail in error, please notify us immediately and delete this mail as 
well as its attachment(s) from your system. In addition, please be 
informed that collection, processing, and/or use of personal data is 
prohibited unless expressly permitted by personal data protection laws. 
Thank you for your attention and cooperation.

Macronix International Co., Ltd.

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



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

CONFIDENTIALITY NOTE:

This e-mail and any attachments may contain confidential information and/or personal data, which is protected by applicable laws. Please be reminded that duplication, disclosure, distribution, or use of this e-mail (and/or its attachments) or any part thereof is prohibited. If you receive this e-mail in error, please notify us immediately and delete this mail as well as its attachment(s) from your system. In addition, please be informed that collection, processing, and/or use of personal data is prohibited unless expressly permitted by personal data protection laws. Thank you for your attention and cooperation.

Macronix International Co., Ltd.

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


More information about the U-Boot mailing list