On 10/3/22 13:06, Potthuri, Sai Krishna wrote: > EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe > > Hi Tudor Ambarus, > >> -----Original Message----- >> From: Tudor.Ambarus@xxxxxxxxxxxxx <Tudor.Ambarus@xxxxxxxxxxxxx> >> Sent: Monday, October 3, 2022 3:13 PM >> To: Potthuri, Sai Krishna <sai.krishna.potthuri@xxxxxxx>; >> pratyush@xxxxxxxxxx; michael@xxxxxxxx; miquel.raynal@xxxxxxxxxxx; >> richard@xxxxxx; vigneshr@xxxxxx; robh+dt@xxxxxxxxxx; >> krzysztof.kozlowski+dt@xxxxxxxxxx >> Cc: devicetree@xxxxxxxxxxxxxxx; linux-mtd@xxxxxxxxxxxxxxxxxxx; linux- >> kernel@xxxxxxxxxxxxxxx; saikrishna12468@xxxxxxxxx; git (AMD-Xilinx) >> <git@xxxxxxx> >> Subject: Re: [PATCH v3 2/2] mtd: spi-nor: Add support for flash reset >> >> On 9/8/22 09:44, Sai Krishna Potthuri wrote: >>> EXTERNAL EMAIL: Do not click links or open attachments unless you know >>> the content is safe >>> >>> Add support for spi-nor flash reset via GPIO controller by reading the >>> reset-gpio property. If there is a valid GPIO specifier then reset >>> will be performed by asserting and deasserting the GPIO using gpiod >>> APIs otherwise it will not perform any operation. >>> >>> Signed-off-by: Sai Krishna Potthuri <sai.krishna.potthuri@xxxxxxx> >>> Reviewed-by: Michael Walle <michael@xxxxxxxx> >>> --- >>> drivers/mtd/spi-nor/core.c | 25 +++++++++++++++++++++++++ >>> 1 file changed, 25 insertions(+) >>> >>> diff --git a/drivers/mtd/spi-nor/core.c b/drivers/mtd/spi-nor/core.c >>> index f2c64006f8d7..a78ab9bae2be 100644 >>> --- a/drivers/mtd/spi-nor/core.c >>> +++ b/drivers/mtd/spi-nor/core.c >>> @@ -2933,6 +2933,27 @@ static void spi_nor_set_mtd_info(struct spi_nor >> *nor) >>> mtd->_put_device = spi_nor_put_device; } >>> >>> +static int spi_nor_hw_reset(struct spi_nor *nor) { >>> + struct gpio_desc *reset; >>> + >>> + reset = devm_gpiod_get_optional(nor->dev, "reset", >> GPIOD_OUT_LOW); >>> + if (IS_ERR_OR_NULL(reset)) >>> + return PTR_ERR_OR_ZERO(reset); >>> + >>> + /* >>> + * Experimental delay values by looking at different flash device >>> + * vendors datasheets. >>> + */ >>> + usleep_range(1, 5); >>> + gpiod_set_value_cansleep(reset, 1); >>> + usleep_range(100, 150); >>> + gpiod_set_value_cansleep(reset, 0); >>> + usleep_range(1000, 1200); >>> + >>> + return 0; >>> +} >>> + >>> int spi_nor_scan(struct spi_nor *nor, const char *name, >>> const struct spi_nor_hwcaps *hwcaps) { @@ -2965,6 >>> +2986,10 @@ int spi_nor_scan(struct spi_nor *nor, const char *name, >>> if (!nor->bouncebuf) >>> return -ENOMEM; >>> >>> + ret = spi_nor_hw_reset(nor); >> >> Should we condition the calling of this method by the absence of the >> "broken-flash-reset" >> dt prop? > This is the suggestion from Michael on top of my initial series for which > i also agreed to have this call unconditionally. If device tree is having this > reset property then we can do the reset in any case. > Okay. -- Cheers, ta