@@ -45,6 +45,7 @@ static_assert(CQSPI_MAX_CHIPSELECT <= SPI_CS_CNT_MAX);
4545#define CQSPI_RD_NO_IRQ BIT(6)
4646#define CQSPI_DMA_SET_MASK BIT(7)
4747#define CQSPI_SUPPORT_DEVICE_RESET BIT(8)
48+ #define CQSPI_DISABLE_STIG_MODE BIT(9)
4849
4950/* Capabilities */
5051#define CQSPI_SUPPORTS_OCTAL BIT(0)
@@ -105,6 +106,7 @@ struct cqspi_st {
105106 bool apb_ahb_hazard ;
106107
107108 bool is_jh7110 ; /* Flag for StarFive JH7110 SoC */
109+ bool disable_stig_mode ;
108110
109111 const struct cqspi_driver_platdata * ddata ;
110112};
@@ -1439,7 +1441,8 @@ static int cqspi_mem_process(struct spi_mem *mem, const struct spi_mem_op *op)
14391441 * reads, prefer STIG mode for such small reads.
14401442 */
14411443 if (!op -> addr .nbytes ||
1442- op -> data .nbytes <= CQSPI_STIG_DATA_LEN_MAX )
1444+ (op -> data .nbytes <= CQSPI_STIG_DATA_LEN_MAX &&
1445+ !cqspi -> disable_stig_mode ))
14431446 return cqspi_command_read (f_pdata , op );
14441447
14451448 return cqspi_read (f_pdata , op );
@@ -1903,6 +1906,8 @@ static int cqspi_probe(struct platform_device *pdev)
19031906 if (ret )
19041907 goto probe_reset_failed ;
19051908 }
1909+ if (ddata -> quirks & CQSPI_DISABLE_STIG_MODE )
1910+ cqspi -> disable_stig_mode = true;
19061911
19071912 if (ddata -> quirks & CQSPI_DMA_SET_MASK ) {
19081913 ret = dma_set_mask (& pdev -> dev , DMA_BIT_MASK (64 ));
@@ -2068,7 +2073,8 @@ static const struct cqspi_driver_platdata intel_lgm_qspi = {
20682073static const struct cqspi_driver_platdata socfpga_qspi = {
20692074 .quirks = CQSPI_DISABLE_DAC_MODE
20702075 | CQSPI_NO_SUPPORT_WR_COMPLETION
2071- | CQSPI_SLOW_SRAM ,
2076+ | CQSPI_SLOW_SRAM
2077+ | CQSPI_DISABLE_STIG_MODE ,
20722078};
20732079
20742080static const struct cqspi_driver_platdata versal_ospi = {
0 commit comments