mirror of
https://github.com/apache/nuttx.git
synced 2026-05-28 03:45:50 +08:00
xtensa/esp32s3: Add timing delay set interface for QSPI
This commit is contained in:
@@ -1529,6 +1529,56 @@ int esp32s3_qspibus_set_attr(struct qspi_dev_s *dev,
|
|||||||
return OK;
|
return OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Name: esp32s3_qspibus_set_delay
|
||||||
|
*
|
||||||
|
* Description:
|
||||||
|
* Set timing delay for QSPI input and output data.
|
||||||
|
*
|
||||||
|
* Input Parameters:
|
||||||
|
* dev - Device-specific state data
|
||||||
|
* din_mode - Input mode(0~3) to delay input data
|
||||||
|
* din_num - The delay number(0~3) to input data
|
||||||
|
* dout_mode - Output mode(0,1) to delay output data
|
||||||
|
*
|
||||||
|
* Returned Value:
|
||||||
|
* Zero (OK) is returned on success. Otherwise -1 (ERROR).
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
int esp32s3_qspibus_set_delay(struct qspi_dev_s *dev,
|
||||||
|
uint8_t din_mode,
|
||||||
|
uint8_t din_num,
|
||||||
|
uint8_t dout_mode)
|
||||||
|
{
|
||||||
|
struct esp32s3_qspi_priv_s *priv = (struct esp32s3_qspi_priv_s *)dev;
|
||||||
|
uint8_t id = priv->config->id;
|
||||||
|
|
||||||
|
if ((din_mode > 3) || (din_num > 3) || (dout_mode > 1))
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t din_mode_reg = (din_mode << SPI_DIN0_MODE_S) |
|
||||||
|
(din_mode << SPI_DIN1_MODE_S) |
|
||||||
|
(din_mode << SPI_DIN2_MODE_S) |
|
||||||
|
(din_mode << SPI_DIN3_MODE_S);
|
||||||
|
uint32_t din_num_reg = (din_num << SPI_DIN0_NUM_S) |
|
||||||
|
(din_num << SPI_DIN1_NUM_S) |
|
||||||
|
(din_num << SPI_DIN2_NUM_S) |
|
||||||
|
(din_num << SPI_DIN3_NUM_S);
|
||||||
|
uint32_t dout_mode_reg = (dout_mode << SPI_DOUT0_MODE_S) |
|
||||||
|
(dout_mode << SPI_DOUT1_MODE_S) |
|
||||||
|
(dout_mode << SPI_DOUT2_MODE_S) |
|
||||||
|
(dout_mode << SPI_DOUT3_MODE_S);
|
||||||
|
|
||||||
|
putreg32(din_mode_reg, SPI_DIN_MODE_REG(id));
|
||||||
|
putreg32(din_num_reg, SPI_DIN_NUM_REG(id));
|
||||||
|
putreg32(dout_mode_reg, SPI_DOUT_MODE_REG(id));
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Name: esp32s3_qspibus_initialize
|
* Name: esp32s3_qspibus_initialize
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -84,6 +84,28 @@ int esp32s3_qspibus_set_attr(struct qspi_dev_s *dev,
|
|||||||
uint8_t addr_lines,
|
uint8_t addr_lines,
|
||||||
uint8_t data_lines);
|
uint8_t data_lines);
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Name: esp32s3_qspibus_set_delay
|
||||||
|
*
|
||||||
|
* Description:
|
||||||
|
* Set timing delay for QSPI input and output data.
|
||||||
|
*
|
||||||
|
* Input Parameters:
|
||||||
|
* dev - Device-specific state data
|
||||||
|
* din_mode - Input mode(0~3) to delay input data
|
||||||
|
* din_num - The delay number(0~3) to input data
|
||||||
|
* dout_mode - Output mode(0,1) to delay output data
|
||||||
|
*
|
||||||
|
* Returned Value:
|
||||||
|
* Zero (OK) is returned on success. Otherwise -1 (ERROR).
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
int esp32s3_qspibus_set_delay(struct qspi_dev_s *dev,
|
||||||
|
uint8_t din_mode,
|
||||||
|
uint8_t din_num,
|
||||||
|
uint8_t dout_mode);
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Name: esp32s3_qspibus_initialize
|
* Name: esp32s3_qspibus_initialize
|
||||||
*
|
*
|
||||||
|
|||||||
Reference in New Issue
Block a user