drivers: flash: spi_nor: Add reset pin
Add Reset pin initialization during Spi NOR driver start-up. Toggle the pin to reset the device. Signed-off-by: Vincent Geneves <vgeneves@kalray.eu>
This commit is contained in:
parent
11d782ce56
commit
3b3528cd90
1 changed files with 25 additions and 0 deletions
|
@ -67,6 +67,10 @@ struct spi_nor_config {
|
||||||
/* Devicetree SPI configuration */
|
/* Devicetree SPI configuration */
|
||||||
struct spi_dt_spec spi;
|
struct spi_dt_spec spi;
|
||||||
|
|
||||||
|
#if DT_INST_NODE_HAS_PROP(0, reset_gpios)
|
||||||
|
const struct gpio_dt_spec reset;
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Runtime SFDP stores no static configuration. */
|
/* Runtime SFDP stores no static configuration. */
|
||||||
|
|
||||||
#ifndef CONFIG_SPI_NOR_SFDP_RUNTIME
|
#ifndef CONFIG_SPI_NOR_SFDP_RUNTIME
|
||||||
|
@ -1144,6 +1148,23 @@ static int spi_nor_configure(const struct device *dev)
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DT_INST_NODE_HAS_PROP(0, reset_gpios)
|
||||||
|
if (cfg->reset) {
|
||||||
|
if (!device_is_ready(cfg->reset->port)) {
|
||||||
|
LOG_ERR("Reset pin not ready");
|
||||||
|
return -ENODEV;
|
||||||
|
}
|
||||||
|
if (gpio_pin_configure_dt(cfg->reset, GPIO_OUTPUT_ACTIVE)) {
|
||||||
|
LOG_ERR("Couldn't configure reset pin");
|
||||||
|
return -ENODEV;
|
||||||
|
}
|
||||||
|
rc = gpio_pin_set_dt(cfg->reset, 0);
|
||||||
|
if (rc) {
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/* After a soft-reset the flash might be in DPD or busy writing/erasing.
|
/* After a soft-reset the flash might be in DPD or busy writing/erasing.
|
||||||
* Exit DPD and wait until flash is ready.
|
* Exit DPD and wait until flash is ready.
|
||||||
*/
|
*/
|
||||||
|
@ -1405,6 +1426,10 @@ BUILD_ASSERT(DT_INST_PROP(0, has_lock) == (DT_INST_PROP(0, has_lock) & 0xFF),
|
||||||
static const struct spi_nor_config spi_nor_config_0 = {
|
static const struct spi_nor_config spi_nor_config_0 = {
|
||||||
.spi = SPI_DT_SPEC_INST_GET(0, SPI_WORD_SET(8),
|
.spi = SPI_DT_SPEC_INST_GET(0, SPI_WORD_SET(8),
|
||||||
CONFIG_SPI_NOR_CS_WAIT_DELAY),
|
CONFIG_SPI_NOR_CS_WAIT_DELAY),
|
||||||
|
#if DT_INST_NODE_HAS_PROP(0, reset_gpios)
|
||||||
|
.reset = GPIO_DT_SPEC_INST_GET(0, reset_gpios)
|
||||||
|
#endif
|
||||||
|
|
||||||
#if !defined(CONFIG_SPI_NOR_SFDP_RUNTIME)
|
#if !defined(CONFIG_SPI_NOR_SFDP_RUNTIME)
|
||||||
|
|
||||||
#if defined(CONFIG_FLASH_PAGE_LAYOUT)
|
#if defined(CONFIG_FLASH_PAGE_LAYOUT)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue