Lines Matching refs:hospi
283 static HAL_StatusTypeDef OSPI_WaitFlagStateUntilTimeout(OSPI_HandleTypeDef *hospi, uint32_t Flag, F…
285 static HAL_StatusTypeDef OSPI_ConfigCmd(OSPI_HandleTypeDef *hospi, OSPI_RegularCmdTypeDef *cmd);
319 HAL_StatusTypeDef HAL_OSPI_Init(OSPI_HandleTypeDef *hospi) in HAL_OSPI_Init() argument
325 if (hospi == NULL) in HAL_OSPI_Init()
333 assert_param(IS_OSPI_FIFO_THRESHOLD(hospi->Init.FifoThreshold)); in HAL_OSPI_Init()
334 assert_param(IS_OSPI_DUALQUAD_MODE(hospi->Init.DualQuad)); in HAL_OSPI_Init()
335 assert_param(IS_OSPI_MEMORY_TYPE(hospi->Init.MemoryType)); in HAL_OSPI_Init()
336 assert_param(IS_OSPI_DEVICE_SIZE(hospi->Init.DeviceSize)); in HAL_OSPI_Init()
337 assert_param(IS_OSPI_CS_HIGH_TIME(hospi->Init.ChipSelectHighTime)); in HAL_OSPI_Init()
338 assert_param(IS_OSPI_FREE_RUN_CLK(hospi->Init.FreeRunningClock)); in HAL_OSPI_Init()
339 assert_param(IS_OSPI_CLOCK_MODE(hospi->Init.ClockMode)); in HAL_OSPI_Init()
340 assert_param(IS_OSPI_CLK_PRESCALER(hospi->Init.ClockPrescaler)); in HAL_OSPI_Init()
341 assert_param(IS_OSPI_SAMPLE_SHIFTING(hospi->Init.SampleShifting)); in HAL_OSPI_Init()
342 assert_param(IS_OSPI_DHQC(hospi->Init.DelayHoldQuarterCycle)); in HAL_OSPI_Init()
343 assert_param(IS_OSPI_CS_BOUNDARY(hospi->Init.ChipSelectBoundary)); in HAL_OSPI_Init()
344 assert_param(IS_OSPI_DLYBYP(hospi->Init.DelayBlockBypass)); in HAL_OSPI_Init()
346 assert_param(IS_OSPI_MAXTRAN(hospi->Init.MaxTran)); in HAL_OSPI_Init()
350 hospi->ErrorCode = HAL_OSPI_ERROR_NONE; in HAL_OSPI_Init()
353 if (hospi->State == HAL_OSPI_STATE_RESET) in HAL_OSPI_Init()
357 hospi->ErrorCallback = HAL_OSPI_ErrorCallback; in HAL_OSPI_Init()
358 hospi->AbortCpltCallback = HAL_OSPI_AbortCpltCallback; in HAL_OSPI_Init()
359 hospi->FifoThresholdCallback = HAL_OSPI_FifoThresholdCallback; in HAL_OSPI_Init()
360 hospi->CmdCpltCallback = HAL_OSPI_CmdCpltCallback; in HAL_OSPI_Init()
361 hospi->RxCpltCallback = HAL_OSPI_RxCpltCallback; in HAL_OSPI_Init()
362 hospi->TxCpltCallback = HAL_OSPI_TxCpltCallback; in HAL_OSPI_Init()
363 hospi->RxHalfCpltCallback = HAL_OSPI_RxHalfCpltCallback; in HAL_OSPI_Init()
364 hospi->TxHalfCpltCallback = HAL_OSPI_TxHalfCpltCallback; in HAL_OSPI_Init()
365 hospi->StatusMatchCallback = HAL_OSPI_StatusMatchCallback; in HAL_OSPI_Init()
366 hospi->TimeOutCallback = HAL_OSPI_TimeOutCallback; in HAL_OSPI_Init()
368 if (hospi->MspInitCallback == NULL) in HAL_OSPI_Init()
370 hospi->MspInitCallback = HAL_OSPI_MspInit; in HAL_OSPI_Init()
374 hospi->MspInitCallback(hospi); in HAL_OSPI_Init()
377 HAL_OSPI_MspInit(hospi); in HAL_OSPI_Init()
381 (void)HAL_OSPI_SetTimeout(hospi, HAL_OSPI_TIMEOUT_DEFAULT_VALUE); in HAL_OSPI_Init()
385 MODIFY_REG(hospi->Instance->DCR1, in HAL_OSPI_Init()
388 … (hospi->Init.MemoryType | ((hospi->Init.DeviceSize - 1U) << OCTOSPI_DCR1_DEVSIZE_Pos) | in HAL_OSPI_Init()
389 ((hospi->Init.ChipSelectHighTime - 1U) << OCTOSPI_DCR1_CSHT_Pos) | in HAL_OSPI_Init()
390 hospi->Init.DelayBlockBypass | hospi->Init.ClockMode)); in HAL_OSPI_Init()
394 hospi->Instance->DCR3 = ((hospi->Init.ChipSelectBoundary << OCTOSPI_DCR3_CSBOUND_Pos) | in HAL_OSPI_Init()
395 (hospi->Init.MaxTran << OCTOSPI_DCR3_MAXTRAN_Pos)); in HAL_OSPI_Init()
398 hospi->Instance->DCR3 = (hospi->Init.ChipSelectBoundary << OCTOSPI_DCR3_CSBOUND_Pos); in HAL_OSPI_Init()
403 hospi->Instance->DCR4 = hospi->Init.Refresh; in HAL_OSPI_Init()
407 …MODIFY_REG(hospi->Instance->CR, OCTOSPI_CR_FTHRES, ((hospi->Init.FifoThreshold - 1U) << OCTOSPI_CR… in HAL_OSPI_Init()
410 …status = OSPI_WaitFlagStateUntilTimeout(hospi, HAL_OSPI_FLAG_BUSY, RESET, tickstart, hospi->Timeou… in HAL_OSPI_Init()
415 MODIFY_REG(hospi->Instance->DCR2, OCTOSPI_DCR2_PRESCALER, in HAL_OSPI_Init()
416 ((hospi->Init.ClockPrescaler - 1U) << OCTOSPI_DCR2_PRESCALER_Pos)); in HAL_OSPI_Init()
419 MODIFY_REG(hospi->Instance->CR, OCTOSPI_CR_DQM, hospi->Init.DualQuad); in HAL_OSPI_Init()
422 MODIFY_REG(hospi->Instance->TCR, (OCTOSPI_TCR_SSHIFT | OCTOSPI_TCR_DHQC), in HAL_OSPI_Init()
423 (hospi->Init.SampleShifting | hospi->Init.DelayHoldQuarterCycle)); in HAL_OSPI_Init()
426 __HAL_OSPI_ENABLE(hospi); in HAL_OSPI_Init()
429 if (hospi->Init.FreeRunningClock == HAL_OSPI_FREERUNCLK_ENABLE) in HAL_OSPI_Init()
431 SET_BIT(hospi->Instance->DCR1, OCTOSPI_DCR1_FRCK); in HAL_OSPI_Init()
435 if (hospi->Init.MemoryType == HAL_OSPI_MEMTYPE_HYPERBUS) in HAL_OSPI_Init()
437 hospi->State = HAL_OSPI_STATE_HYPERBUS_INIT; in HAL_OSPI_Init()
441 hospi->State = HAL_OSPI_STATE_READY; in HAL_OSPI_Init()
456 __weak void HAL_OSPI_MspInit(OSPI_HandleTypeDef *hospi) in HAL_OSPI_MspInit() argument
459 UNUSED(hospi); in HAL_OSPI_MspInit()
471 HAL_StatusTypeDef HAL_OSPI_DeInit(OSPI_HandleTypeDef *hospi) in HAL_OSPI_DeInit() argument
476 if (hospi == NULL) in HAL_OSPI_DeInit()
484 __HAL_OSPI_DISABLE(hospi); in HAL_OSPI_DeInit()
487 CLEAR_BIT(hospi->Instance->DCR1, OCTOSPI_DCR1_FRCK); in HAL_OSPI_DeInit()
490 if (hospi->MspDeInitCallback == NULL) in HAL_OSPI_DeInit()
492 hospi->MspDeInitCallback = HAL_OSPI_MspDeInit; in HAL_OSPI_DeInit()
496 hospi->MspDeInitCallback(hospi); in HAL_OSPI_DeInit()
499 HAL_OSPI_MspDeInit(hospi); in HAL_OSPI_DeInit()
503 hospi->State = HAL_OSPI_STATE_RESET; in HAL_OSPI_DeInit()
514 __weak void HAL_OSPI_MspDeInit(OSPI_HandleTypeDef *hospi) in HAL_OSPI_MspDeInit() argument
517 UNUSED(hospi); in HAL_OSPI_MspDeInit()
554 void HAL_OSPI_IRQHandler(OSPI_HandleTypeDef *hospi) in HAL_OSPI_IRQHandler() argument
556 __IO uint32_t *data_reg = &hospi->Instance->DR; in HAL_OSPI_IRQHandler()
557 uint32_t flag = hospi->Instance->SR; in HAL_OSPI_IRQHandler()
558 uint32_t itsource = hospi->Instance->CR; in HAL_OSPI_IRQHandler()
559 uint32_t currentstate = hospi->State; in HAL_OSPI_IRQHandler()
567 *((__IO uint8_t *)data_reg) = *hospi->pBuffPtr; in HAL_OSPI_IRQHandler()
568 hospi->pBuffPtr++; in HAL_OSPI_IRQHandler()
569 hospi->XferCount--; in HAL_OSPI_IRQHandler()
574 *hospi->pBuffPtr = *((__IO uint8_t *)data_reg); in HAL_OSPI_IRQHandler()
575 hospi->pBuffPtr++; in HAL_OSPI_IRQHandler()
576 hospi->XferCount--; in HAL_OSPI_IRQHandler()
583 if (hospi->XferCount == 0U) in HAL_OSPI_IRQHandler()
587 __HAL_OSPI_DISABLE_IT(hospi, HAL_OSPI_IT_FT); in HAL_OSPI_IRQHandler()
592 hospi->FifoThresholdCallback(hospi); in HAL_OSPI_IRQHandler()
594 HAL_OSPI_FifoThresholdCallback(hospi); in HAL_OSPI_IRQHandler()
602 if ((hospi->XferCount > 0U) && ((flag & OCTOSPI_SR_FLEVEL) != 0U)) in HAL_OSPI_IRQHandler()
605 *hospi->pBuffPtr = *((__IO uint8_t *)data_reg); in HAL_OSPI_IRQHandler()
606 hospi->pBuffPtr++; in HAL_OSPI_IRQHandler()
607 hospi->XferCount--; in HAL_OSPI_IRQHandler()
609 else if (hospi->XferCount == 0U) in HAL_OSPI_IRQHandler()
612 hospi->Instance->FCR = HAL_OSPI_FLAG_TC; in HAL_OSPI_IRQHandler()
615 __HAL_OSPI_DISABLE_IT(hospi, HAL_OSPI_IT_TC | HAL_OSPI_IT_FT | HAL_OSPI_IT_TE); in HAL_OSPI_IRQHandler()
618 hospi->State = HAL_OSPI_STATE_READY; in HAL_OSPI_IRQHandler()
622 hospi->RxCpltCallback(hospi); in HAL_OSPI_IRQHandler()
624 HAL_OSPI_RxCpltCallback(hospi); in HAL_OSPI_IRQHandler()
635 hospi->Instance->FCR = HAL_OSPI_FLAG_TC; in HAL_OSPI_IRQHandler()
638 __HAL_OSPI_DISABLE_IT(hospi, HAL_OSPI_IT_TC | HAL_OSPI_IT_FT | HAL_OSPI_IT_TE); in HAL_OSPI_IRQHandler()
641 hospi->State = HAL_OSPI_STATE_READY; in HAL_OSPI_IRQHandler()
647 hospi->TxCpltCallback(hospi); in HAL_OSPI_IRQHandler()
649 HAL_OSPI_TxCpltCallback(hospi); in HAL_OSPI_IRQHandler()
656 hospi->CmdCpltCallback(hospi); in HAL_OSPI_IRQHandler()
658 HAL_OSPI_CmdCpltCallback(hospi); in HAL_OSPI_IRQHandler()
663 if (hospi->ErrorCode == HAL_OSPI_ERROR_NONE) in HAL_OSPI_IRQHandler()
668 hospi->AbortCpltCallback(hospi); in HAL_OSPI_IRQHandler()
670 HAL_OSPI_AbortCpltCallback(hospi); in HAL_OSPI_IRQHandler()
678 hospi->ErrorCallback(hospi); in HAL_OSPI_IRQHandler()
680 HAL_OSPI_ErrorCallback(hospi); in HAL_OSPI_IRQHandler()
694 hospi->Instance->FCR = HAL_OSPI_FLAG_SM; in HAL_OSPI_IRQHandler()
697 if ((hospi->Instance->CR & OCTOSPI_CR_APMS) != 0U) in HAL_OSPI_IRQHandler()
700 __HAL_OSPI_DISABLE_IT(hospi, HAL_OSPI_IT_SM | HAL_OSPI_IT_TE); in HAL_OSPI_IRQHandler()
703 hospi->State = HAL_OSPI_STATE_READY; in HAL_OSPI_IRQHandler()
708 hospi->StatusMatchCallback(hospi); in HAL_OSPI_IRQHandler()
710 HAL_OSPI_StatusMatchCallback(hospi); in HAL_OSPI_IRQHandler()
717 hospi->Instance->FCR = HAL_OSPI_FLAG_TE; in HAL_OSPI_IRQHandler()
720 …__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()
723 hospi->ErrorCode = HAL_OSPI_ERROR_TRANSFER; in HAL_OSPI_IRQHandler()
726 if ((hospi->Instance->CR & OCTOSPI_CR_DMAEN) != 0U) in HAL_OSPI_IRQHandler()
729 CLEAR_BIT(hospi->Instance->CR, OCTOSPI_CR_DMAEN); in HAL_OSPI_IRQHandler()
732 hospi->hdma->XferAbortCallback = OSPI_DMAAbortCplt; in HAL_OSPI_IRQHandler()
733 if (HAL_DMA_Abort_IT(hospi->hdma) != HAL_OK) in HAL_OSPI_IRQHandler()
736 hospi->State = HAL_OSPI_STATE_READY; in HAL_OSPI_IRQHandler()
740 hospi->ErrorCallback(hospi); in HAL_OSPI_IRQHandler()
742 HAL_OSPI_ErrorCallback(hospi); in HAL_OSPI_IRQHandler()
749 hospi->State = HAL_OSPI_STATE_READY; in HAL_OSPI_IRQHandler()
753 hospi->ErrorCallback(hospi); in HAL_OSPI_IRQHandler()
755 HAL_OSPI_ErrorCallback(hospi); in HAL_OSPI_IRQHandler()
763 hospi->Instance->FCR = HAL_OSPI_FLAG_TO; in HAL_OSPI_IRQHandler()
767 hospi->TimeOutCallback(hospi); in HAL_OSPI_IRQHandler()
769 HAL_OSPI_TimeOutCallback(hospi); in HAL_OSPI_IRQHandler()
785 HAL_StatusTypeDef HAL_OSPI_Command(OSPI_HandleTypeDef *hospi, OSPI_RegularCmdTypeDef *cmd, uint32_t… in HAL_OSPI_Command() argument
794 if (hospi->Init.DualQuad == HAL_OSPI_DUALQUAD_DISABLE) in HAL_OSPI_Command()
835 state = hospi->State; in HAL_OSPI_Command()
836 …if (((state == HAL_OSPI_STATE_READY) && (hospi->Init.MemoryType != HAL_OSPI_MEMTYPE_HYPERB… in HAL_OSPI_Command()
841 status = OSPI_WaitFlagStateUntilTimeout(hospi, HAL_OSPI_FLAG_BUSY, RESET, tickstart, Timeout); in HAL_OSPI_Command()
846 hospi->ErrorCode = HAL_OSPI_ERROR_NONE; in HAL_OSPI_Command()
849 status = OSPI_ConfigCmd(hospi, cmd); in HAL_OSPI_Command()
857 status = OSPI_WaitFlagStateUntilTimeout(hospi, HAL_OSPI_FLAG_TC, SET, tickstart, Timeout); in HAL_OSPI_Command()
859 __HAL_OSPI_CLEAR_FLAG(hospi, HAL_OSPI_FLAG_TC); in HAL_OSPI_Command()
866 hospi->State = HAL_OSPI_STATE_CMD_CFG; in HAL_OSPI_Command()
870 if (hospi->State == HAL_OSPI_STATE_WRITE_CMD_CFG) in HAL_OSPI_Command()
872 hospi->State = HAL_OSPI_STATE_CMD_CFG; in HAL_OSPI_Command()
876 hospi->State = HAL_OSPI_STATE_READ_CMD_CFG; in HAL_OSPI_Command()
881 if (hospi->State == HAL_OSPI_STATE_READ_CMD_CFG) in HAL_OSPI_Command()
883 hospi->State = HAL_OSPI_STATE_CMD_CFG; in HAL_OSPI_Command()
887 hospi->State = HAL_OSPI_STATE_WRITE_CMD_CFG; in HAL_OSPI_Command()
897 hospi->ErrorCode = HAL_OSPI_ERROR_INVALID_SEQUENCE; in HAL_OSPI_Command()
911 HAL_StatusTypeDef HAL_OSPI_Command_IT(OSPI_HandleTypeDef *hospi, OSPI_RegularCmdTypeDef *cmd) in HAL_OSPI_Command_IT() argument
919 if (hospi->Init.DualQuad == HAL_OSPI_DUALQUAD_DISABLE) in HAL_OSPI_Command_IT()
957 …if ((hospi->State == HAL_OSPI_STATE_READY) && (cmd->OperationType == HAL_OSPI_OPTYPE_COMMON_C… in HAL_OSPI_Command_IT()
958 … (cmd->DataMode == HAL_OSPI_DATA_NONE) && (hospi->Init.MemoryType != HAL_OSPI_MEMTYPE_HYPERBUS)) in HAL_OSPI_Command_IT()
961 …status = OSPI_WaitFlagStateUntilTimeout(hospi, HAL_OSPI_FLAG_BUSY, RESET, tickstart, hospi->Timeou… in HAL_OSPI_Command_IT()
966 hospi->ErrorCode = HAL_OSPI_ERROR_NONE; in HAL_OSPI_Command_IT()
969 __HAL_OSPI_CLEAR_FLAG(hospi, HAL_OSPI_FLAG_TE | HAL_OSPI_FLAG_TC); in HAL_OSPI_Command_IT()
972 status = OSPI_ConfigCmd(hospi, cmd); in HAL_OSPI_Command_IT()
977 hospi->State = HAL_OSPI_STATE_BUSY_CMD; in HAL_OSPI_Command_IT()
980 __HAL_OSPI_ENABLE_IT(hospi, HAL_OSPI_IT_TC | HAL_OSPI_IT_TE); in HAL_OSPI_Command_IT()
987 hospi->ErrorCode = HAL_OSPI_ERROR_INVALID_SEQUENCE; in HAL_OSPI_Command_IT()
1001 HAL_StatusTypeDef HAL_OSPI_HyperbusCfg(OSPI_HandleTypeDef *hospi, OSPI_HyperbusCfgTypeDef *cfg, uin… in HAL_OSPI_HyperbusCfg() argument
1014 state = hospi->State; in HAL_OSPI_HyperbusCfg()
1018 status = OSPI_WaitFlagStateUntilTimeout(hospi, HAL_OSPI_FLAG_BUSY, RESET, tickstart, Timeout); in HAL_OSPI_HyperbusCfg()
1023 WRITE_REG(hospi->Instance->HLCR, ((cfg->RWRecoveryTime << OCTOSPI_HLCR_TRWR_Pos) | in HAL_OSPI_HyperbusCfg()
1028 hospi->State = HAL_OSPI_STATE_READY; in HAL_OSPI_HyperbusCfg()
1034 hospi->ErrorCode = HAL_OSPI_ERROR_INVALID_SEQUENCE; in HAL_OSPI_HyperbusCfg()
1048 HAL_StatusTypeDef HAL_OSPI_HyperbusCmd(OSPI_HandleTypeDef *hospi, OSPI_HyperbusCmdTypeDef *cmd, uin… in HAL_OSPI_HyperbusCmd() argument
1060 …if ((hospi->State == HAL_OSPI_STATE_READY) && (hospi->Init.MemoryType == HAL_OSPI_MEMTYPE_HYPERBUS… in HAL_OSPI_HyperbusCmd()
1063 status = OSPI_WaitFlagStateUntilTimeout(hospi, HAL_OSPI_FLAG_BUSY, RESET, tickstart, Timeout); in HAL_OSPI_HyperbusCmd()
1068 MODIFY_REG(hospi->Instance->CR, OCTOSPI_CR_FMODE, 0U); in HAL_OSPI_HyperbusCmd()
1071 MODIFY_REG(hospi->Instance->DCR1, OCTOSPI_DCR1_MTYP_0, cmd->AddressSpace); in HAL_OSPI_HyperbusCmd()
1077 WRITE_REG(hospi->Instance->CCR, (cmd->DQSMode | OCTOSPI_CCR_DDTR | OCTOSPI_CCR_DMODE_2 | in HAL_OSPI_HyperbusCmd()
1079 WRITE_REG(hospi->Instance->WCCR, (cmd->DQSMode | OCTOSPI_WCCR_DDTR | OCTOSPI_WCCR_DMODE_2 | in HAL_OSPI_HyperbusCmd()
1083 WRITE_REG(hospi->Instance->DLR, (cmd->NbData - 1U)); in HAL_OSPI_HyperbusCmd()
1086 WRITE_REG(hospi->Instance->AR, cmd->Address); in HAL_OSPI_HyperbusCmd()
1089 hospi->State = HAL_OSPI_STATE_CMD_CFG; in HAL_OSPI_HyperbusCmd()
1095 hospi->ErrorCode = HAL_OSPI_ERROR_INVALID_SEQUENCE; in HAL_OSPI_HyperbusCmd()
1110 HAL_StatusTypeDef HAL_OSPI_Transmit(OSPI_HandleTypeDef *hospi, uint8_t *pData, uint32_t Timeout) in HAL_OSPI_Transmit() argument
1114 __IO uint32_t *data_reg = &hospi->Instance->DR; in HAL_OSPI_Transmit()
1120 hospi->ErrorCode = HAL_OSPI_ERROR_INVALID_PARAM; in HAL_OSPI_Transmit()
1125 if (hospi->State == HAL_OSPI_STATE_CMD_CFG) in HAL_OSPI_Transmit()
1128 hospi->XferCount = READ_REG(hospi->Instance->DLR) + 1U; in HAL_OSPI_Transmit()
1129 hospi->XferSize = hospi->XferCount; in HAL_OSPI_Transmit()
1130 hospi->pBuffPtr = pData; in HAL_OSPI_Transmit()
1133 MODIFY_REG(hospi->Instance->CR, OCTOSPI_CR_FMODE, OSPI_FUNCTIONAL_MODE_INDIRECT_WRITE); in HAL_OSPI_Transmit()
1138 status = OSPI_WaitFlagStateUntilTimeout(hospi, HAL_OSPI_FLAG_FT, SET, tickstart, Timeout); in HAL_OSPI_Transmit()
1145 *((__IO uint8_t *)data_reg) = *hospi->pBuffPtr; in HAL_OSPI_Transmit()
1146 hospi->pBuffPtr++; in HAL_OSPI_Transmit()
1147 hospi->XferCount--; in HAL_OSPI_Transmit()
1149 while (hospi->XferCount > 0U); in HAL_OSPI_Transmit()
1154 status = OSPI_WaitFlagStateUntilTimeout(hospi, HAL_OSPI_FLAG_TC, SET, tickstart, Timeout); in HAL_OSPI_Transmit()
1159 __HAL_OSPI_CLEAR_FLAG(hospi, HAL_OSPI_FLAG_TC); in HAL_OSPI_Transmit()
1162 hospi->State = HAL_OSPI_STATE_READY; in HAL_OSPI_Transmit()
1169 hospi->ErrorCode = HAL_OSPI_ERROR_INVALID_SEQUENCE; in HAL_OSPI_Transmit()
1185 HAL_StatusTypeDef HAL_OSPI_Receive(OSPI_HandleTypeDef *hospi, uint8_t *pData, uint32_t Timeout) in HAL_OSPI_Receive() argument
1189 __IO uint32_t *data_reg = &hospi->Instance->DR; in HAL_OSPI_Receive()
1190 uint32_t addr_reg = hospi->Instance->AR; in HAL_OSPI_Receive()
1191 uint32_t ir_reg = hospi->Instance->IR; in HAL_OSPI_Receive()
1197 hospi->ErrorCode = HAL_OSPI_ERROR_INVALID_PARAM; in HAL_OSPI_Receive()
1202 if (hospi->State == HAL_OSPI_STATE_CMD_CFG) in HAL_OSPI_Receive()
1205 hospi->XferCount = READ_REG(hospi->Instance->DLR) + 1U; in HAL_OSPI_Receive()
1206 hospi->XferSize = hospi->XferCount; in HAL_OSPI_Receive()
1207 hospi->pBuffPtr = pData; in HAL_OSPI_Receive()
1210 MODIFY_REG(hospi->Instance->CR, OCTOSPI_CR_FMODE, OSPI_FUNCTIONAL_MODE_INDIRECT_READ); in HAL_OSPI_Receive()
1213 if (hospi->Init.MemoryType == HAL_OSPI_MEMTYPE_HYPERBUS) in HAL_OSPI_Receive()
1215 WRITE_REG(hospi->Instance->AR, addr_reg); in HAL_OSPI_Receive()
1219 if (READ_BIT(hospi->Instance->CCR, OCTOSPI_CCR_ADMODE) != HAL_OSPI_ADDRESS_NONE) in HAL_OSPI_Receive()
1221 WRITE_REG(hospi->Instance->AR, addr_reg); in HAL_OSPI_Receive()
1225 WRITE_REG(hospi->Instance->IR, ir_reg); in HAL_OSPI_Receive()
1232 …status = OSPI_WaitFlagStateUntilTimeout(hospi, (HAL_OSPI_FLAG_FT | HAL_OSPI_FLAG_TC), SET, ticksta… in HAL_OSPI_Receive()
1239 *hospi->pBuffPtr = *((__IO uint8_t *)data_reg); in HAL_OSPI_Receive()
1240 hospi->pBuffPtr++; in HAL_OSPI_Receive()
1241 hospi->XferCount--; in HAL_OSPI_Receive()
1243 while (hospi->XferCount > 0U); in HAL_OSPI_Receive()
1248 status = OSPI_WaitFlagStateUntilTimeout(hospi, HAL_OSPI_FLAG_TC, SET, tickstart, Timeout); in HAL_OSPI_Receive()
1253 __HAL_OSPI_CLEAR_FLAG(hospi, HAL_OSPI_FLAG_TC); in HAL_OSPI_Receive()
1256 hospi->State = HAL_OSPI_STATE_READY; in HAL_OSPI_Receive()
1263 hospi->ErrorCode = HAL_OSPI_ERROR_INVALID_SEQUENCE; in HAL_OSPI_Receive()
1278 HAL_StatusTypeDef HAL_OSPI_Transmit_IT(OSPI_HandleTypeDef *hospi, uint8_t *pData) in HAL_OSPI_Transmit_IT() argument
1286 hospi->ErrorCode = HAL_OSPI_ERROR_INVALID_PARAM; in HAL_OSPI_Transmit_IT()
1291 if (hospi->State == HAL_OSPI_STATE_CMD_CFG) in HAL_OSPI_Transmit_IT()
1294 hospi->XferCount = READ_REG(hospi->Instance->DLR) + 1U; in HAL_OSPI_Transmit_IT()
1295 hospi->XferSize = hospi->XferCount; in HAL_OSPI_Transmit_IT()
1296 hospi->pBuffPtr = pData; in HAL_OSPI_Transmit_IT()
1299 MODIFY_REG(hospi->Instance->CR, OCTOSPI_CR_FMODE, OSPI_FUNCTIONAL_MODE_INDIRECT_WRITE); in HAL_OSPI_Transmit_IT()
1302 __HAL_OSPI_CLEAR_FLAG(hospi, HAL_OSPI_FLAG_TE | HAL_OSPI_FLAG_TC); in HAL_OSPI_Transmit_IT()
1305 hospi->State = HAL_OSPI_STATE_BUSY_TX; in HAL_OSPI_Transmit_IT()
1308 __HAL_OSPI_ENABLE_IT(hospi, HAL_OSPI_IT_TC | HAL_OSPI_IT_FT | HAL_OSPI_IT_TE); in HAL_OSPI_Transmit_IT()
1313 hospi->ErrorCode = HAL_OSPI_ERROR_INVALID_SEQUENCE; in HAL_OSPI_Transmit_IT()
1328 HAL_StatusTypeDef HAL_OSPI_Receive_IT(OSPI_HandleTypeDef *hospi, uint8_t *pData) in HAL_OSPI_Receive_IT() argument
1331 uint32_t addr_reg = hospi->Instance->AR; in HAL_OSPI_Receive_IT()
1332 uint32_t ir_reg = hospi->Instance->IR; in HAL_OSPI_Receive_IT()
1338 hospi->ErrorCode = HAL_OSPI_ERROR_INVALID_PARAM; in HAL_OSPI_Receive_IT()
1343 if (hospi->State == HAL_OSPI_STATE_CMD_CFG) in HAL_OSPI_Receive_IT()
1346 hospi->XferCount = READ_REG(hospi->Instance->DLR) + 1U; in HAL_OSPI_Receive_IT()
1347 hospi->XferSize = hospi->XferCount; in HAL_OSPI_Receive_IT()
1348 hospi->pBuffPtr = pData; in HAL_OSPI_Receive_IT()
1351 MODIFY_REG(hospi->Instance->CR, OCTOSPI_CR_FMODE, OSPI_FUNCTIONAL_MODE_INDIRECT_READ); in HAL_OSPI_Receive_IT()
1354 __HAL_OSPI_CLEAR_FLAG(hospi, HAL_OSPI_FLAG_TE | HAL_OSPI_FLAG_TC); in HAL_OSPI_Receive_IT()
1357 hospi->State = HAL_OSPI_STATE_BUSY_RX; in HAL_OSPI_Receive_IT()
1360 __HAL_OSPI_ENABLE_IT(hospi, HAL_OSPI_IT_TC | HAL_OSPI_IT_FT | HAL_OSPI_IT_TE); in HAL_OSPI_Receive_IT()
1363 if (hospi->Init.MemoryType == HAL_OSPI_MEMTYPE_HYPERBUS) in HAL_OSPI_Receive_IT()
1365 WRITE_REG(hospi->Instance->AR, addr_reg); in HAL_OSPI_Receive_IT()
1369 if (READ_BIT(hospi->Instance->CCR, OCTOSPI_CCR_ADMODE) != HAL_OSPI_ADDRESS_NONE) in HAL_OSPI_Receive_IT()
1371 WRITE_REG(hospi->Instance->AR, addr_reg); in HAL_OSPI_Receive_IT()
1375 WRITE_REG(hospi->Instance->IR, ir_reg); in HAL_OSPI_Receive_IT()
1382 hospi->ErrorCode = HAL_OSPI_ERROR_INVALID_SEQUENCE; in HAL_OSPI_Receive_IT()
1401 HAL_StatusTypeDef HAL_OSPI_Transmit_DMA(OSPI_HandleTypeDef *hospi, uint8_t *pData) in HAL_OSPI_Transmit_DMA() argument
1404 uint32_t data_size = hospi->Instance->DLR + 1U; in HAL_OSPI_Transmit_DMA()
1410 hospi->ErrorCode = HAL_OSPI_ERROR_INVALID_PARAM; in HAL_OSPI_Transmit_DMA()
1415 if (hospi->State == HAL_OSPI_STATE_CMD_CFG) in HAL_OSPI_Transmit_DMA()
1418 if (hospi->hdma->Init.PeriphDataAlignment == DMA_PDATAALIGN_BYTE) in HAL_OSPI_Transmit_DMA()
1420 hospi->XferCount = data_size; in HAL_OSPI_Transmit_DMA()
1422 else if (hospi->hdma->Init.PeriphDataAlignment == DMA_PDATAALIGN_HALFWORD) in HAL_OSPI_Transmit_DMA()
1424 if (((data_size % 2U) != 0U) || ((hospi->Init.FifoThreshold % 2U) != 0U)) in HAL_OSPI_Transmit_DMA()
1428 hospi->ErrorCode = HAL_OSPI_ERROR_INVALID_PARAM; in HAL_OSPI_Transmit_DMA()
1433 hospi->XferCount = (data_size >> 1); in HAL_OSPI_Transmit_DMA()
1436 else if (hospi->hdma->Init.PeriphDataAlignment == DMA_PDATAALIGN_WORD) in HAL_OSPI_Transmit_DMA()
1438 if (((data_size % 4U) != 0U) || ((hospi->Init.FifoThreshold % 4U) != 0U)) in HAL_OSPI_Transmit_DMA()
1442 hospi->ErrorCode = HAL_OSPI_ERROR_INVALID_PARAM; in HAL_OSPI_Transmit_DMA()
1447 hospi->XferCount = (data_size >> 2); in HAL_OSPI_Transmit_DMA()
1457 hospi->XferSize = hospi->XferCount; in HAL_OSPI_Transmit_DMA()
1458 hospi->pBuffPtr = pData; in HAL_OSPI_Transmit_DMA()
1461 MODIFY_REG(hospi->Instance->CR, OCTOSPI_CR_FMODE, OSPI_FUNCTIONAL_MODE_INDIRECT_WRITE); in HAL_OSPI_Transmit_DMA()
1464 __HAL_OSPI_CLEAR_FLAG(hospi, HAL_OSPI_FLAG_TE | HAL_OSPI_FLAG_TC); in HAL_OSPI_Transmit_DMA()
1467 hospi->State = HAL_OSPI_STATE_BUSY_TX; in HAL_OSPI_Transmit_DMA()
1470 hospi->hdma->XferCpltCallback = OSPI_DMACplt; in HAL_OSPI_Transmit_DMA()
1473 hospi->hdma->XferHalfCpltCallback = OSPI_DMAHalfCplt; in HAL_OSPI_Transmit_DMA()
1476 hospi->hdma->XferErrorCallback = OSPI_DMAError; in HAL_OSPI_Transmit_DMA()
1479 hospi->hdma->XferAbortCallback = NULL; in HAL_OSPI_Transmit_DMA()
1482 hospi->hdma->Init.Direction = DMA_MEMORY_TO_PERIPH; in HAL_OSPI_Transmit_DMA()
1483 MODIFY_REG(hospi->hdma->Instance->CCR, DMA_CCR_DIR, hospi->hdma->Init.Direction); in HAL_OSPI_Transmit_DMA()
1486 …if (HAL_DMA_Start_IT(hospi->hdma, (uint32_t)pData, (uint32_t)&hospi->Instance->DR, hospi->XferSize… in HAL_OSPI_Transmit_DMA()
1489 __HAL_OSPI_ENABLE_IT(hospi, HAL_OSPI_IT_TE); in HAL_OSPI_Transmit_DMA()
1492 SET_BIT(hospi->Instance->CR, OCTOSPI_CR_DMAEN); in HAL_OSPI_Transmit_DMA()
1497 hospi->ErrorCode = HAL_OSPI_ERROR_DMA; in HAL_OSPI_Transmit_DMA()
1498 hospi->State = HAL_OSPI_STATE_READY; in HAL_OSPI_Transmit_DMA()
1505 hospi->ErrorCode = HAL_OSPI_ERROR_INVALID_SEQUENCE; in HAL_OSPI_Transmit_DMA()
1524 HAL_StatusTypeDef HAL_OSPI_Receive_DMA(OSPI_HandleTypeDef *hospi, uint8_t *pData) in HAL_OSPI_Receive_DMA() argument
1527 uint32_t data_size = hospi->Instance->DLR + 1U; in HAL_OSPI_Receive_DMA()
1528 uint32_t addr_reg = hospi->Instance->AR; in HAL_OSPI_Receive_DMA()
1529 uint32_t ir_reg = hospi->Instance->IR; in HAL_OSPI_Receive_DMA()
1534 hospi->ErrorCode = HAL_OSPI_ERROR_INVALID_PARAM; in HAL_OSPI_Receive_DMA()
1539 if (hospi->State == HAL_OSPI_STATE_CMD_CFG) in HAL_OSPI_Receive_DMA()
1542 if (hospi->hdma->Init.PeriphDataAlignment == DMA_PDATAALIGN_BYTE) in HAL_OSPI_Receive_DMA()
1544 hospi->XferCount = data_size; in HAL_OSPI_Receive_DMA()
1546 else if (hospi->hdma->Init.PeriphDataAlignment == DMA_PDATAALIGN_HALFWORD) in HAL_OSPI_Receive_DMA()
1548 if (((data_size % 2U) != 0U) || ((hospi->Init.FifoThreshold % 2U) != 0U)) in HAL_OSPI_Receive_DMA()
1552 hospi->ErrorCode = HAL_OSPI_ERROR_INVALID_PARAM; in HAL_OSPI_Receive_DMA()
1557 hospi->XferCount = (data_size >> 1); in HAL_OSPI_Receive_DMA()
1560 else if (hospi->hdma->Init.PeriphDataAlignment == DMA_PDATAALIGN_WORD) in HAL_OSPI_Receive_DMA()
1562 if (((data_size % 4U) != 0U) || ((hospi->Init.FifoThreshold % 4U) != 0U)) in HAL_OSPI_Receive_DMA()
1566 hospi->ErrorCode = HAL_OSPI_ERROR_INVALID_PARAM; in HAL_OSPI_Receive_DMA()
1571 hospi->XferCount = (data_size >> 2); in HAL_OSPI_Receive_DMA()
1581 hospi->XferSize = hospi->XferCount; in HAL_OSPI_Receive_DMA()
1582 hospi->pBuffPtr = pData; in HAL_OSPI_Receive_DMA()
1585 MODIFY_REG(hospi->Instance->CR, OCTOSPI_CR_FMODE, OSPI_FUNCTIONAL_MODE_INDIRECT_READ); in HAL_OSPI_Receive_DMA()
1588 __HAL_OSPI_CLEAR_FLAG(hospi, HAL_OSPI_FLAG_TE | HAL_OSPI_FLAG_TC); in HAL_OSPI_Receive_DMA()
1591 hospi->State = HAL_OSPI_STATE_BUSY_RX; in HAL_OSPI_Receive_DMA()
1594 hospi->hdma->XferCpltCallback = OSPI_DMACplt; in HAL_OSPI_Receive_DMA()
1597 hospi->hdma->XferHalfCpltCallback = OSPI_DMAHalfCplt; in HAL_OSPI_Receive_DMA()
1600 hospi->hdma->XferErrorCallback = OSPI_DMAError; in HAL_OSPI_Receive_DMA()
1603 hospi->hdma->XferAbortCallback = NULL; in HAL_OSPI_Receive_DMA()
1606 hospi->hdma->Init.Direction = DMA_PERIPH_TO_MEMORY; in HAL_OSPI_Receive_DMA()
1607 MODIFY_REG(hospi->hdma->Instance->CCR, DMA_CCR_DIR, hospi->hdma->Init.Direction); in HAL_OSPI_Receive_DMA()
1610 …if (HAL_DMA_Start_IT(hospi->hdma, (uint32_t)&hospi->Instance->DR, (uint32_t)pData, hospi->XferSize… in HAL_OSPI_Receive_DMA()
1613 __HAL_OSPI_ENABLE_IT(hospi, HAL_OSPI_IT_TE); in HAL_OSPI_Receive_DMA()
1616 if (hospi->Init.MemoryType == HAL_OSPI_MEMTYPE_HYPERBUS) in HAL_OSPI_Receive_DMA()
1618 WRITE_REG(hospi->Instance->AR, addr_reg); in HAL_OSPI_Receive_DMA()
1622 if (READ_BIT(hospi->Instance->CCR, OCTOSPI_CCR_ADMODE) != HAL_OSPI_ADDRESS_NONE) in HAL_OSPI_Receive_DMA()
1624 WRITE_REG(hospi->Instance->AR, addr_reg); in HAL_OSPI_Receive_DMA()
1628 WRITE_REG(hospi->Instance->IR, ir_reg); in HAL_OSPI_Receive_DMA()
1633 SET_BIT(hospi->Instance->CR, OCTOSPI_CR_DMAEN); in HAL_OSPI_Receive_DMA()
1638 hospi->ErrorCode = HAL_OSPI_ERROR_DMA; in HAL_OSPI_Receive_DMA()
1639 hospi->State = HAL_OSPI_STATE_READY; in HAL_OSPI_Receive_DMA()
1646 hospi->ErrorCode = HAL_OSPI_ERROR_INVALID_SEQUENCE; in HAL_OSPI_Receive_DMA()
1663 HAL_StatusTypeDef HAL_OSPI_AutoPolling(OSPI_HandleTypeDef *hospi, OSPI_AutoPollingTypeDef *cfg, uin… in HAL_OSPI_AutoPolling() argument
1667 uint32_t addr_reg = hospi->Instance->AR; in HAL_OSPI_AutoPolling()
1668 uint32_t ir_reg = hospi->Instance->IR; in HAL_OSPI_AutoPolling()
1670 uint32_t dlr_reg = hospi->Instance->DLR; in HAL_OSPI_AutoPolling()
1680 …if ((hospi->State == HAL_OSPI_STATE_CMD_CFG) && (cfg->AutomaticStop == HAL_OSPI_AUTOMATIC_STOP_ENA… in HAL_OSPI_AutoPolling()
1683 status = OSPI_WaitFlagStateUntilTimeout(hospi, HAL_OSPI_FLAG_BUSY, RESET, tickstart, Timeout); in HAL_OSPI_AutoPolling()
1688 WRITE_REG(hospi->Instance->PSMAR, cfg->Match); in HAL_OSPI_AutoPolling()
1689 WRITE_REG(hospi->Instance->PSMKR, cfg->Mask); in HAL_OSPI_AutoPolling()
1690 WRITE_REG(hospi->Instance->PIR, cfg->Interval); in HAL_OSPI_AutoPolling()
1691 MODIFY_REG(hospi->Instance->CR, (OCTOSPI_CR_PMM | OCTOSPI_CR_APMS | OCTOSPI_CR_FMODE), in HAL_OSPI_AutoPolling()
1695 if (hospi->Init.MemoryType == HAL_OSPI_MEMTYPE_HYPERBUS) in HAL_OSPI_AutoPolling()
1697 WRITE_REG(hospi->Instance->AR, addr_reg); in HAL_OSPI_AutoPolling()
1701 if (READ_BIT(hospi->Instance->CCR, OCTOSPI_CCR_ADMODE) != HAL_OSPI_ADDRESS_NONE) in HAL_OSPI_AutoPolling()
1703 WRITE_REG(hospi->Instance->AR, addr_reg); in HAL_OSPI_AutoPolling()
1707 WRITE_REG(hospi->Instance->IR, ir_reg); in HAL_OSPI_AutoPolling()
1712 status = OSPI_WaitFlagStateUntilTimeout(hospi, HAL_OSPI_FLAG_SM, SET, tickstart, Timeout); in HAL_OSPI_AutoPolling()
1717 __HAL_OSPI_CLEAR_FLAG(hospi, HAL_OSPI_FLAG_SM); in HAL_OSPI_AutoPolling()
1720 hospi->State = HAL_OSPI_STATE_READY; in HAL_OSPI_AutoPolling()
1727 hospi->ErrorCode = HAL_OSPI_ERROR_INVALID_SEQUENCE; in HAL_OSPI_AutoPolling()
1742 HAL_StatusTypeDef HAL_OSPI_AutoPolling_IT(OSPI_HandleTypeDef *hospi, OSPI_AutoPollingTypeDef *cfg) in HAL_OSPI_AutoPolling_IT() argument
1746 uint32_t addr_reg = hospi->Instance->AR; in HAL_OSPI_AutoPolling_IT()
1747 uint32_t ir_reg = hospi->Instance->IR; in HAL_OSPI_AutoPolling_IT()
1749 uint32_t dlr_reg = hospi->Instance->DLR; in HAL_OSPI_AutoPolling_IT()
1759 if (hospi->State == HAL_OSPI_STATE_CMD_CFG) in HAL_OSPI_AutoPolling_IT()
1762 …status = OSPI_WaitFlagStateUntilTimeout(hospi, HAL_OSPI_FLAG_BUSY, RESET, tickstart, hospi->Timeou… in HAL_OSPI_AutoPolling_IT()
1767 WRITE_REG(hospi->Instance->PSMAR, cfg->Match); in HAL_OSPI_AutoPolling_IT()
1768 WRITE_REG(hospi->Instance->PSMKR, cfg->Mask); in HAL_OSPI_AutoPolling_IT()
1769 WRITE_REG(hospi->Instance->PIR, cfg->Interval); in HAL_OSPI_AutoPolling_IT()
1770 MODIFY_REG(hospi->Instance->CR, (OCTOSPI_CR_PMM | OCTOSPI_CR_APMS | OCTOSPI_CR_FMODE), in HAL_OSPI_AutoPolling_IT()
1774 __HAL_OSPI_CLEAR_FLAG(hospi, HAL_OSPI_FLAG_TE | HAL_OSPI_FLAG_SM); in HAL_OSPI_AutoPolling_IT()
1777 hospi->State = HAL_OSPI_STATE_BUSY_AUTO_POLLING; in HAL_OSPI_AutoPolling_IT()
1780 __HAL_OSPI_ENABLE_IT(hospi, HAL_OSPI_IT_SM | HAL_OSPI_IT_TE); in HAL_OSPI_AutoPolling_IT()
1783 if (hospi->Init.MemoryType == HAL_OSPI_MEMTYPE_HYPERBUS) in HAL_OSPI_AutoPolling_IT()
1785 WRITE_REG(hospi->Instance->AR, addr_reg); in HAL_OSPI_AutoPolling_IT()
1789 if (READ_BIT(hospi->Instance->CCR, OCTOSPI_CCR_ADMODE) != HAL_OSPI_ADDRESS_NONE) in HAL_OSPI_AutoPolling_IT()
1791 WRITE_REG(hospi->Instance->AR, addr_reg); in HAL_OSPI_AutoPolling_IT()
1795 WRITE_REG(hospi->Instance->IR, ir_reg); in HAL_OSPI_AutoPolling_IT()
1803 hospi->ErrorCode = HAL_OSPI_ERROR_INVALID_SEQUENCE; in HAL_OSPI_AutoPolling_IT()
1817 HAL_StatusTypeDef HAL_OSPI_MemoryMapped(OSPI_HandleTypeDef *hospi, OSPI_MemoryMappedTypeDef *cfg) in HAL_OSPI_MemoryMapped() argument
1826 if (hospi->State == HAL_OSPI_STATE_CMD_CFG) in HAL_OSPI_MemoryMapped()
1829 …status = OSPI_WaitFlagStateUntilTimeout(hospi, HAL_OSPI_FLAG_BUSY, RESET, tickstart, hospi->Timeou… in HAL_OSPI_MemoryMapped()
1834 hospi->State = HAL_OSPI_STATE_BUSY_MEM_MAPPED; in HAL_OSPI_MemoryMapped()
1841 WRITE_REG(hospi->Instance->LPTR, cfg->TimeOutPeriod); in HAL_OSPI_MemoryMapped()
1844 __HAL_OSPI_CLEAR_FLAG(hospi, HAL_OSPI_FLAG_TO); in HAL_OSPI_MemoryMapped()
1847 __HAL_OSPI_ENABLE_IT(hospi, HAL_OSPI_IT_TO); in HAL_OSPI_MemoryMapped()
1851 MODIFY_REG(hospi->Instance->CR, (OCTOSPI_CR_TCEN | OCTOSPI_CR_FMODE), in HAL_OSPI_MemoryMapped()
1858 hospi->ErrorCode = HAL_OSPI_ERROR_INVALID_SEQUENCE; in HAL_OSPI_MemoryMapped()
1870 __weak void HAL_OSPI_ErrorCallback(OSPI_HandleTypeDef *hospi) in HAL_OSPI_ErrorCallback() argument
1873 UNUSED(hospi); in HAL_OSPI_ErrorCallback()
1885 __weak void HAL_OSPI_AbortCpltCallback(OSPI_HandleTypeDef *hospi) in HAL_OSPI_AbortCpltCallback() argument
1888 UNUSED(hospi); in HAL_OSPI_AbortCpltCallback()
1900 __weak void HAL_OSPI_FifoThresholdCallback(OSPI_HandleTypeDef *hospi) in HAL_OSPI_FifoThresholdCallback() argument
1903 UNUSED(hospi); in HAL_OSPI_FifoThresholdCallback()
1915 __weak void HAL_OSPI_CmdCpltCallback(OSPI_HandleTypeDef *hospi) in HAL_OSPI_CmdCpltCallback() argument
1918 UNUSED(hospi); in HAL_OSPI_CmdCpltCallback()
1930 __weak void HAL_OSPI_RxCpltCallback(OSPI_HandleTypeDef *hospi) in HAL_OSPI_RxCpltCallback() argument
1933 UNUSED(hospi); in HAL_OSPI_RxCpltCallback()
1945 __weak void HAL_OSPI_TxCpltCallback(OSPI_HandleTypeDef *hospi) in HAL_OSPI_TxCpltCallback() argument
1948 UNUSED(hospi); in HAL_OSPI_TxCpltCallback()
1960 __weak void HAL_OSPI_RxHalfCpltCallback(OSPI_HandleTypeDef *hospi) in HAL_OSPI_RxHalfCpltCallback() argument
1963 UNUSED(hospi); in HAL_OSPI_RxHalfCpltCallback()
1975 __weak void HAL_OSPI_TxHalfCpltCallback(OSPI_HandleTypeDef *hospi) in HAL_OSPI_TxHalfCpltCallback() argument
1978 UNUSED(hospi); in HAL_OSPI_TxHalfCpltCallback()
1990 __weak void HAL_OSPI_StatusMatchCallback(OSPI_HandleTypeDef *hospi) in HAL_OSPI_StatusMatchCallback() argument
1993 UNUSED(hospi); in HAL_OSPI_StatusMatchCallback()
2005 __weak void HAL_OSPI_TimeOutCallback(OSPI_HandleTypeDef *hospi) in HAL_OSPI_TimeOutCallback() argument
2008 UNUSED(hospi); in HAL_OSPI_TimeOutCallback()
2037 HAL_StatusTypeDef HAL_OSPI_RegisterCallback(OSPI_HandleTypeDef *hospi, HAL_OSPI_CallbackIDTypeDef C… in HAL_OSPI_RegisterCallback() argument
2045 hospi->ErrorCode |= HAL_OSPI_ERROR_INVALID_CALLBACK; in HAL_OSPI_RegisterCallback()
2049 if (hospi->State == HAL_OSPI_STATE_READY) in HAL_OSPI_RegisterCallback()
2054 hospi->ErrorCallback = pCallback; in HAL_OSPI_RegisterCallback()
2057 hospi->AbortCpltCallback = pCallback; in HAL_OSPI_RegisterCallback()
2060 hospi->FifoThresholdCallback = pCallback; in HAL_OSPI_RegisterCallback()
2063 hospi->CmdCpltCallback = pCallback; in HAL_OSPI_RegisterCallback()
2066 hospi->RxCpltCallback = pCallback; in HAL_OSPI_RegisterCallback()
2069 hospi->TxCpltCallback = pCallback; in HAL_OSPI_RegisterCallback()
2072 hospi->RxHalfCpltCallback = pCallback; in HAL_OSPI_RegisterCallback()
2075 hospi->TxHalfCpltCallback = pCallback; in HAL_OSPI_RegisterCallback()
2078 hospi->StatusMatchCallback = pCallback; in HAL_OSPI_RegisterCallback()
2081 hospi->TimeOutCallback = pCallback; in HAL_OSPI_RegisterCallback()
2084 hospi->MspInitCallback = pCallback; in HAL_OSPI_RegisterCallback()
2087 hospi->MspDeInitCallback = pCallback; in HAL_OSPI_RegisterCallback()
2091 hospi->ErrorCode |= HAL_OSPI_ERROR_INVALID_CALLBACK; in HAL_OSPI_RegisterCallback()
2097 else if (hospi->State == HAL_OSPI_STATE_RESET) in HAL_OSPI_RegisterCallback()
2102 hospi->MspInitCallback = pCallback; in HAL_OSPI_RegisterCallback()
2105 hospi->MspDeInitCallback = pCallback; in HAL_OSPI_RegisterCallback()
2109 hospi->ErrorCode |= HAL_OSPI_ERROR_INVALID_CALLBACK; in HAL_OSPI_RegisterCallback()
2118 hospi->ErrorCode |= HAL_OSPI_ERROR_INVALID_CALLBACK; in HAL_OSPI_RegisterCallback()
2146 HAL_StatusTypeDef HAL_OSPI_UnRegisterCallback(OSPI_HandleTypeDef *hospi, HAL_OSPI_CallbackIDTypeDef… in HAL_OSPI_UnRegisterCallback() argument
2150 if (hospi->State == HAL_OSPI_STATE_READY) in HAL_OSPI_UnRegisterCallback()
2155 hospi->ErrorCallback = HAL_OSPI_ErrorCallback; in HAL_OSPI_UnRegisterCallback()
2158 hospi->AbortCpltCallback = HAL_OSPI_AbortCpltCallback; in HAL_OSPI_UnRegisterCallback()
2161 hospi->FifoThresholdCallback = HAL_OSPI_FifoThresholdCallback; in HAL_OSPI_UnRegisterCallback()
2164 hospi->CmdCpltCallback = HAL_OSPI_CmdCpltCallback; in HAL_OSPI_UnRegisterCallback()
2167 hospi->RxCpltCallback = HAL_OSPI_RxCpltCallback; in HAL_OSPI_UnRegisterCallback()
2170 hospi->TxCpltCallback = HAL_OSPI_TxCpltCallback; in HAL_OSPI_UnRegisterCallback()
2173 hospi->RxHalfCpltCallback = HAL_OSPI_RxHalfCpltCallback; in HAL_OSPI_UnRegisterCallback()
2176 hospi->TxHalfCpltCallback = HAL_OSPI_TxHalfCpltCallback; in HAL_OSPI_UnRegisterCallback()
2179 hospi->StatusMatchCallback = HAL_OSPI_StatusMatchCallback; in HAL_OSPI_UnRegisterCallback()
2182 hospi->TimeOutCallback = HAL_OSPI_TimeOutCallback; in HAL_OSPI_UnRegisterCallback()
2185 hospi->MspInitCallback = HAL_OSPI_MspInit; in HAL_OSPI_UnRegisterCallback()
2188 hospi->MspDeInitCallback = HAL_OSPI_MspDeInit; in HAL_OSPI_UnRegisterCallback()
2192 hospi->ErrorCode |= HAL_OSPI_ERROR_INVALID_CALLBACK; in HAL_OSPI_UnRegisterCallback()
2198 else if (hospi->State == HAL_OSPI_STATE_RESET) in HAL_OSPI_UnRegisterCallback()
2203 hospi->MspInitCallback = HAL_OSPI_MspInit; in HAL_OSPI_UnRegisterCallback()
2206 hospi->MspDeInitCallback = HAL_OSPI_MspDeInit; in HAL_OSPI_UnRegisterCallback()
2210 hospi->ErrorCode |= HAL_OSPI_ERROR_INVALID_CALLBACK; in HAL_OSPI_UnRegisterCallback()
2219 hospi->ErrorCode |= HAL_OSPI_ERROR_INVALID_CALLBACK; in HAL_OSPI_UnRegisterCallback()
2256 HAL_StatusTypeDef HAL_OSPI_Abort(OSPI_HandleTypeDef *hospi) in HAL_OSPI_Abort() argument
2263 state = hospi->State; in HAL_OSPI_Abort()
2267 if ((hospi->Instance->CR & OCTOSPI_CR_DMAEN) != 0U) in HAL_OSPI_Abort()
2270 CLEAR_BIT(hospi->Instance->CR, OCTOSPI_CR_DMAEN); in HAL_OSPI_Abort()
2273 status = HAL_DMA_Abort(hospi->hdma); in HAL_OSPI_Abort()
2276 hospi->ErrorCode = HAL_OSPI_ERROR_DMA; in HAL_OSPI_Abort()
2280 if (__HAL_OSPI_GET_FLAG(hospi, HAL_OSPI_FLAG_BUSY) != RESET) in HAL_OSPI_Abort()
2283 SET_BIT(hospi->Instance->CR, OCTOSPI_CR_ABORT); in HAL_OSPI_Abort()
2286 … status = OSPI_WaitFlagStateUntilTimeout(hospi, HAL_OSPI_FLAG_TC, SET, tickstart, hospi->Timeout); in HAL_OSPI_Abort()
2291 __HAL_OSPI_CLEAR_FLAG(hospi, HAL_OSPI_FLAG_TC); in HAL_OSPI_Abort()
2294 …status = OSPI_WaitFlagStateUntilTimeout(hospi, HAL_OSPI_FLAG_BUSY, RESET, tickstart, hospi->Timeou… in HAL_OSPI_Abort()
2299 hospi->State = HAL_OSPI_STATE_READY; in HAL_OSPI_Abort()
2306 hospi->State = HAL_OSPI_STATE_READY; in HAL_OSPI_Abort()
2312 hospi->ErrorCode = HAL_OSPI_ERROR_INVALID_SEQUENCE; in HAL_OSPI_Abort()
2324 HAL_StatusTypeDef HAL_OSPI_Abort_IT(OSPI_HandleTypeDef *hospi) in HAL_OSPI_Abort_IT() argument
2330 state = hospi->State; in HAL_OSPI_Abort_IT()
2334 …__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()
2337 hospi->State = HAL_OSPI_STATE_ABORT; in HAL_OSPI_Abort_IT()
2340 if ((hospi->Instance->CR & OCTOSPI_CR_DMAEN) != 0U) in HAL_OSPI_Abort_IT()
2343 CLEAR_BIT(hospi->Instance->CR, OCTOSPI_CR_DMAEN); in HAL_OSPI_Abort_IT()
2346 hospi->hdma->XferAbortCallback = OSPI_DMAAbortCplt; in HAL_OSPI_Abort_IT()
2347 if (HAL_DMA_Abort_IT(hospi->hdma) != HAL_OK) in HAL_OSPI_Abort_IT()
2350 hospi->State = HAL_OSPI_STATE_READY; in HAL_OSPI_Abort_IT()
2354 hospi->AbortCpltCallback(hospi); in HAL_OSPI_Abort_IT()
2356 HAL_OSPI_AbortCpltCallback(hospi); in HAL_OSPI_Abort_IT()
2362 if (__HAL_OSPI_GET_FLAG(hospi, HAL_OSPI_FLAG_BUSY) != RESET) in HAL_OSPI_Abort_IT()
2365 __HAL_OSPI_CLEAR_FLAG(hospi, HAL_OSPI_FLAG_TC); in HAL_OSPI_Abort_IT()
2368 __HAL_OSPI_ENABLE_IT(hospi, HAL_OSPI_IT_TC); in HAL_OSPI_Abort_IT()
2371 SET_BIT(hospi->Instance->CR, OCTOSPI_CR_ABORT); in HAL_OSPI_Abort_IT()
2376 hospi->State = HAL_OSPI_STATE_READY; in HAL_OSPI_Abort_IT()
2380 hospi->AbortCpltCallback(hospi); in HAL_OSPI_Abort_IT()
2382 HAL_OSPI_AbortCpltCallback(hospi); in HAL_OSPI_Abort_IT()
2390 hospi->ErrorCode = HAL_OSPI_ERROR_INVALID_SEQUENCE; in HAL_OSPI_Abort_IT()
2402 HAL_StatusTypeDef HAL_OSPI_SetFifoThreshold(OSPI_HandleTypeDef *hospi, uint32_t Threshold) in HAL_OSPI_SetFifoThreshold() argument
2407 if ((hospi->State & OSPI_BUSY_STATE_MASK) == 0U) in HAL_OSPI_SetFifoThreshold()
2410 hospi->Init.FifoThreshold = Threshold; in HAL_OSPI_SetFifoThreshold()
2413 …MODIFY_REG(hospi->Instance->CR, OCTOSPI_CR_FTHRES, ((hospi->Init.FifoThreshold - 1U) << OCTOSPI_CR… in HAL_OSPI_SetFifoThreshold()
2419 hospi->ErrorCode = HAL_OSPI_ERROR_INVALID_SEQUENCE; in HAL_OSPI_SetFifoThreshold()
2430 uint32_t HAL_OSPI_GetFifoThreshold(const OSPI_HandleTypeDef *hospi) in HAL_OSPI_GetFifoThreshold() argument
2432 return ((READ_BIT(hospi->Instance->CR, OCTOSPI_CR_FTHRES) >> OCTOSPI_CR_FTHRES_Pos) + 1U); in HAL_OSPI_GetFifoThreshold()
2440 HAL_StatusTypeDef HAL_OSPI_SetTimeout(OSPI_HandleTypeDef *hospi, uint32_t Timeout) in HAL_OSPI_SetTimeout() argument
2442 hospi->Timeout = Timeout; in HAL_OSPI_SetTimeout()
2451 uint32_t HAL_OSPI_GetError(const OSPI_HandleTypeDef *hospi) in HAL_OSPI_GetError() argument
2453 return hospi->ErrorCode; in HAL_OSPI_GetError()
2461 uint32_t HAL_OSPI_GetState(const OSPI_HandleTypeDef *hospi) in HAL_OSPI_GetState() argument
2464 return hospi->State; in HAL_OSPI_GetState()
2493 HAL_StatusTypeDef HAL_OSPIM_Config(OSPI_HandleTypeDef *hospi, OSPIM_CfgTypeDef *cfg, uint32_t Timeo… in HAL_OSPIM_Config() argument
2515 if (hospi->Instance == OCTOSPI1) in HAL_OSPIM_Config()
2532 hospi->ErrorCode = HAL_OSPI_ERROR_INVALID_PARAM; in HAL_OSPIM_Config()
2764 OSPI_HandleTypeDef *hospi = (OSPI_HandleTypeDef *)(hdma->Parent); in OSPI_DMACplt() local
2765 hospi->XferCount = 0; in OSPI_DMACplt()
2768 CLEAR_BIT(hospi->Instance->CR, OCTOSPI_CR_DMAEN); in OSPI_DMACplt()
2774 __HAL_OSPI_ENABLE_IT(hospi, HAL_OSPI_IT_TC); in OSPI_DMACplt()
2784 OSPI_HandleTypeDef *hospi = (OSPI_HandleTypeDef *)(hdma->Parent); in OSPI_DMAHalfCplt() local
2785 hospi->XferCount = (hospi->XferCount >> 1); in OSPI_DMAHalfCplt()
2787 if (hospi->State == HAL_OSPI_STATE_BUSY_RX) in OSPI_DMAHalfCplt()
2790 hospi->RxHalfCpltCallback(hospi); in OSPI_DMAHalfCplt()
2792 HAL_OSPI_RxHalfCpltCallback(hospi); in OSPI_DMAHalfCplt()
2798 hospi->TxHalfCpltCallback(hospi); in OSPI_DMAHalfCplt()
2800 HAL_OSPI_TxHalfCpltCallback(hospi); in OSPI_DMAHalfCplt()
2812 OSPI_HandleTypeDef *hospi = (OSPI_HandleTypeDef *)(hdma->Parent); in OSPI_DMAError() local
2813 hospi->XferCount = 0; in OSPI_DMAError()
2814 hospi->ErrorCode = HAL_OSPI_ERROR_DMA; in OSPI_DMAError()
2817 CLEAR_BIT(hospi->Instance->CR, OCTOSPI_CR_DMAEN); in OSPI_DMAError()
2820 if (HAL_OSPI_Abort_IT(hospi) != HAL_OK) in OSPI_DMAError()
2823 __HAL_OSPI_DISABLE_IT(hospi, HAL_OSPI_IT_TC | HAL_OSPI_IT_FT | HAL_OSPI_IT_TE); in OSPI_DMAError()
2826 hospi->State = HAL_OSPI_STATE_READY; in OSPI_DMAError()
2830 hospi->ErrorCallback(hospi); in OSPI_DMAError()
2832 HAL_OSPI_ErrorCallback(hospi); in OSPI_DMAError()
2844 OSPI_HandleTypeDef *hospi = (OSPI_HandleTypeDef *)(hdma->Parent); in OSPI_DMAAbortCplt() local
2845 hospi->XferCount = 0; in OSPI_DMAAbortCplt()
2848 if (hospi->State == HAL_OSPI_STATE_ABORT) in OSPI_DMAAbortCplt()
2851 if (__HAL_OSPI_GET_FLAG(hospi, HAL_OSPI_FLAG_BUSY) != RESET) in OSPI_DMAAbortCplt()
2854 __HAL_OSPI_CLEAR_FLAG(hospi, HAL_OSPI_FLAG_TC); in OSPI_DMAAbortCplt()
2857 __HAL_OSPI_ENABLE_IT(hospi, HAL_OSPI_IT_TC); in OSPI_DMAAbortCplt()
2860 SET_BIT(hospi->Instance->CR, OCTOSPI_CR_ABORT); in OSPI_DMAAbortCplt()
2865 hospi->State = HAL_OSPI_STATE_READY; in OSPI_DMAAbortCplt()
2869 hospi->AbortCpltCallback(hospi); in OSPI_DMAAbortCplt()
2871 HAL_OSPI_AbortCpltCallback(hospi); in OSPI_DMAAbortCplt()
2879 hospi->State = HAL_OSPI_STATE_READY; in OSPI_DMAAbortCplt()
2883 hospi->ErrorCallback(hospi); in OSPI_DMAAbortCplt()
2885 HAL_OSPI_ErrorCallback(hospi); in OSPI_DMAAbortCplt()
2899 static HAL_StatusTypeDef OSPI_WaitFlagStateUntilTimeout(OSPI_HandleTypeDef *hospi, uint32_t Flag, in OSPI_WaitFlagStateUntilTimeout() argument
2903 while ((__HAL_OSPI_GET_FLAG(hospi, Flag)) != State) in OSPI_WaitFlagStateUntilTimeout()
2910 hospi->State = HAL_OSPI_STATE_ERROR; in OSPI_WaitFlagStateUntilTimeout()
2911 hospi->ErrorCode |= HAL_OSPI_ERROR_TIMEOUT; in OSPI_WaitFlagStateUntilTimeout()
2926 static HAL_StatusTypeDef OSPI_ConfigCmd(OSPI_HandleTypeDef *hospi, OSPI_RegularCmdTypeDef *cmd) in OSPI_ConfigCmd() argument
2935 MODIFY_REG(hospi->Instance->CR, OCTOSPI_CR_FMODE, 0U); in OSPI_ConfigCmd()
2938 if (hospi->Init.DualQuad == HAL_OSPI_DUALQUAD_DISABLE) in OSPI_ConfigCmd()
2940 MODIFY_REG(hospi->Instance->CR, OCTOSPI_CR_FSEL, cmd->FlashId); in OSPI_ConfigCmd()
2945 ccr_reg = &(hospi->Instance->WCCR); in OSPI_ConfigCmd()
2946 tcr_reg = &(hospi->Instance->WTCR); in OSPI_ConfigCmd()
2947 ir_reg = &(hospi->Instance->WIR); in OSPI_ConfigCmd()
2948 abr_reg = &(hospi->Instance->WABR); in OSPI_ConfigCmd()
2952 ccr_reg = &(hospi->Instance->CCR); in OSPI_ConfigCmd()
2953 tcr_reg = &(hospi->Instance->TCR); in OSPI_ConfigCmd()
2954 ir_reg = &(hospi->Instance->IR); in OSPI_ConfigCmd()
2955 abr_reg = &(hospi->Instance->ABR); in OSPI_ConfigCmd()
2979 hospi->Instance->DLR = (cmd->NbData - 1U); in OSPI_ConfigCmd()
3010 if ((hospi->Init.DelayHoldQuarterCycle == HAL_OSPI_DHQC_ENABLE) && in OSPI_ConfigCmd()
3021 hospi->Instance->AR = cmd->Address; in OSPI_ConfigCmd()
3044 if ((hospi->Init.DelayHoldQuarterCycle == HAL_OSPI_DHQC_ENABLE) && in OSPI_ConfigCmd()
3080 hospi->Instance->AR = cmd->Address; in OSPI_ConfigCmd()
3086 hospi->ErrorCode = HAL_OSPI_ERROR_INVALID_PARAM; in OSPI_ConfigCmd()