1 /****************************************************************************** 2 * 3 * Copyright (C) 2022-2023 Maxim Integrated Products, Inc. (now owned by 4 * Analog Devices, Inc.), 5 * Copyright (C) 2023-2024 Analog Devices, Inc. 6 * 7 * Licensed under the Apache License, Version 2.0 (the "License"); 8 * you may not use this file except in compliance with the License. 9 * You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, software 14 * distributed under the License is distributed on an "AS IS" BASIS, 15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 * See the License for the specific language governing permissions and 17 * limitations under the License. 18 * 19 ******************************************************************************/ 20 21 #ifndef LIBRARIES_PERIPHDRIVERS_SOURCE_SPIXR_SPIXR_REVA_H_ 22 #define LIBRARIES_PERIPHDRIVERS_SOURCE_SPIXR_SPIXR_REVA_H_ 23 24 /****** Includes *******/ 25 #include "mxc_device.h" 26 #include "mxc_sys.h" 27 #include "spixr_reva_regs.h" 28 #include "spixr.h" 29 30 /* **** Definitions **** */ 31 /** 32 * @brief Structure type for configuring a SPIXR port. 33 */ 34 35 /** 36 * @brief Data Width, # of data I/O used to rcv data 37 */ 38 typedef enum { 39 MXC_SPIXR_REVA_SINGLE_SDIO = 0, 40 MXC_SPIXR_REVA_DUAL_SDIO, 41 MXC_SPIXR_REVA_QUAD_SDIO, 42 MXC_SPIXR_REVA_INVALID, 43 } mxc_spixr_reva_width_t; 44 45 /** 46 * @brief SPIXF mode. 47 * @note modes 1 and 2 are not supported 48 */ 49 typedef enum { 50 MXC_SPIXR_REVA_MODE_0, 51 MXC_SPIXR_REVA_MODE_1, 52 MXC_SPIXR_REVA_MODE_2, 53 MXC_SPIXR_REVA_MODE_3, 54 } mxc_spixr_reva_mode_t; 55 56 /** 57 * @brief Configuration parameters of SPIXR 58 */ 59 typedef struct { 60 uint32_t 61 numbits; ///< Number of Bits per character. In slave mode 9-bit character length is not supported. 62 mxc_spixr_reva_width_t data_width; ///< SPI Data width 63 64 uint32_t ssel_act_1; ///< Slave Select Action delay 1 65 uint32_t ssel_act_2; ///< Slave Select Action delay 2 66 uint32_t ssel_inact; ///< Slave Select Inactive delay 67 68 uint32_t baud_freq; ///< Desired frequency 69 } mxc_spixr_reva_cfg_t; 70 71 /***** Function Prototypes *****/ 72 73 int MXC_SPIXR_RevA_ReadRXFIFO(mxc_spixr_reva_regs_t *spixr, uint8_t *buf, int len); 74 int MXC_SPIXR_RevA_WriteTXFIFO(mxc_spixr_reva_regs_t *spixr, uint8_t *buf, int len); 75 void MXC_SPIXR_RevA_SetSS(mxc_spixr_reva_regs_t *spixr, int ssIdx); 76 int MXC_SPIXR_RevA_GetSS(mxc_spixr_reva_regs_t *spixr); 77 void MXC_SPIXR_RevA_SetSSCtrl(mxc_spixr_reva_regs_t *spixr, int stayActive); 78 int MXC_SPIXR_RevA_GetSSCtrl(mxc_spixr_reva_regs_t *spixr); 79 void MXC_SPIXR_RevA_Enable(mxc_spixr_reva_regs_t *spixr); 80 void MXC_SPIXR_RevA_Disable(mxc_spixr_reva_regs_t *spixr); 81 int MXC_SPIXR_RevA_IsEnabled(mxc_spixr_reva_regs_t *spixr); 82 void MXC_SPIXR_RevA_ThreeWireModeEnable(mxc_spixr_reva_regs_t *spixr); 83 void MXC_SPIXR_RevA_ThreeWireModeDisable(mxc_spixr_reva_regs_t *spixr); 84 int MXC_SPIXR_RevA_ThreeWireModeIsEnabled(mxc_spixr_reva_regs_t *spixr); 85 int MXC_SPIXR_RevA_GetTXFIFOCount(mxc_spixr_reva_regs_t *spixr); 86 int MXC_SPIXR_RevA_GetRXFIFOCount(mxc_spixr_reva_regs_t *spixr); 87 int MXC_SPIXR_RevA_SetWidth(mxc_spixr_reva_regs_t *spixr, mxc_spixr_reva_width_t width); 88 int MXC_SPIXR_RevA_SetSPIMode(mxc_spixr_reva_regs_t *spixr, mxc_spixr_reva_mode_t mode); 89 int MXC_SPIXR_RevA_SetSSPolarity(mxc_spixr_reva_regs_t *spixr, int active); 90 void MXC_SPIXR_RevA_SetSSTiming(mxc_spixr_reva_regs_t *spixr, unsigned int ssIActDelay, 91 unsigned int postActive, unsigned int preActive); 92 int MXC_SPIXR_RevA_SetFrequency(mxc_spixr_reva_regs_t *spixr, int hz); 93 int MXC_SPIXR_RevA_GetFrequency(mxc_spixr_reva_regs_t *spixr); 94 int MXC_SPIXR_RevA_GetIntFlags(mxc_spixr_reva_regs_t *spixr); 95 void MXC_SPIXR_RevA_EnableInt(mxc_spixr_reva_regs_t *spixr, int flags); 96 void MXC_SPIXR_RevA_DisableInt(mxc_spixr_reva_regs_t *spixr, int flags); 97 int MXC_SPIXR_RevA_GetWakeUpFlags(mxc_spixr_reva_regs_t *spixr); 98 void MXC_SPIXR_RevA_EnableWakeUp(mxc_spixr_reva_regs_t *spixr, int flags); 99 void MXC_SPIXR_RevA_DisableWakeUp(mxc_spixr_reva_regs_t *spixr, int flags); 100 void MXC_SPIXR_RevA_ExMemEnable(mxc_spixr_reva_regs_t *spixr); 101 void MXC_SPIXR_RevA_ExMemDisable(mxc_spixr_reva_regs_t *spixr); 102 void MXC_SPIXR_RevA_ExMemUseDummy(mxc_spixr_reva_regs_t *spixr, int delay255); 103 void MXC_SPIXR_RevA_ExMemSetWriteCommand(mxc_spixr_reva_regs_t *spixr, uint8_t command); 104 uint8_t MXC_SPIXR_RevA_ExMemGetWriteCommand(mxc_spixr_reva_regs_t *spixr); 105 void MXC_SPIXR_RevA_ExMemSetReadCommand(mxc_spixr_reva_regs_t *spixr, uint8_t command); 106 uint8_t MXC_SPIXR_RevA_ExMemGetReadCommand(mxc_spixr_reva_regs_t *spixr); 107 int MXC_SPIXR_RevA_Busy(mxc_spixr_reva_regs_t *spixr); 108 int MXC_SPIXR_RevA_Init(mxc_spixr_reva_regs_t *spixr, mxc_spixr_reva_cfg_t *cfg); 109 int MXC_SPIXR_RevA_Shutdown(mxc_spixr_reva_regs_t *spixr); 110 void MXC_SPIXR_RevA_SendCommand(mxc_spixr_reva_regs_t *spixr, uint8_t *cmd, uint32_t length, 111 uint32_t tx_num_char); 112 void MXC_SPIXR_RevA_TXFIFOEnable(mxc_spixr_reva_regs_t *spixr); 113 void MXC_SPIXR_RevA_TXFIFODisable(mxc_spixr_reva_regs_t *spixr); 114 int MXC_SPIXR_RevA_TXFIFOIsEnabled(mxc_spixr_reva_regs_t *spixr); 115 void MXC_SPIXR_RevA_DmaTXFIFOEnable(mxc_spixr_reva_regs_t *spixr); 116 void MXC_SPIXR_RevA_DmaTXFIFODisable(mxc_spixr_reva_regs_t *spixr); 117 int MXC_SPIXR_RevA_DmaTXFIFOIsEnabled(mxc_spixr_reva_regs_t *spixr); 118 void MXC_SPIXR_RevA_RXFIFOEnable(mxc_spixr_reva_regs_t *spixr); 119 void MXC_SPIXR_RevA_RXFIFODisable(mxc_spixr_reva_regs_t *spixr); 120 int MXC_SPIXR_RevA_RXFIFOIsEnabled(mxc_spixr_reva_regs_t *spixr); 121 void MXC_SPIXR_RevA_DmaRXFIFOEnable(mxc_spixr_reva_regs_t *spixr); 122 void MXC_SPIXR_RevA_DmaRXFIFODisable(mxc_spixr_reva_regs_t *spixr); 123 int MXC_SPIXR_RevA_DmaRXFIFOIsEnabled(mxc_spixr_reva_regs_t *spixr); 124 void MXC_SPIXR_RevA_TXFIFOClear(mxc_spixr_reva_regs_t *spixr); 125 void MXC_SPIXR_RevA_RXFIFOClear(mxc_spixr_reva_regs_t *spixr); 126 127 #endif // LIBRARIES_PERIPHDRIVERS_SOURCE_SPIXR_SPIXR_REVA_H_ 128