xtensa/esp32s3: Add timing delay set interface for QSPI

This commit is contained in:
Kevin Zhou
2024-09-03 14:06:59 +08:00
committed by Xiang Xiao
parent 1936e68f40
commit fc6bcd6600
2 changed files with 72 additions and 0 deletions
+50
View File
@@ -1529,6 +1529,56 @@ int esp32s3_qspibus_set_attr(struct qspi_dev_s *dev,
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
*
+22
View File
@@ -84,6 +84,28 @@ int esp32s3_qspibus_set_attr(struct qspi_dev_s *dev,
uint8_t addr_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
*