Lines Matching refs:hospi
274 static HAL_StatusTypeDef OSPI_WaitFlagStateUntilTimeout(OSPI_HandleTypeDef *hospi, uint32_t Flag, F…
276 static HAL_StatusTypeDef OSPI_ConfigCmd(OSPI_HandleTypeDef *hospi, OSPI_RegularCmdTypeDef *cmd);
309 HAL_StatusTypeDef HAL_OSPI_Init(OSPI_HandleTypeDef *hospi) in HAL_OSPI_Init() argument
315 if (hospi == NULL) in HAL_OSPI_Init()
323 assert_param(IS_OSPI_FIFO_THRESHOLD(hospi->Init.FifoThreshold)); in HAL_OSPI_Init()
324 assert_param(IS_OSPI_DUALQUAD_MODE(hospi->Init.DualQuad)); in HAL_OSPI_Init()
325 assert_param(IS_OSPI_MEMORY_TYPE(hospi->Init.MemoryType)); in HAL_OSPI_Init()
326 assert_param(IS_OSPI_DEVICE_SIZE(hospi->Init.DeviceSize)); in HAL_OSPI_Init()
327 assert_param(IS_OSPI_CS_HIGH_TIME(hospi->Init.ChipSelectHighTime)); in HAL_OSPI_Init()
328 assert_param(IS_OSPI_FREE_RUN_CLK(hospi->Init.FreeRunningClock)); in HAL_OSPI_Init()
329 assert_param(IS_OSPI_CLOCK_MODE(hospi->Init.ClockMode)); in HAL_OSPI_Init()
330 assert_param(IS_OSPI_WRAP_SIZE(hospi->Init.WrapSize)); in HAL_OSPI_Init()
331 assert_param(IS_OSPI_CLK_PRESCALER(hospi->Init.ClockPrescaler)); in HAL_OSPI_Init()
332 assert_param(IS_OSPI_SAMPLE_SHIFTING(hospi->Init.SampleShifting)); in HAL_OSPI_Init()
333 assert_param(IS_OSPI_DHQC(hospi->Init.DelayHoldQuarterCycle)); in HAL_OSPI_Init()
334 assert_param(IS_OSPI_CS_BOUNDARY(hospi->Init.ChipSelectBoundary)); in HAL_OSPI_Init()
335 assert_param(IS_OSPI_DLYBYP(hospi->Init.DelayBlockBypass)); in HAL_OSPI_Init()
338 hospi->ErrorCode = HAL_OSPI_ERROR_NONE; in HAL_OSPI_Init()
341 if (hospi->State == HAL_OSPI_STATE_RESET) in HAL_OSPI_Init()
345 hospi->ErrorCallback = HAL_OSPI_ErrorCallback; in HAL_OSPI_Init()
346 hospi->AbortCpltCallback = HAL_OSPI_AbortCpltCallback; in HAL_OSPI_Init()
347 hospi->FifoThresholdCallback = HAL_OSPI_FifoThresholdCallback; in HAL_OSPI_Init()
348 hospi->CmdCpltCallback = HAL_OSPI_CmdCpltCallback; in HAL_OSPI_Init()
349 hospi->RxCpltCallback = HAL_OSPI_RxCpltCallback; in HAL_OSPI_Init()
350 hospi->TxCpltCallback = HAL_OSPI_TxCpltCallback; in HAL_OSPI_Init()
351 hospi->RxHalfCpltCallback = HAL_OSPI_RxHalfCpltCallback; in HAL_OSPI_Init()
352 hospi->TxHalfCpltCallback = HAL_OSPI_TxHalfCpltCallback; in HAL_OSPI_Init()
353 hospi->StatusMatchCallback = HAL_OSPI_StatusMatchCallback; in HAL_OSPI_Init()
354 hospi->TimeOutCallback = HAL_OSPI_TimeOutCallback; in HAL_OSPI_Init()
356 if (hospi->MspInitCallback == NULL) in HAL_OSPI_Init()
358 hospi->MspInitCallback = HAL_OSPI_MspInit; in HAL_OSPI_Init()
362 hospi->MspInitCallback(hospi); in HAL_OSPI_Init()
365 HAL_OSPI_MspInit(hospi); in HAL_OSPI_Init()
369 (void)HAL_OSPI_SetTimeout(hospi, HAL_OSPI_TIMEOUT_DEFAULT_VALUE); in HAL_OSPI_Init()
373 MODIFY_REG(hospi->Instance->DCR1, in HAL_OSPI_Init()
376 … (hospi->Init.MemoryType | ((hospi->Init.DeviceSize - 1U) << OCTOSPI_DCR1_DEVSIZE_Pos) | in HAL_OSPI_Init()
377 ((hospi->Init.ChipSelectHighTime - 1U) << OCTOSPI_DCR1_CSHT_Pos) | in HAL_OSPI_Init()
378 hospi->Init.DelayBlockBypass | hospi->Init.ClockMode)); in HAL_OSPI_Init()
381 MODIFY_REG(hospi->Instance->DCR2, OCTOSPI_DCR2_WRAPSIZE, hospi->Init.WrapSize); in HAL_OSPI_Init()
384 hospi->Instance->DCR3 = (hospi->Init.ChipSelectBoundary << OCTOSPI_DCR3_CSBOUND_Pos); in HAL_OSPI_Init()
387 hospi->Instance->DCR4 = hospi->Init.Refresh; in HAL_OSPI_Init()
390 …MODIFY_REG(hospi->Instance->CR, OCTOSPI_CR_FTHRES, ((hospi->Init.FifoThreshold - 1U) << OCTOSPI_CR… in HAL_OSPI_Init()
393 …status = OSPI_WaitFlagStateUntilTimeout(hospi, HAL_OSPI_FLAG_BUSY, RESET, tickstart, hospi->Timeou… in HAL_OSPI_Init()
398 MODIFY_REG(hospi->Instance->DCR2, OCTOSPI_DCR2_PRESCALER, in HAL_OSPI_Init()
399 ((hospi->Init.ClockPrescaler - 1U) << OCTOSPI_DCR2_PRESCALER_Pos)); in HAL_OSPI_Init()
402 MODIFY_REG(hospi->Instance->CR, OCTOSPI_CR_DQM, hospi->Init.DualQuad); in HAL_OSPI_Init()
405 MODIFY_REG(hospi->Instance->TCR, (OCTOSPI_TCR_SSHIFT | OCTOSPI_TCR_DHQC), in HAL_OSPI_Init()
406 (hospi->Init.SampleShifting | hospi->Init.DelayHoldQuarterCycle)); in HAL_OSPI_Init()
409 __HAL_OSPI_ENABLE(hospi); in HAL_OSPI_Init()
412 if (hospi->Init.FreeRunningClock == HAL_OSPI_FREERUNCLK_ENABLE) in HAL_OSPI_Init()
414 SET_BIT(hospi->Instance->DCR1, OCTOSPI_DCR1_FRCK); in HAL_OSPI_Init()
418 if (hospi->Init.MemoryType == HAL_OSPI_MEMTYPE_HYPERBUS) in HAL_OSPI_Init()
420 hospi->State = HAL_OSPI_STATE_HYPERBUS_INIT; in HAL_OSPI_Init()
424 hospi->State = HAL_OSPI_STATE_READY; in HAL_OSPI_Init()
439 __weak void HAL_OSPI_MspInit(OSPI_HandleTypeDef *hospi) in HAL_OSPI_MspInit() argument
442 UNUSED(hospi); in HAL_OSPI_MspInit()
454 HAL_StatusTypeDef HAL_OSPI_DeInit(OSPI_HandleTypeDef *hospi) in HAL_OSPI_DeInit() argument
459 if (hospi == NULL) in HAL_OSPI_DeInit()
467 __HAL_OSPI_DISABLE(hospi); in HAL_OSPI_DeInit()
470 CLEAR_BIT(hospi->Instance->DCR1, OCTOSPI_DCR1_FRCK); in HAL_OSPI_DeInit()
473 if (hospi->MspDeInitCallback == NULL) in HAL_OSPI_DeInit()
475 hospi->MspDeInitCallback = HAL_OSPI_MspDeInit; in HAL_OSPI_DeInit()
479 hospi->MspDeInitCallback(hospi); in HAL_OSPI_DeInit()
482 HAL_OSPI_MspDeInit(hospi); in HAL_OSPI_DeInit()
486 hospi->State = HAL_OSPI_STATE_RESET; in HAL_OSPI_DeInit()
497 __weak void HAL_OSPI_MspDeInit(OSPI_HandleTypeDef *hospi) in HAL_OSPI_MspDeInit() argument
500 UNUSED(hospi); in HAL_OSPI_MspDeInit()
537 void HAL_OSPI_IRQHandler(OSPI_HandleTypeDef *hospi) in HAL_OSPI_IRQHandler() argument
539 __IO uint32_t *data_reg = &hospi->Instance->DR; in HAL_OSPI_IRQHandler()
540 uint32_t flag = hospi->Instance->SR; in HAL_OSPI_IRQHandler()
541 uint32_t itsource = hospi->Instance->CR; in HAL_OSPI_IRQHandler()
542 uint32_t currentstate = hospi->State; in HAL_OSPI_IRQHandler()
550 *((__IO uint8_t *)data_reg) = *hospi->pBuffPtr; in HAL_OSPI_IRQHandler()
551 hospi->pBuffPtr++; in HAL_OSPI_IRQHandler()
552 hospi->XferCount--; in HAL_OSPI_IRQHandler()
557 *hospi->pBuffPtr = *((__IO uint8_t *)data_reg); in HAL_OSPI_IRQHandler()
558 hospi->pBuffPtr++; in HAL_OSPI_IRQHandler()
559 hospi->XferCount--; in HAL_OSPI_IRQHandler()
566 if (hospi->XferCount == 0U) in HAL_OSPI_IRQHandler()
570 __HAL_OSPI_DISABLE_IT(hospi, HAL_OSPI_IT_FT); in HAL_OSPI_IRQHandler()
575 hospi->FifoThresholdCallback(hospi); in HAL_OSPI_IRQHandler()
577 HAL_OSPI_FifoThresholdCallback(hospi); in HAL_OSPI_IRQHandler()
585 if ((hospi->XferCount > 0U) && ((flag & OCTOSPI_SR_FLEVEL) != 0U)) in HAL_OSPI_IRQHandler()
588 *hospi->pBuffPtr = *((__IO uint8_t *)data_reg); in HAL_OSPI_IRQHandler()
589 hospi->pBuffPtr++; in HAL_OSPI_IRQHandler()
590 hospi->XferCount--; in HAL_OSPI_IRQHandler()
592 else if (hospi->XferCount == 0U) in HAL_OSPI_IRQHandler()
595 hospi->Instance->FCR = HAL_OSPI_FLAG_TC; in HAL_OSPI_IRQHandler()
598 __HAL_OSPI_DISABLE_IT(hospi, HAL_OSPI_IT_TC | HAL_OSPI_IT_FT | HAL_OSPI_IT_TE); in HAL_OSPI_IRQHandler()
601 hospi->State = HAL_OSPI_STATE_READY; in HAL_OSPI_IRQHandler()
605 hospi->RxCpltCallback(hospi); in HAL_OSPI_IRQHandler()
607 HAL_OSPI_RxCpltCallback(hospi); in HAL_OSPI_IRQHandler()
618 hospi->Instance->FCR = HAL_OSPI_FLAG_TC; in HAL_OSPI_IRQHandler()
621 __HAL_OSPI_DISABLE_IT(hospi, HAL_OSPI_IT_TC | HAL_OSPI_IT_FT | HAL_OSPI_IT_TE); in HAL_OSPI_IRQHandler()
624 hospi->State = HAL_OSPI_STATE_READY; in HAL_OSPI_IRQHandler()
630 hospi->TxCpltCallback(hospi); in HAL_OSPI_IRQHandler()
632 HAL_OSPI_TxCpltCallback(hospi); in HAL_OSPI_IRQHandler()
639 hospi->CmdCpltCallback(hospi); in HAL_OSPI_IRQHandler()
641 HAL_OSPI_CmdCpltCallback(hospi); in HAL_OSPI_IRQHandler()
646 if (hospi->ErrorCode == HAL_OSPI_ERROR_NONE) in HAL_OSPI_IRQHandler()
651 hospi->AbortCpltCallback(hospi); in HAL_OSPI_IRQHandler()
653 HAL_OSPI_AbortCpltCallback(hospi); in HAL_OSPI_IRQHandler()
661 hospi->ErrorCallback(hospi); in HAL_OSPI_IRQHandler()
663 HAL_OSPI_ErrorCallback(hospi); in HAL_OSPI_IRQHandler()
677 hospi->Instance->FCR = HAL_OSPI_FLAG_SM; in HAL_OSPI_IRQHandler()
680 if ((hospi->Instance->CR & OCTOSPI_CR_APMS) != 0U) in HAL_OSPI_IRQHandler()
683 __HAL_OSPI_DISABLE_IT(hospi, HAL_OSPI_IT_SM | HAL_OSPI_IT_TE); in HAL_OSPI_IRQHandler()
686 hospi->State = HAL_OSPI_STATE_READY; in HAL_OSPI_IRQHandler()
691 hospi->StatusMatchCallback(hospi); in HAL_OSPI_IRQHandler()
693 HAL_OSPI_StatusMatchCallback(hospi); in HAL_OSPI_IRQHandler()
700 hospi->Instance->FCR = HAL_OSPI_FLAG_TE; in HAL_OSPI_IRQHandler()
703 …__HAL_OSPI_DISABLE_IT(hospi, (HAL_OSPI_IT_TO | HAL_OSPI_IT_SM | HAL_OSPI_IT_FT | HAL_OSPI_IT_TC | … in HAL_OSPI_IRQHandler()
706 hospi->ErrorCode = HAL_OSPI_ERROR_TRANSFER; in HAL_OSPI_IRQHandler()
709 if ((hospi->Instance->CR & OCTOSPI_CR_DMAEN) != 0U) in HAL_OSPI_IRQHandler()
712 CLEAR_BIT(hospi->Instance->CR, OCTOSPI_CR_DMAEN); in HAL_OSPI_IRQHandler()
715 hospi->hdma->XferAbortCallback = OSPI_DMAAbortCplt; in HAL_OSPI_IRQHandler()
716 if (HAL_DMA_Abort_IT(hospi->hdma) != HAL_OK) in HAL_OSPI_IRQHandler()
719 hospi->State = HAL_OSPI_STATE_READY; in HAL_OSPI_IRQHandler()
723 hospi->ErrorCallback(hospi); in HAL_OSPI_IRQHandler()
725 HAL_OSPI_ErrorCallback(hospi); in HAL_OSPI_IRQHandler()
732 hospi->State = HAL_OSPI_STATE_READY; in HAL_OSPI_IRQHandler()
736 hospi->ErrorCallback(hospi); in HAL_OSPI_IRQHandler()
738 HAL_OSPI_ErrorCallback(hospi); in HAL_OSPI_IRQHandler()
746 hospi->Instance->FCR = HAL_OSPI_FLAG_TO; in HAL_OSPI_IRQHandler()
750 hospi->TimeOutCallback(hospi); in HAL_OSPI_IRQHandler()
752 HAL_OSPI_TimeOutCallback(hospi); in HAL_OSPI_IRQHandler()
768 HAL_StatusTypeDef HAL_OSPI_Command(OSPI_HandleTypeDef *hospi, OSPI_RegularCmdTypeDef *cmd, uint32_t… in HAL_OSPI_Command() argument
777 if (hospi->Init.DualQuad == HAL_OSPI_DUALQUAD_DISABLE) in HAL_OSPI_Command()
818 state = hospi->State; in HAL_OSPI_Command()
819 …if (((state == HAL_OSPI_STATE_READY) && (hospi->Init.MemoryType != HAL_OSPI_MEMTYPE_HYPERB… in HAL_OSPI_Command()
826 status = OSPI_WaitFlagStateUntilTimeout(hospi, HAL_OSPI_FLAG_BUSY, RESET, tickstart, Timeout); in HAL_OSPI_Command()
831 hospi->ErrorCode = HAL_OSPI_ERROR_NONE; in HAL_OSPI_Command()
834 status = OSPI_ConfigCmd(hospi, cmd); in HAL_OSPI_Command()
842 status = OSPI_WaitFlagStateUntilTimeout(hospi, HAL_OSPI_FLAG_TC, SET, tickstart, Timeout); in HAL_OSPI_Command()
844 __HAL_OSPI_CLEAR_FLAG(hospi, HAL_OSPI_FLAG_TC); in HAL_OSPI_Command()
851 hospi->State = HAL_OSPI_STATE_CMD_CFG; in HAL_OSPI_Command()
855 if (hospi->State == HAL_OSPI_STATE_WRITE_CMD_CFG) in HAL_OSPI_Command()
857 hospi->State = HAL_OSPI_STATE_CMD_CFG; in HAL_OSPI_Command()
861 hospi->State = HAL_OSPI_STATE_READ_CMD_CFG; in HAL_OSPI_Command()
866 if (hospi->State == HAL_OSPI_STATE_READ_CMD_CFG) in HAL_OSPI_Command()
868 hospi->State = HAL_OSPI_STATE_CMD_CFG; in HAL_OSPI_Command()
872 hospi->State = HAL_OSPI_STATE_WRITE_CMD_CFG; in HAL_OSPI_Command()
886 hospi->ErrorCode = HAL_OSPI_ERROR_INVALID_SEQUENCE; in HAL_OSPI_Command()
900 HAL_StatusTypeDef HAL_OSPI_Command_IT(OSPI_HandleTypeDef *hospi, OSPI_RegularCmdTypeDef *cmd) in HAL_OSPI_Command_IT() argument
908 if (hospi->Init.DualQuad == HAL_OSPI_DUALQUAD_DISABLE) in HAL_OSPI_Command_IT()
946 …if ((hospi->State == HAL_OSPI_STATE_READY) && (cmd->OperationType == HAL_OSPI_OPTYPE_COMMON_C… in HAL_OSPI_Command_IT()
947 … (cmd->DataMode == HAL_OSPI_DATA_NONE) && (hospi->Init.MemoryType != HAL_OSPI_MEMTYPE_HYPERBUS)) in HAL_OSPI_Command_IT()
950 …status = OSPI_WaitFlagStateUntilTimeout(hospi, HAL_OSPI_FLAG_BUSY, RESET, tickstart, hospi->Timeou… in HAL_OSPI_Command_IT()
955 hospi->ErrorCode = HAL_OSPI_ERROR_NONE; in HAL_OSPI_Command_IT()
958 __HAL_OSPI_CLEAR_FLAG(hospi, HAL_OSPI_FLAG_TE | HAL_OSPI_FLAG_TC); in HAL_OSPI_Command_IT()
961 status = OSPI_ConfigCmd(hospi, cmd); in HAL_OSPI_Command_IT()
966 hospi->State = HAL_OSPI_STATE_BUSY_CMD; in HAL_OSPI_Command_IT()
969 __HAL_OSPI_ENABLE_IT(hospi, HAL_OSPI_IT_TC | HAL_OSPI_IT_TE); in HAL_OSPI_Command_IT()
976 hospi->ErrorCode = HAL_OSPI_ERROR_INVALID_SEQUENCE; in HAL_OSPI_Command_IT()
990 HAL_StatusTypeDef HAL_OSPI_HyperbusCfg(OSPI_HandleTypeDef *hospi, OSPI_HyperbusCfgTypeDef *cfg, uin… in HAL_OSPI_HyperbusCfg() argument
1003 state = hospi->State; in HAL_OSPI_HyperbusCfg()
1007 status = OSPI_WaitFlagStateUntilTimeout(hospi, HAL_OSPI_FLAG_BUSY, RESET, tickstart, Timeout); in HAL_OSPI_HyperbusCfg()
1012 WRITE_REG(hospi->Instance->HLCR, ((cfg->RWRecoveryTime << OCTOSPI_HLCR_TRWR_Pos) | in HAL_OSPI_HyperbusCfg()
1017 hospi->State = HAL_OSPI_STATE_READY; in HAL_OSPI_HyperbusCfg()
1023 hospi->ErrorCode = HAL_OSPI_ERROR_INVALID_SEQUENCE; in HAL_OSPI_HyperbusCfg()
1037 HAL_StatusTypeDef HAL_OSPI_HyperbusCmd(OSPI_HandleTypeDef *hospi, OSPI_HyperbusCmdTypeDef *cmd, uin… in HAL_OSPI_HyperbusCmd() argument
1049 …if ((hospi->State == HAL_OSPI_STATE_READY) && (hospi->Init.MemoryType == HAL_OSPI_MEMTYPE_HYPERBUS… in HAL_OSPI_HyperbusCmd()
1052 status = OSPI_WaitFlagStateUntilTimeout(hospi, HAL_OSPI_FLAG_BUSY, RESET, tickstart, Timeout); in HAL_OSPI_HyperbusCmd()
1057 MODIFY_REG(hospi->Instance->CR, OCTOSPI_CR_FMODE, 0U); in HAL_OSPI_HyperbusCmd()
1060 MODIFY_REG(hospi->Instance->DCR1, OCTOSPI_DCR1_MTYP_0, cmd->AddressSpace); in HAL_OSPI_HyperbusCmd()
1066 WRITE_REG(hospi->Instance->CCR, (cmd->DQSMode | OCTOSPI_CCR_DDTR | OCTOSPI_CCR_DMODE_2 | in HAL_OSPI_HyperbusCmd()
1068 WRITE_REG(hospi->Instance->WCCR, (cmd->DQSMode | OCTOSPI_WCCR_DDTR | OCTOSPI_WCCR_DMODE_2 | in HAL_OSPI_HyperbusCmd()
1072 WRITE_REG(hospi->Instance->DLR, (cmd->NbData - 1U)); in HAL_OSPI_HyperbusCmd()
1075 WRITE_REG(hospi->Instance->AR, cmd->Address); in HAL_OSPI_HyperbusCmd()
1078 hospi->State = HAL_OSPI_STATE_CMD_CFG; in HAL_OSPI_HyperbusCmd()
1084 hospi->ErrorCode = HAL_OSPI_ERROR_INVALID_SEQUENCE; in HAL_OSPI_HyperbusCmd()
1099 HAL_StatusTypeDef HAL_OSPI_Transmit(OSPI_HandleTypeDef *hospi, uint8_t *pData, uint32_t Timeout) in HAL_OSPI_Transmit() argument
1103 __IO uint32_t *data_reg = &hospi->Instance->DR; in HAL_OSPI_Transmit()
1109 hospi->ErrorCode = HAL_OSPI_ERROR_INVALID_PARAM; in HAL_OSPI_Transmit()
1114 if (hospi->State == HAL_OSPI_STATE_CMD_CFG) in HAL_OSPI_Transmit()
1117 hospi->XferCount = READ_REG(hospi->Instance->DLR) + 1U; in HAL_OSPI_Transmit()
1118 hospi->XferSize = hospi->XferCount; in HAL_OSPI_Transmit()
1119 hospi->pBuffPtr = pData; in HAL_OSPI_Transmit()
1122 MODIFY_REG(hospi->Instance->CR, OCTOSPI_CR_FMODE, OSPI_FUNCTIONAL_MODE_INDIRECT_WRITE); in HAL_OSPI_Transmit()
1127 status = OSPI_WaitFlagStateUntilTimeout(hospi, HAL_OSPI_FLAG_FT, SET, tickstart, Timeout); in HAL_OSPI_Transmit()
1134 *((__IO uint8_t *)data_reg) = *hospi->pBuffPtr; in HAL_OSPI_Transmit()
1135 hospi->pBuffPtr++; in HAL_OSPI_Transmit()
1136 hospi->XferCount--; in HAL_OSPI_Transmit()
1137 } while (hospi->XferCount > 0U); in HAL_OSPI_Transmit()
1142 status = OSPI_WaitFlagStateUntilTimeout(hospi, HAL_OSPI_FLAG_TC, SET, tickstart, Timeout); in HAL_OSPI_Transmit()
1147 __HAL_OSPI_CLEAR_FLAG(hospi, HAL_OSPI_FLAG_TC); in HAL_OSPI_Transmit()
1150 hospi->State = HAL_OSPI_STATE_READY; in HAL_OSPI_Transmit()
1157 hospi->ErrorCode = HAL_OSPI_ERROR_INVALID_SEQUENCE; in HAL_OSPI_Transmit()
1173 HAL_StatusTypeDef HAL_OSPI_Receive(OSPI_HandleTypeDef *hospi, uint8_t *pData, uint32_t Timeout) in HAL_OSPI_Receive() argument
1177 __IO uint32_t *data_reg = &hospi->Instance->DR; in HAL_OSPI_Receive()
1178 uint32_t addr_reg = hospi->Instance->AR; in HAL_OSPI_Receive()
1179 uint32_t ir_reg = hospi->Instance->IR; in HAL_OSPI_Receive()
1185 hospi->ErrorCode = HAL_OSPI_ERROR_INVALID_PARAM; in HAL_OSPI_Receive()
1190 if (hospi->State == HAL_OSPI_STATE_CMD_CFG) in HAL_OSPI_Receive()
1193 hospi->XferCount = READ_REG(hospi->Instance->DLR) + 1U; in HAL_OSPI_Receive()
1194 hospi->XferSize = hospi->XferCount; in HAL_OSPI_Receive()
1195 hospi->pBuffPtr = pData; in HAL_OSPI_Receive()
1198 MODIFY_REG(hospi->Instance->CR, OCTOSPI_CR_FMODE, OSPI_FUNCTIONAL_MODE_INDIRECT_READ); in HAL_OSPI_Receive()
1201 if (hospi->Init.MemoryType == HAL_OSPI_MEMTYPE_HYPERBUS) in HAL_OSPI_Receive()
1203 WRITE_REG(hospi->Instance->AR, addr_reg); in HAL_OSPI_Receive()
1207 if (READ_BIT(hospi->Instance->CCR, OCTOSPI_CCR_ADMODE) != HAL_OSPI_ADDRESS_NONE) in HAL_OSPI_Receive()
1209 WRITE_REG(hospi->Instance->AR, addr_reg); in HAL_OSPI_Receive()
1213 WRITE_REG(hospi->Instance->IR, ir_reg); in HAL_OSPI_Receive()
1220 …status = OSPI_WaitFlagStateUntilTimeout(hospi, (HAL_OSPI_FLAG_FT | HAL_OSPI_FLAG_TC), SET, ticksta… in HAL_OSPI_Receive()
1227 *hospi->pBuffPtr = *((__IO uint8_t *)data_reg); in HAL_OSPI_Receive()
1228 hospi->pBuffPtr++; in HAL_OSPI_Receive()
1229 hospi->XferCount--; in HAL_OSPI_Receive()
1230 } while (hospi->XferCount > 0U); in HAL_OSPI_Receive()
1235 status = OSPI_WaitFlagStateUntilTimeout(hospi, HAL_OSPI_FLAG_TC, SET, tickstart, Timeout); in HAL_OSPI_Receive()
1240 __HAL_OSPI_CLEAR_FLAG(hospi, HAL_OSPI_FLAG_TC); in HAL_OSPI_Receive()
1243 hospi->State = HAL_OSPI_STATE_READY; in HAL_OSPI_Receive()
1250 hospi->ErrorCode = HAL_OSPI_ERROR_INVALID_SEQUENCE; in HAL_OSPI_Receive()
1265 HAL_StatusTypeDef HAL_OSPI_Transmit_IT(OSPI_HandleTypeDef *hospi, uint8_t *pData) in HAL_OSPI_Transmit_IT() argument
1273 hospi->ErrorCode = HAL_OSPI_ERROR_INVALID_PARAM; in HAL_OSPI_Transmit_IT()
1278 if (hospi->State == HAL_OSPI_STATE_CMD_CFG) in HAL_OSPI_Transmit_IT()
1281 hospi->XferCount = READ_REG(hospi->Instance->DLR) + 1U; in HAL_OSPI_Transmit_IT()
1282 hospi->XferSize = hospi->XferCount; in HAL_OSPI_Transmit_IT()
1283 hospi->pBuffPtr = pData; in HAL_OSPI_Transmit_IT()
1286 MODIFY_REG(hospi->Instance->CR, OCTOSPI_CR_FMODE, OSPI_FUNCTIONAL_MODE_INDIRECT_WRITE); in HAL_OSPI_Transmit_IT()
1289 __HAL_OSPI_CLEAR_FLAG(hospi, HAL_OSPI_FLAG_TE | HAL_OSPI_FLAG_TC); in HAL_OSPI_Transmit_IT()
1292 hospi->State = HAL_OSPI_STATE_BUSY_TX; in HAL_OSPI_Transmit_IT()
1295 __HAL_OSPI_ENABLE_IT(hospi, HAL_OSPI_IT_TC | HAL_OSPI_IT_FT | HAL_OSPI_IT_TE); in HAL_OSPI_Transmit_IT()
1300 hospi->ErrorCode = HAL_OSPI_ERROR_INVALID_SEQUENCE; in HAL_OSPI_Transmit_IT()
1315 HAL_StatusTypeDef HAL_OSPI_Receive_IT(OSPI_HandleTypeDef *hospi, uint8_t *pData) in HAL_OSPI_Receive_IT() argument
1318 uint32_t addr_reg = hospi->Instance->AR; in HAL_OSPI_Receive_IT()
1319 uint32_t ir_reg = hospi->Instance->IR; in HAL_OSPI_Receive_IT()
1325 hospi->ErrorCode = HAL_OSPI_ERROR_INVALID_PARAM; in HAL_OSPI_Receive_IT()
1330 if (hospi->State == HAL_OSPI_STATE_CMD_CFG) in HAL_OSPI_Receive_IT()
1333 hospi->XferCount = READ_REG(hospi->Instance->DLR) + 1U; in HAL_OSPI_Receive_IT()
1334 hospi->XferSize = hospi->XferCount; in HAL_OSPI_Receive_IT()
1335 hospi->pBuffPtr = pData; in HAL_OSPI_Receive_IT()
1338 MODIFY_REG(hospi->Instance->CR, OCTOSPI_CR_FMODE, OSPI_FUNCTIONAL_MODE_INDIRECT_READ); in HAL_OSPI_Receive_IT()
1341 __HAL_OSPI_CLEAR_FLAG(hospi, HAL_OSPI_FLAG_TE | HAL_OSPI_FLAG_TC); in HAL_OSPI_Receive_IT()
1344 hospi->State = HAL_OSPI_STATE_BUSY_RX; in HAL_OSPI_Receive_IT()
1347 __HAL_OSPI_ENABLE_IT(hospi, HAL_OSPI_IT_TC | HAL_OSPI_IT_FT | HAL_OSPI_IT_TE); in HAL_OSPI_Receive_IT()
1350 if (hospi->Init.MemoryType == HAL_OSPI_MEMTYPE_HYPERBUS) in HAL_OSPI_Receive_IT()
1352 WRITE_REG(hospi->Instance->AR, addr_reg); in HAL_OSPI_Receive_IT()
1356 if (READ_BIT(hospi->Instance->CCR, OCTOSPI_CCR_ADMODE) != HAL_OSPI_ADDRESS_NONE) in HAL_OSPI_Receive_IT()
1358 WRITE_REG(hospi->Instance->AR, addr_reg); in HAL_OSPI_Receive_IT()
1362 WRITE_REG(hospi->Instance->IR, ir_reg); in HAL_OSPI_Receive_IT()
1369 hospi->ErrorCode = HAL_OSPI_ERROR_INVALID_SEQUENCE; in HAL_OSPI_Receive_IT()
1388 HAL_StatusTypeDef HAL_OSPI_Transmit_DMA(OSPI_HandleTypeDef *hospi, uint8_t *pData) in HAL_OSPI_Transmit_DMA() argument
1391 uint32_t data_size = hospi->Instance->DLR + 1U; in HAL_OSPI_Transmit_DMA()
1397 hospi->ErrorCode = HAL_OSPI_ERROR_INVALID_PARAM; in HAL_OSPI_Transmit_DMA()
1402 if (hospi->State == HAL_OSPI_STATE_CMD_CFG) in HAL_OSPI_Transmit_DMA()
1405 if (hospi->hdma->Init.PeriphDataAlignment == DMA_PDATAALIGN_BYTE) in HAL_OSPI_Transmit_DMA()
1407 hospi->XferCount = data_size; in HAL_OSPI_Transmit_DMA()
1409 else if (hospi->hdma->Init.PeriphDataAlignment == DMA_PDATAALIGN_HALFWORD) in HAL_OSPI_Transmit_DMA()
1411 if (((data_size % 2U) != 0U) || ((hospi->Init.FifoThreshold % 2U) != 0U)) in HAL_OSPI_Transmit_DMA()
1415 hospi->ErrorCode = HAL_OSPI_ERROR_INVALID_PARAM; in HAL_OSPI_Transmit_DMA()
1420 hospi->XferCount = (data_size >> 1); in HAL_OSPI_Transmit_DMA()
1423 else if (hospi->hdma->Init.PeriphDataAlignment == DMA_PDATAALIGN_WORD) in HAL_OSPI_Transmit_DMA()
1425 if (((data_size % 4U) != 0U) || ((hospi->Init.FifoThreshold % 4U) != 0U)) in HAL_OSPI_Transmit_DMA()
1429 hospi->ErrorCode = HAL_OSPI_ERROR_INVALID_PARAM; in HAL_OSPI_Transmit_DMA()
1434 hospi->XferCount = (data_size >> 2); in HAL_OSPI_Transmit_DMA()
1444 hospi->XferSize = hospi->XferCount; in HAL_OSPI_Transmit_DMA()
1445 hospi->pBuffPtr = pData; in HAL_OSPI_Transmit_DMA()
1448 MODIFY_REG(hospi->Instance->CR, OCTOSPI_CR_FMODE, OSPI_FUNCTIONAL_MODE_INDIRECT_WRITE); in HAL_OSPI_Transmit_DMA()
1451 __HAL_OSPI_CLEAR_FLAG(hospi, HAL_OSPI_FLAG_TE | HAL_OSPI_FLAG_TC); in HAL_OSPI_Transmit_DMA()
1454 hospi->State = HAL_OSPI_STATE_BUSY_TX; in HAL_OSPI_Transmit_DMA()
1457 hospi->hdma->XferCpltCallback = OSPI_DMACplt; in HAL_OSPI_Transmit_DMA()
1460 hospi->hdma->XferHalfCpltCallback = OSPI_DMAHalfCplt; in HAL_OSPI_Transmit_DMA()
1463 hospi->hdma->XferErrorCallback = OSPI_DMAError; in HAL_OSPI_Transmit_DMA()
1466 hospi->hdma->XferAbortCallback = NULL; in HAL_OSPI_Transmit_DMA()
1469 hospi->hdma->Init.Direction = DMA_MEMORY_TO_PERIPH; in HAL_OSPI_Transmit_DMA()
1470 MODIFY_REG(hospi->hdma->Instance->CCR, DMA_CCR_DIR, hospi->hdma->Init.Direction); in HAL_OSPI_Transmit_DMA()
1473 …if (HAL_DMA_Start_IT(hospi->hdma, (uint32_t)pData, (uint32_t)&hospi->Instance->DR, hospi->XferSize… in HAL_OSPI_Transmit_DMA()
1476 __HAL_OSPI_ENABLE_IT(hospi, HAL_OSPI_IT_TE); in HAL_OSPI_Transmit_DMA()
1479 SET_BIT(hospi->Instance->CR, OCTOSPI_CR_DMAEN); in HAL_OSPI_Transmit_DMA()
1484 hospi->ErrorCode = HAL_OSPI_ERROR_DMA; in HAL_OSPI_Transmit_DMA()
1485 hospi->State = HAL_OSPI_STATE_READY; in HAL_OSPI_Transmit_DMA()
1492 hospi->ErrorCode = HAL_OSPI_ERROR_INVALID_SEQUENCE; in HAL_OSPI_Transmit_DMA()
1511 HAL_StatusTypeDef HAL_OSPI_Receive_DMA(OSPI_HandleTypeDef *hospi, uint8_t *pData) in HAL_OSPI_Receive_DMA() argument
1514 uint32_t data_size = hospi->Instance->DLR + 1U; in HAL_OSPI_Receive_DMA()
1515 uint32_t addr_reg = hospi->Instance->AR; in HAL_OSPI_Receive_DMA()
1516 uint32_t ir_reg = hospi->Instance->IR; in HAL_OSPI_Receive_DMA()
1521 hospi->ErrorCode = HAL_OSPI_ERROR_INVALID_PARAM; in HAL_OSPI_Receive_DMA()
1526 if (hospi->State == HAL_OSPI_STATE_CMD_CFG) in HAL_OSPI_Receive_DMA()
1529 if (hospi->hdma->Init.PeriphDataAlignment == DMA_PDATAALIGN_BYTE) in HAL_OSPI_Receive_DMA()
1531 hospi->XferCount = data_size; in HAL_OSPI_Receive_DMA()
1533 else if (hospi->hdma->Init.PeriphDataAlignment == DMA_PDATAALIGN_HALFWORD) in HAL_OSPI_Receive_DMA()
1535 if (((data_size % 2U) != 0U) || ((hospi->Init.FifoThreshold % 2U) != 0U)) in HAL_OSPI_Receive_DMA()
1539 hospi->ErrorCode = HAL_OSPI_ERROR_INVALID_PARAM; in HAL_OSPI_Receive_DMA()
1544 hospi->XferCount = (data_size >> 1); in HAL_OSPI_Receive_DMA()
1547 else if (hospi->hdma->Init.PeriphDataAlignment == DMA_PDATAALIGN_WORD) in HAL_OSPI_Receive_DMA()
1549 if (((data_size % 4U) != 0U) || ((hospi->Init.FifoThreshold % 4U) != 0U)) in HAL_OSPI_Receive_DMA()
1553 hospi->ErrorCode = HAL_OSPI_ERROR_INVALID_PARAM; in HAL_OSPI_Receive_DMA()
1558 hospi->XferCount = (data_size >> 2); in HAL_OSPI_Receive_DMA()
1568 hospi->XferSize = hospi->XferCount; in HAL_OSPI_Receive_DMA()
1569 hospi->pBuffPtr = pData; in HAL_OSPI_Receive_DMA()
1572 MODIFY_REG(hospi->Instance->CR, OCTOSPI_CR_FMODE, OSPI_FUNCTIONAL_MODE_INDIRECT_READ); in HAL_OSPI_Receive_DMA()
1575 __HAL_OSPI_CLEAR_FLAG(hospi, HAL_OSPI_FLAG_TE | HAL_OSPI_FLAG_TC); in HAL_OSPI_Receive_DMA()
1578 hospi->State = HAL_OSPI_STATE_BUSY_RX; in HAL_OSPI_Receive_DMA()
1581 hospi->hdma->XferCpltCallback = OSPI_DMACplt; in HAL_OSPI_Receive_DMA()
1584 hospi->hdma->XferHalfCpltCallback = OSPI_DMAHalfCplt; in HAL_OSPI_Receive_DMA()
1587 hospi->hdma->XferErrorCallback = OSPI_DMAError; in HAL_OSPI_Receive_DMA()
1590 hospi->hdma->XferAbortCallback = NULL; in HAL_OSPI_Receive_DMA()
1593 hospi->hdma->Init.Direction = DMA_PERIPH_TO_MEMORY; in HAL_OSPI_Receive_DMA()
1594 MODIFY_REG(hospi->hdma->Instance->CCR, DMA_CCR_DIR, hospi->hdma->Init.Direction); in HAL_OSPI_Receive_DMA()
1597 …if (HAL_DMA_Start_IT(hospi->hdma, (uint32_t)&hospi->Instance->DR, (uint32_t)pData, hospi->XferSize… in HAL_OSPI_Receive_DMA()
1600 __HAL_OSPI_ENABLE_IT(hospi, HAL_OSPI_IT_TE); in HAL_OSPI_Receive_DMA()
1603 if (hospi->Init.MemoryType == HAL_OSPI_MEMTYPE_HYPERBUS) in HAL_OSPI_Receive_DMA()
1605 WRITE_REG(hospi->Instance->AR, addr_reg); in HAL_OSPI_Receive_DMA()
1609 if (READ_BIT(hospi->Instance->CCR, OCTOSPI_CCR_ADMODE) != HAL_OSPI_ADDRESS_NONE) in HAL_OSPI_Receive_DMA()
1611 WRITE_REG(hospi->Instance->AR, addr_reg); in HAL_OSPI_Receive_DMA()
1615 WRITE_REG(hospi->Instance->IR, ir_reg); in HAL_OSPI_Receive_DMA()
1620 SET_BIT(hospi->Instance->CR, OCTOSPI_CR_DMAEN); in HAL_OSPI_Receive_DMA()
1625 hospi->ErrorCode = HAL_OSPI_ERROR_DMA; in HAL_OSPI_Receive_DMA()
1626 hospi->State = HAL_OSPI_STATE_READY; in HAL_OSPI_Receive_DMA()
1633 hospi->ErrorCode = HAL_OSPI_ERROR_INVALID_SEQUENCE; in HAL_OSPI_Receive_DMA()
1649 HAL_StatusTypeDef HAL_OSPI_AutoPolling(OSPI_HandleTypeDef *hospi, OSPI_AutoPollingTypeDef *cfg, uin… in HAL_OSPI_AutoPolling() argument
1653 uint32_t addr_reg = hospi->Instance->AR; in HAL_OSPI_AutoPolling()
1654 uint32_t ir_reg = hospi->Instance->IR; in HAL_OSPI_AutoPolling()
1656 uint32_t dlr_reg = hospi->Instance->DLR; in HAL_OSPI_AutoPolling()
1666 …if ((hospi->State == HAL_OSPI_STATE_CMD_CFG) && (cfg->AutomaticStop == HAL_OSPI_AUTOMATIC_STOP_ENA… in HAL_OSPI_AutoPolling()
1669 status = OSPI_WaitFlagStateUntilTimeout(hospi, HAL_OSPI_FLAG_BUSY, RESET, tickstart, Timeout); in HAL_OSPI_AutoPolling()
1674 WRITE_REG(hospi->Instance->PSMAR, cfg->Match); in HAL_OSPI_AutoPolling()
1675 WRITE_REG(hospi->Instance->PSMKR, cfg->Mask); in HAL_OSPI_AutoPolling()
1676 WRITE_REG(hospi->Instance->PIR, cfg->Interval); in HAL_OSPI_AutoPolling()
1677 MODIFY_REG(hospi->Instance->CR, (OCTOSPI_CR_PMM | OCTOSPI_CR_APMS | OCTOSPI_CR_FMODE), in HAL_OSPI_AutoPolling()
1681 if (hospi->Init.MemoryType == HAL_OSPI_MEMTYPE_HYPERBUS) in HAL_OSPI_AutoPolling()
1683 WRITE_REG(hospi->Instance->AR, addr_reg); in HAL_OSPI_AutoPolling()
1687 if (READ_BIT(hospi->Instance->CCR, OCTOSPI_CCR_ADMODE) != HAL_OSPI_ADDRESS_NONE) in HAL_OSPI_AutoPolling()
1689 WRITE_REG(hospi->Instance->AR, addr_reg); in HAL_OSPI_AutoPolling()
1693 WRITE_REG(hospi->Instance->IR, ir_reg); in HAL_OSPI_AutoPolling()
1698 status = OSPI_WaitFlagStateUntilTimeout(hospi, HAL_OSPI_FLAG_SM, SET, tickstart, Timeout); in HAL_OSPI_AutoPolling()
1703 __HAL_OSPI_CLEAR_FLAG(hospi, HAL_OSPI_FLAG_SM); in HAL_OSPI_AutoPolling()
1706 hospi->State = HAL_OSPI_STATE_READY; in HAL_OSPI_AutoPolling()
1713 hospi->ErrorCode = HAL_OSPI_ERROR_INVALID_SEQUENCE; in HAL_OSPI_AutoPolling()
1727 HAL_StatusTypeDef HAL_OSPI_AutoPolling_IT(OSPI_HandleTypeDef *hospi, OSPI_AutoPollingTypeDef *cfg) in HAL_OSPI_AutoPolling_IT() argument
1731 uint32_t addr_reg = hospi->Instance->AR; in HAL_OSPI_AutoPolling_IT()
1732 uint32_t ir_reg = hospi->Instance->IR; in HAL_OSPI_AutoPolling_IT()
1734 uint32_t dlr_reg = hospi->Instance->DLR; in HAL_OSPI_AutoPolling_IT()
1744 if (hospi->State == HAL_OSPI_STATE_CMD_CFG) in HAL_OSPI_AutoPolling_IT()
1747 …status = OSPI_WaitFlagStateUntilTimeout(hospi, HAL_OSPI_FLAG_BUSY, RESET, tickstart, hospi->Timeou… in HAL_OSPI_AutoPolling_IT()
1752 WRITE_REG(hospi->Instance->PSMAR, cfg->Match); in HAL_OSPI_AutoPolling_IT()
1753 WRITE_REG(hospi->Instance->PSMKR, cfg->Mask); in HAL_OSPI_AutoPolling_IT()
1754 WRITE_REG(hospi->Instance->PIR, cfg->Interval); in HAL_OSPI_AutoPolling_IT()
1755 MODIFY_REG(hospi->Instance->CR, (OCTOSPI_CR_PMM | OCTOSPI_CR_APMS | OCTOSPI_CR_FMODE), in HAL_OSPI_AutoPolling_IT()
1759 __HAL_OSPI_CLEAR_FLAG(hospi, HAL_OSPI_FLAG_TE | HAL_OSPI_FLAG_SM); in HAL_OSPI_AutoPolling_IT()
1762 hospi->State = HAL_OSPI_STATE_BUSY_AUTO_POLLING; in HAL_OSPI_AutoPolling_IT()
1765 __HAL_OSPI_ENABLE_IT(hospi, HAL_OSPI_IT_SM | HAL_OSPI_IT_TE); in HAL_OSPI_AutoPolling_IT()
1768 if (hospi->Init.MemoryType == HAL_OSPI_MEMTYPE_HYPERBUS) in HAL_OSPI_AutoPolling_IT()
1770 WRITE_REG(hospi->Instance->AR, addr_reg); in HAL_OSPI_AutoPolling_IT()
1774 if (READ_BIT(hospi->Instance->CCR, OCTOSPI_CCR_ADMODE) != HAL_OSPI_ADDRESS_NONE) in HAL_OSPI_AutoPolling_IT()
1776 WRITE_REG(hospi->Instance->AR, addr_reg); in HAL_OSPI_AutoPolling_IT()
1780 WRITE_REG(hospi->Instance->IR, ir_reg); in HAL_OSPI_AutoPolling_IT()
1788 hospi->ErrorCode = HAL_OSPI_ERROR_INVALID_SEQUENCE; in HAL_OSPI_AutoPolling_IT()
1802 HAL_StatusTypeDef HAL_OSPI_MemoryMapped(OSPI_HandleTypeDef *hospi, OSPI_MemoryMappedTypeDef *cfg) in HAL_OSPI_MemoryMapped() argument
1811 if (hospi->State == HAL_OSPI_STATE_CMD_CFG) in HAL_OSPI_MemoryMapped()
1814 …status = OSPI_WaitFlagStateUntilTimeout(hospi, HAL_OSPI_FLAG_BUSY, RESET, tickstart, hospi->Timeou… in HAL_OSPI_MemoryMapped()
1819 hospi->State = HAL_OSPI_STATE_BUSY_MEM_MAPPED; in HAL_OSPI_MemoryMapped()
1826 WRITE_REG(hospi->Instance->LPTR, cfg->TimeOutPeriod); in HAL_OSPI_MemoryMapped()
1829 __HAL_OSPI_CLEAR_FLAG(hospi, HAL_OSPI_FLAG_TO); in HAL_OSPI_MemoryMapped()
1832 __HAL_OSPI_ENABLE_IT(hospi, HAL_OSPI_IT_TO); in HAL_OSPI_MemoryMapped()
1836 MODIFY_REG(hospi->Instance->CR, (OCTOSPI_CR_TCEN | OCTOSPI_CR_FMODE), in HAL_OSPI_MemoryMapped()
1843 hospi->ErrorCode = HAL_OSPI_ERROR_INVALID_SEQUENCE; in HAL_OSPI_MemoryMapped()
1855 __weak void HAL_OSPI_ErrorCallback(OSPI_HandleTypeDef *hospi) in HAL_OSPI_ErrorCallback() argument
1858 UNUSED(hospi); in HAL_OSPI_ErrorCallback()
1870 __weak void HAL_OSPI_AbortCpltCallback(OSPI_HandleTypeDef *hospi) in HAL_OSPI_AbortCpltCallback() argument
1873 UNUSED(hospi); in HAL_OSPI_AbortCpltCallback()
1885 __weak void HAL_OSPI_FifoThresholdCallback(OSPI_HandleTypeDef *hospi) in HAL_OSPI_FifoThresholdCallback() argument
1888 UNUSED(hospi); in HAL_OSPI_FifoThresholdCallback()
1900 __weak void HAL_OSPI_CmdCpltCallback(OSPI_HandleTypeDef *hospi) in HAL_OSPI_CmdCpltCallback() argument
1903 UNUSED(hospi); in HAL_OSPI_CmdCpltCallback()
1915 __weak void HAL_OSPI_RxCpltCallback(OSPI_HandleTypeDef *hospi) in HAL_OSPI_RxCpltCallback() argument
1918 UNUSED(hospi); in HAL_OSPI_RxCpltCallback()
1930 __weak void HAL_OSPI_TxCpltCallback(OSPI_HandleTypeDef *hospi) in HAL_OSPI_TxCpltCallback() argument
1933 UNUSED(hospi); in HAL_OSPI_TxCpltCallback()
1945 __weak void HAL_OSPI_RxHalfCpltCallback(OSPI_HandleTypeDef *hospi) in HAL_OSPI_RxHalfCpltCallback() argument
1948 UNUSED(hospi); in HAL_OSPI_RxHalfCpltCallback()
1960 __weak void HAL_OSPI_TxHalfCpltCallback(OSPI_HandleTypeDef *hospi) in HAL_OSPI_TxHalfCpltCallback() argument
1963 UNUSED(hospi); in HAL_OSPI_TxHalfCpltCallback()
1975 __weak void HAL_OSPI_StatusMatchCallback(OSPI_HandleTypeDef *hospi) in HAL_OSPI_StatusMatchCallback() argument
1978 UNUSED(hospi); in HAL_OSPI_StatusMatchCallback()
1990 __weak void HAL_OSPI_TimeOutCallback(OSPI_HandleTypeDef *hospi) in HAL_OSPI_TimeOutCallback() argument
1993 UNUSED(hospi); in HAL_OSPI_TimeOutCallback()
2022 HAL_StatusTypeDef HAL_OSPI_RegisterCallback(OSPI_HandleTypeDef *hospi, HAL_OSPI_CallbackIDTypeDef C… in HAL_OSPI_RegisterCallback() argument
2030 hospi->ErrorCode |= HAL_OSPI_ERROR_INVALID_CALLBACK; in HAL_OSPI_RegisterCallback()
2034 if (hospi->State == HAL_OSPI_STATE_READY) in HAL_OSPI_RegisterCallback()
2039 hospi->ErrorCallback = pCallback; in HAL_OSPI_RegisterCallback()
2042 hospi->AbortCpltCallback = pCallback; in HAL_OSPI_RegisterCallback()
2045 hospi->FifoThresholdCallback = pCallback; in HAL_OSPI_RegisterCallback()
2048 hospi->CmdCpltCallback = pCallback; in HAL_OSPI_RegisterCallback()
2051 hospi->RxCpltCallback = pCallback; in HAL_OSPI_RegisterCallback()
2054 hospi->TxCpltCallback = pCallback; in HAL_OSPI_RegisterCallback()
2057 hospi->RxHalfCpltCallback = pCallback; in HAL_OSPI_RegisterCallback()
2060 hospi->TxHalfCpltCallback = pCallback; in HAL_OSPI_RegisterCallback()
2063 hospi->StatusMatchCallback = pCallback; in HAL_OSPI_RegisterCallback()
2066 hospi->TimeOutCallback = pCallback; in HAL_OSPI_RegisterCallback()
2069 hospi->MspInitCallback = pCallback; in HAL_OSPI_RegisterCallback()
2072 hospi->MspDeInitCallback = pCallback; in HAL_OSPI_RegisterCallback()
2076 hospi->ErrorCode |= HAL_OSPI_ERROR_INVALID_CALLBACK; in HAL_OSPI_RegisterCallback()
2082 else if (hospi->State == HAL_OSPI_STATE_RESET) in HAL_OSPI_RegisterCallback()
2087 hospi->MspInitCallback = pCallback; in HAL_OSPI_RegisterCallback()
2090 hospi->MspDeInitCallback = pCallback; in HAL_OSPI_RegisterCallback()
2094 hospi->ErrorCode |= HAL_OSPI_ERROR_INVALID_CALLBACK; in HAL_OSPI_RegisterCallback()
2103 hospi->ErrorCode |= HAL_OSPI_ERROR_INVALID_CALLBACK; in HAL_OSPI_RegisterCallback()
2131 HAL_StatusTypeDef HAL_OSPI_UnRegisterCallback(OSPI_HandleTypeDef *hospi, HAL_OSPI_CallbackIDTypeDef… in HAL_OSPI_UnRegisterCallback() argument
2135 if (hospi->State == HAL_OSPI_STATE_READY) in HAL_OSPI_UnRegisterCallback()
2140 hospi->ErrorCallback = HAL_OSPI_ErrorCallback; in HAL_OSPI_UnRegisterCallback()
2143 hospi->AbortCpltCallback = HAL_OSPI_AbortCpltCallback; in HAL_OSPI_UnRegisterCallback()
2146 hospi->FifoThresholdCallback = HAL_OSPI_FifoThresholdCallback; in HAL_OSPI_UnRegisterCallback()
2149 hospi->CmdCpltCallback = HAL_OSPI_CmdCpltCallback; in HAL_OSPI_UnRegisterCallback()
2152 hospi->RxCpltCallback = HAL_OSPI_RxCpltCallback; in HAL_OSPI_UnRegisterCallback()
2155 hospi->TxCpltCallback = HAL_OSPI_TxCpltCallback; in HAL_OSPI_UnRegisterCallback()
2158 hospi->RxHalfCpltCallback = HAL_OSPI_RxHalfCpltCallback; in HAL_OSPI_UnRegisterCallback()
2161 hospi->TxHalfCpltCallback = HAL_OSPI_TxHalfCpltCallback; in HAL_OSPI_UnRegisterCallback()
2164 hospi->StatusMatchCallback = HAL_OSPI_StatusMatchCallback; in HAL_OSPI_UnRegisterCallback()
2167 hospi->TimeOutCallback = HAL_OSPI_TimeOutCallback; in HAL_OSPI_UnRegisterCallback()
2170 hospi->MspInitCallback = HAL_OSPI_MspInit; in HAL_OSPI_UnRegisterCallback()
2173 hospi->MspDeInitCallback = HAL_OSPI_MspDeInit; in HAL_OSPI_UnRegisterCallback()
2177 hospi->ErrorCode |= HAL_OSPI_ERROR_INVALID_CALLBACK; in HAL_OSPI_UnRegisterCallback()
2183 else if (hospi->State == HAL_OSPI_STATE_RESET) in HAL_OSPI_UnRegisterCallback()
2188 hospi->MspInitCallback = HAL_OSPI_MspInit; in HAL_OSPI_UnRegisterCallback()
2191 hospi->MspDeInitCallback = HAL_OSPI_MspDeInit; in HAL_OSPI_UnRegisterCallback()
2195 hospi->ErrorCode |= HAL_OSPI_ERROR_INVALID_CALLBACK; in HAL_OSPI_UnRegisterCallback()
2204 hospi->ErrorCode |= HAL_OSPI_ERROR_INVALID_CALLBACK; in HAL_OSPI_UnRegisterCallback()
2241 HAL_StatusTypeDef HAL_OSPI_Abort(OSPI_HandleTypeDef *hospi) in HAL_OSPI_Abort() argument
2248 state = hospi->State; in HAL_OSPI_Abort()
2252 if ((hospi->Instance->CR & OCTOSPI_CR_DMAEN) != 0U) in HAL_OSPI_Abort()
2255 CLEAR_BIT(hospi->Instance->CR, OCTOSPI_CR_DMAEN); in HAL_OSPI_Abort()
2258 status = HAL_DMA_Abort(hospi->hdma); in HAL_OSPI_Abort()
2261 hospi->ErrorCode = HAL_OSPI_ERROR_DMA; in HAL_OSPI_Abort()
2265 if (__HAL_OSPI_GET_FLAG(hospi, HAL_OSPI_FLAG_BUSY) != RESET) in HAL_OSPI_Abort()
2268 SET_BIT(hospi->Instance->CR, OCTOSPI_CR_ABORT); in HAL_OSPI_Abort()
2271 … status = OSPI_WaitFlagStateUntilTimeout(hospi, HAL_OSPI_FLAG_TC, SET, tickstart, hospi->Timeout); in HAL_OSPI_Abort()
2276 __HAL_OSPI_CLEAR_FLAG(hospi, HAL_OSPI_FLAG_TC); in HAL_OSPI_Abort()
2279 …status = OSPI_WaitFlagStateUntilTimeout(hospi, HAL_OSPI_FLAG_BUSY, RESET, tickstart, hospi->Timeou… in HAL_OSPI_Abort()
2284 hospi->State = HAL_OSPI_STATE_READY; in HAL_OSPI_Abort()
2291 hospi->State = HAL_OSPI_STATE_READY; in HAL_OSPI_Abort()
2297 hospi->ErrorCode = HAL_OSPI_ERROR_INVALID_SEQUENCE; in HAL_OSPI_Abort()
2309 HAL_StatusTypeDef HAL_OSPI_Abort_IT(OSPI_HandleTypeDef *hospi) in HAL_OSPI_Abort_IT() argument
2315 state = hospi->State; in HAL_OSPI_Abort_IT()
2319 …__HAL_OSPI_DISABLE_IT(hospi, (HAL_OSPI_IT_TO | HAL_OSPI_IT_SM | HAL_OSPI_IT_FT | HAL_OSPI_IT_TC | … in HAL_OSPI_Abort_IT()
2322 hospi->State = HAL_OSPI_STATE_ABORT; in HAL_OSPI_Abort_IT()
2325 if ((hospi->Instance->CR & OCTOSPI_CR_DMAEN) != 0U) in HAL_OSPI_Abort_IT()
2328 CLEAR_BIT(hospi->Instance->CR, OCTOSPI_CR_DMAEN); in HAL_OSPI_Abort_IT()
2331 hospi->hdma->XferAbortCallback = OSPI_DMAAbortCplt; in HAL_OSPI_Abort_IT()
2332 if (HAL_DMA_Abort_IT(hospi->hdma) != HAL_OK) in HAL_OSPI_Abort_IT()
2335 hospi->State = HAL_OSPI_STATE_READY; in HAL_OSPI_Abort_IT()
2339 hospi->AbortCpltCallback(hospi); in HAL_OSPI_Abort_IT()
2341 HAL_OSPI_AbortCpltCallback(hospi); in HAL_OSPI_Abort_IT()
2347 if (__HAL_OSPI_GET_FLAG(hospi, HAL_OSPI_FLAG_BUSY) != RESET) in HAL_OSPI_Abort_IT()
2350 __HAL_OSPI_CLEAR_FLAG(hospi, HAL_OSPI_FLAG_TC); in HAL_OSPI_Abort_IT()
2353 __HAL_OSPI_ENABLE_IT(hospi, HAL_OSPI_IT_TC); in HAL_OSPI_Abort_IT()
2356 SET_BIT(hospi->Instance->CR, OCTOSPI_CR_ABORT); in HAL_OSPI_Abort_IT()
2361 hospi->State = HAL_OSPI_STATE_READY; in HAL_OSPI_Abort_IT()
2365 hospi->AbortCpltCallback(hospi); in HAL_OSPI_Abort_IT()
2367 HAL_OSPI_AbortCpltCallback(hospi); in HAL_OSPI_Abort_IT()
2375 hospi->ErrorCode = HAL_OSPI_ERROR_INVALID_SEQUENCE; in HAL_OSPI_Abort_IT()
2387 HAL_StatusTypeDef HAL_OSPI_SetFifoThreshold(OSPI_HandleTypeDef *hospi, uint32_t Threshold) in HAL_OSPI_SetFifoThreshold() argument
2392 if ((hospi->State & OSPI_BUSY_STATE_MASK) == 0U) in HAL_OSPI_SetFifoThreshold()
2395 hospi->Init.FifoThreshold = Threshold; in HAL_OSPI_SetFifoThreshold()
2398 …MODIFY_REG(hospi->Instance->CR, OCTOSPI_CR_FTHRES, ((hospi->Init.FifoThreshold - 1U) << OCTOSPI_CR… in HAL_OSPI_SetFifoThreshold()
2404 hospi->ErrorCode = HAL_OSPI_ERROR_INVALID_SEQUENCE; in HAL_OSPI_SetFifoThreshold()
2415 uint32_t HAL_OSPI_GetFifoThreshold(const OSPI_HandleTypeDef *hospi) in HAL_OSPI_GetFifoThreshold() argument
2417 return ((READ_BIT(hospi->Instance->CR, OCTOSPI_CR_FTHRES) >> OCTOSPI_CR_FTHRES_Pos) + 1U); in HAL_OSPI_GetFifoThreshold()
2425 HAL_StatusTypeDef HAL_OSPI_SetTimeout(OSPI_HandleTypeDef *hospi, uint32_t Timeout) in HAL_OSPI_SetTimeout() argument
2427 hospi->Timeout = Timeout; in HAL_OSPI_SetTimeout()
2436 uint32_t HAL_OSPI_GetError(const OSPI_HandleTypeDef *hospi) in HAL_OSPI_GetError() argument
2438 return hospi->ErrorCode; in HAL_OSPI_GetError()
2446 uint32_t HAL_OSPI_GetState(const OSPI_HandleTypeDef *hospi) in HAL_OSPI_GetState() argument
2449 return hospi->State; in HAL_OSPI_GetState()
2467 OSPI_HandleTypeDef *hospi = (OSPI_HandleTypeDef *)(hdma->Parent); in OSPI_DMACplt() local
2468 hospi->XferCount = 0; in OSPI_DMACplt()
2471 CLEAR_BIT(hospi->Instance->CR, OCTOSPI_CR_DMAEN); in OSPI_DMACplt()
2477 __HAL_OSPI_ENABLE_IT(hospi, HAL_OSPI_IT_TC); in OSPI_DMACplt()
2487 OSPI_HandleTypeDef *hospi = (OSPI_HandleTypeDef *)(hdma->Parent); in OSPI_DMAHalfCplt() local
2488 hospi->XferCount = (hospi->XferCount >> 1); in OSPI_DMAHalfCplt()
2490 if (hospi->State == HAL_OSPI_STATE_BUSY_RX) in OSPI_DMAHalfCplt()
2493 hospi->RxHalfCpltCallback(hospi); in OSPI_DMAHalfCplt()
2495 HAL_OSPI_RxHalfCpltCallback(hospi); in OSPI_DMAHalfCplt()
2501 hospi->TxHalfCpltCallback(hospi); in OSPI_DMAHalfCplt()
2503 HAL_OSPI_TxHalfCpltCallback(hospi); in OSPI_DMAHalfCplt()
2515 OSPI_HandleTypeDef *hospi = (OSPI_HandleTypeDef *)(hdma->Parent); in OSPI_DMAError() local
2516 hospi->XferCount = 0; in OSPI_DMAError()
2517 hospi->ErrorCode = HAL_OSPI_ERROR_DMA; in OSPI_DMAError()
2520 CLEAR_BIT(hospi->Instance->CR, OCTOSPI_CR_DMAEN); in OSPI_DMAError()
2523 if (HAL_OSPI_Abort_IT(hospi) != HAL_OK) in OSPI_DMAError()
2526 __HAL_OSPI_DISABLE_IT(hospi, HAL_OSPI_IT_TC | HAL_OSPI_IT_FT | HAL_OSPI_IT_TE); in OSPI_DMAError()
2529 hospi->State = HAL_OSPI_STATE_READY; in OSPI_DMAError()
2533 hospi->ErrorCallback(hospi); in OSPI_DMAError()
2535 HAL_OSPI_ErrorCallback(hospi); in OSPI_DMAError()
2547 OSPI_HandleTypeDef *hospi = (OSPI_HandleTypeDef *)(hdma->Parent); in OSPI_DMAAbortCplt() local
2548 hospi->XferCount = 0; in OSPI_DMAAbortCplt()
2551 if (hospi->State == HAL_OSPI_STATE_ABORT) in OSPI_DMAAbortCplt()
2554 if (__HAL_OSPI_GET_FLAG(hospi, HAL_OSPI_FLAG_BUSY) != RESET) in OSPI_DMAAbortCplt()
2557 __HAL_OSPI_CLEAR_FLAG(hospi, HAL_OSPI_FLAG_TC); in OSPI_DMAAbortCplt()
2560 __HAL_OSPI_ENABLE_IT(hospi, HAL_OSPI_IT_TC); in OSPI_DMAAbortCplt()
2563 SET_BIT(hospi->Instance->CR, OCTOSPI_CR_ABORT); in OSPI_DMAAbortCplt()
2568 hospi->State = HAL_OSPI_STATE_READY; in OSPI_DMAAbortCplt()
2572 hospi->AbortCpltCallback(hospi); in OSPI_DMAAbortCplt()
2574 HAL_OSPI_AbortCpltCallback(hospi); in OSPI_DMAAbortCplt()
2582 hospi->State = HAL_OSPI_STATE_READY; in OSPI_DMAAbortCplt()
2586 hospi->ErrorCallback(hospi); in OSPI_DMAAbortCplt()
2588 HAL_OSPI_ErrorCallback(hospi); in OSPI_DMAAbortCplt()
2602 static HAL_StatusTypeDef OSPI_WaitFlagStateUntilTimeout(OSPI_HandleTypeDef *hospi, uint32_t Flag, in OSPI_WaitFlagStateUntilTimeout() argument
2606 while ((__HAL_OSPI_GET_FLAG(hospi, Flag)) != State) in OSPI_WaitFlagStateUntilTimeout()
2613 hospi->State = HAL_OSPI_STATE_ERROR; in OSPI_WaitFlagStateUntilTimeout()
2614 hospi->ErrorCode |= HAL_OSPI_ERROR_TIMEOUT; in OSPI_WaitFlagStateUntilTimeout()
2629 static HAL_StatusTypeDef OSPI_ConfigCmd(OSPI_HandleTypeDef *hospi, OSPI_RegularCmdTypeDef *cmd) in OSPI_ConfigCmd() argument
2638 MODIFY_REG(hospi->Instance->CR, OCTOSPI_CR_FMODE, 0U); in OSPI_ConfigCmd()
2641 if (hospi->Init.DualQuad == HAL_OSPI_DUALQUAD_DISABLE) in OSPI_ConfigCmd()
2643 MODIFY_REG(hospi->Instance->CR, OCTOSPI_CR_FSEL, cmd->FlashId); in OSPI_ConfigCmd()
2648 ccr_reg = &(hospi->Instance->WCCR); in OSPI_ConfigCmd()
2649 tcr_reg = &(hospi->Instance->WTCR); in OSPI_ConfigCmd()
2650 ir_reg = &(hospi->Instance->WIR); in OSPI_ConfigCmd()
2651 abr_reg = &(hospi->Instance->WABR); in OSPI_ConfigCmd()
2655 ccr_reg = &(hospi->Instance->WPCCR); in OSPI_ConfigCmd()
2656 tcr_reg = &(hospi->Instance->WPTCR); in OSPI_ConfigCmd()
2657 ir_reg = &(hospi->Instance->WPIR); in OSPI_ConfigCmd()
2658 abr_reg = &(hospi->Instance->WPABR); in OSPI_ConfigCmd()
2662 ccr_reg = &(hospi->Instance->CCR); in OSPI_ConfigCmd()
2663 tcr_reg = &(hospi->Instance->TCR); in OSPI_ConfigCmd()
2664 ir_reg = &(hospi->Instance->IR); in OSPI_ConfigCmd()
2665 abr_reg = &(hospi->Instance->ABR); in OSPI_ConfigCmd()
2689 hospi->Instance->DLR = (cmd->NbData - 1U); in OSPI_ConfigCmd()
2720 if ((hospi->Init.DelayHoldQuarterCycle == HAL_OSPI_DHQC_ENABLE) && in OSPI_ConfigCmd()
2731 hospi->Instance->AR = cmd->Address; in OSPI_ConfigCmd()
2754 if ((hospi->Init.DelayHoldQuarterCycle == HAL_OSPI_DHQC_ENABLE) && in OSPI_ConfigCmd()
2790 hospi->Instance->AR = cmd->Address; in OSPI_ConfigCmd()
2796 hospi->ErrorCode = HAL_OSPI_ERROR_INVALID_PARAM; in OSPI_ConfigCmd()