123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269 |
- #ifndef _FSL_FLEXBUS_H_
- #define _FSL_FLEXBUS_H_
- #include "fsl_common.h"
- #define FSL_FLEXBUS_DRIVER_VERSION (MAKE_VERSION(2, 0, 1))
- typedef enum _flexbus_port_size
- {
- kFLEXBUS_4Bytes = 0x00U,
- kFLEXBUS_1Byte = 0x01U,
- kFLEXBUS_2Bytes = 0x02U
- } flexbus_port_size_t;
- typedef enum _flexbus_write_address_hold
- {
- kFLEXBUS_Hold1Cycle = 0x00U,
- kFLEXBUS_Hold2Cycles = 0x01U,
- kFLEXBUS_Hold3Cycles = 0x02U,
- kFLEXBUS_Hold4Cycles = 0x03U
- } flexbus_write_address_hold_t;
- typedef enum _flexbus_read_address_hold
- {
- kFLEXBUS_Hold1Or0Cycles = 0x00U,
- kFLEXBUS_Hold2Or1Cycles = 0x01U,
- kFLEXBUS_Hold3Or2Cycle = 0x02U,
- kFLEXBUS_Hold4Or3Cycle = 0x03U
- } flexbus_read_address_hold_t;
- typedef enum _flexbus_address_setup
- {
- kFLEXBUS_FirstRisingEdge = 0x00U,
- kFLEXBUS_SecondRisingEdge = 0x01U,
- kFLEXBUS_ThirdRisingEdge = 0x02U,
- kFLEXBUS_FourthRisingEdge = 0x03U,
- } flexbus_address_setup_t;
- typedef enum _flexbus_bytelane_shift
- {
- kFLEXBUS_NotShifted = 0x00U,
- kFLEXBUS_Shifted = 0x01U,
- } flexbus_bytelane_shift_t;
- typedef enum _flexbus_multiplex_group1_signal
- {
- kFLEXBUS_MultiplexGroup1_FB_ALE = 0x00U,
- kFLEXBUS_MultiplexGroup1_FB_CS1 = 0x01U,
- kFLEXBUS_MultiplexGroup1_FB_TS = 0x02U,
- } flexbus_multiplex_group1_t;
- typedef enum _flexbus_multiplex_group2_signal
- {
- kFLEXBUS_MultiplexGroup2_FB_CS4 = 0x00U,
- kFLEXBUS_MultiplexGroup2_FB_TSIZ0 = 0x01U,
- kFLEXBUS_MultiplexGroup2_FB_BE_31_24 = 0x02U,
- } flexbus_multiplex_group2_t;
- typedef enum _flexbus_multiplex_group3_signal
- {
- kFLEXBUS_MultiplexGroup3_FB_CS5 = 0x00U,
- kFLEXBUS_MultiplexGroup3_FB_TSIZ1 = 0x01U,
- kFLEXBUS_MultiplexGroup3_FB_BE_23_16 = 0x02U,
- } flexbus_multiplex_group3_t;
- typedef enum _flexbus_multiplex_group4_signal
- {
- kFLEXBUS_MultiplexGroup4_FB_TBST = 0x00U,
- kFLEXBUS_MultiplexGroup4_FB_CS2 = 0x01U,
- kFLEXBUS_MultiplexGroup4_FB_BE_15_8 = 0x02U,
- } flexbus_multiplex_group4_t;
- typedef enum _flexbus_multiplex_group5_signal
- {
- kFLEXBUS_MultiplexGroup5_FB_TA = 0x00U,
- kFLEXBUS_MultiplexGroup5_FB_CS3 = 0x01U,
- kFLEXBUS_MultiplexGroup5_FB_BE_7_0 = 0x02U,
- } flexbus_multiplex_group5_t;
- typedef struct _flexbus_config
- {
- uint8_t chip;
- uint8_t waitStates;
- uint32_t chipBaseAddress;
- uint32_t chipBaseAddressMask;
- bool writeProtect;
- bool burstWrite;
- bool burstRead;
- bool byteEnableMode;
- bool autoAcknowledge;
- bool extendTransferAddress;
- bool secondaryWaitStates;
- flexbus_port_size_t portSize;
- flexbus_bytelane_shift_t byteLaneShift;
- flexbus_write_address_hold_t writeAddressHold;
- flexbus_read_address_hold_t readAddressHold;
- flexbus_address_setup_t addressSetup;
- flexbus_multiplex_group1_t group1MultiplexControl;
- flexbus_multiplex_group2_t group2MultiplexControl;
- flexbus_multiplex_group3_t group3MultiplexControl;
- flexbus_multiplex_group4_t group4MultiplexControl;
- flexbus_multiplex_group5_t group5MultiplexControl;
- } flexbus_config_t;
- #if defined(__cplusplus)
- extern "C" {
- #endif
- void FLEXBUS_Init(FB_Type *base, const flexbus_config_t *config);
- void FLEXBUS_Deinit(FB_Type *base);
- void FLEXBUS_GetDefaultConfig(flexbus_config_t *config);
- #if defined(__cplusplus)
- }
- #endif
- #endif
|