AJA NTV2 SDK  17.5.0.1242
NTV2 SDK 17.5.0.1242
ntv2spiinterface.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: MIT */
7 #ifndef NTV2SPIINTERFACE_H
8 #define NTV2SPIINTERFACE_H
9 
10 #include "ntv2card.h"
11 
12 typedef enum
13 {
20 
21  SPI_FLASH_SECTION_TOTAL // should be at end, represents the whole flash chip
23 
25 {
26 public:
27  CNTV2SpiFlash(bool verbose = false) : mVerbose(verbose) {}
28  virtual ~CNTV2SpiFlash() {}
29 
30  virtual bool Read(const uint32_t address, std::vector<uint8_t> &data, uint32_t maxBytes = 1) = 0;
31  virtual bool Write(const uint32_t address, const std::vector<uint8_t> data, uint32_t maxBytes = 1) = 0;
32  virtual bool Erase(const uint32_t address, uint32_t bytes) = 0;
33  virtual bool Verify(const uint32_t address, const std::vector<uint8_t>& dataWritten) = 0;
34  virtual uint32_t Size(SpiFlashSection sectionID = SPI_FLASH_SECTION_TOTAL) = 0;
35  virtual uint32_t Offset(SpiFlashSection sectionID = SPI_FLASH_SECTION_TOTAL) = 0;
36  virtual void SetVerbosity(bool verbose) {mVerbose = verbose;}
37  virtual bool GetVerbosity() {return mVerbose;}
38 
39  static bool DeviceSupported(NTV2DeviceID deviceId) {(void)deviceId; return false;}
40 
41 protected:
42  bool mVerbose;
43 };
44 
46 {
47 public:
48  CNTV2AxiSpiFlash(int index = 0, bool verbose = false);
49  virtual ~CNTV2AxiSpiFlash();
50 
51  // common flash interface
52  virtual bool Read(const uint32_t address, std::vector<uint8_t> &data, uint32_t maxBytes = 1);
53  virtual bool Write(const uint32_t address, const std::vector<uint8_t> data, uint32_t maxBytes = 1);
54  virtual bool Erase(const uint32_t address, uint32_t bytes);
55  virtual bool Verify(const uint32_t address, const std::vector<uint8_t>& dataWritten);
56  virtual uint32_t Size(SpiFlashSection sectionID = SPI_FLASH_SECTION_TOTAL);
57  virtual uint32_t Offset(SpiFlashSection sectionID = SPI_FLASH_SECTION_TOTAL);
58  static bool DeviceSupported(NTV2DeviceID deviceId);
59 
60  // Axi specific
61 private:
62  bool NTV2DeviceOk();
63 
64  void SpiReset();
65  bool SpiResetFifos();
66  void SpiEnableWrite(bool enable);
67  void SpiSendFIFOData();
68  bool SpiTransfer(std::vector<uint8_t> commandSequence,
69  const std::vector<uint8_t> inputData,
70  std::vector<uint8_t>& outputData, uint32_t maxByteCutoff = 1);
71 
72  bool FlashDeviceInfo(uint8_t& manufactureID, uint8_t& memInerfaceType,
73  uint8_t& memDensity, uint8_t& sectorArchitecture,
74  uint8_t& familyID);
75  bool FlashReadConfig(uint8_t& configValue);
76  bool FlashReadStatus(uint8_t& statusValue);
77  bool FlashReadBankAddress(uint8_t& bankAddressVal);
78  bool FlashWriteBankAddress(const uint8_t bankAddressVal);
79 
80  void FlashFixAddress(const uint32_t address, std::vector<uint8_t>& commandSequence);
81 
82  uint32_t mBaseByteAddress;
83  uint32_t mSize;
84  uint32_t mSectorSize;
85 
86  CNTV2Card mDevice;
87 
88  uint32_t mManufactureID;
89  uint32_t mSpiResetReg;
90  uint32_t mSpiControlReg;
91  uint32_t mSpiStatusReg;
92  uint32_t mSpiWriteReg;
93  uint32_t mSpiReadReg;
94  uint32_t mSpiSlaveReg;
95  uint32_t mSpiGlobalIntReg;
96 };
97 
98 #endif // NTV2SPIINTERFACE_H
CNTV2SpiFlash::mVerbose
bool mVerbose
Definition: ntv2spiinterface.h:42
CNTV2AxiSpiFlash::Offset
virtual uint32_t Offset(SpiFlashSection sectionID=SPI_FLASH_SECTION_TOTAL)
Definition: ntv2spiinterface.cpp:509
CNTV2AxiSpiFlash::DeviceSupported
static bool DeviceSupported(NTV2DeviceID deviceId)
Definition: ntv2spiinterface.cpp:249
CNTV2SpiFlash::~CNTV2SpiFlash
virtual ~CNTV2SpiFlash()
Definition: ntv2spiinterface.h:28
CNTV2SpiFlash::Read
virtual bool Read(const uint32_t address, std::vector< uint8_t > &data, uint32_t maxBytes=1)=0
SPI_FLASH_SECTION_TOTAL
@ SPI_FLASH_SECTION_TOTAL
Definition: ntv2spiinterface.h:21
NTV2DeviceID
NTV2DeviceID
Identifies a specific AJA NTV2 device model number. The NTV2DeviceID is actually the PROM part number...
Definition: ntv2enums.h:20
SPI_FLASH_SECTION_SERIAL
@ SPI_FLASH_SECTION_SERIAL
Definition: ntv2spiinterface.h:19
CNTV2AxiSpiFlash::Size
virtual uint32_t Size(SpiFlashSection sectionID=SPI_FLASH_SECTION_TOTAL)
Definition: ntv2spiinterface.cpp:488
nlohmann::json_abiNLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON_v3_11_NLOHMANN_JSON_VERSION_PATCH::detail::void
j template void())
Definition: json.hpp:4893
CNTV2AxiSpiFlash::CNTV2AxiSpiFlash
CNTV2AxiSpiFlash(int index=0, bool verbose=(0))
Definition: ntv2spiinterface.cpp:194
CNTV2SpiFlash::Verify
virtual bool Verify(const uint32_t address, const std::vector< uint8_t > &dataWritten)=0
CNTV2SpiFlash::Write
virtual bool Write(const uint32_t address, const std::vector< uint8_t > data, uint32_t maxBytes=1)=0
CNTV2SpiFlash::Size
virtual uint32_t Size(SpiFlashSection sectionID=SPI_FLASH_SECTION_TOTAL)=0
CNTV2SpiFlash::Offset
virtual uint32_t Offset(SpiFlashSection sectionID=SPI_FLASH_SECTION_TOTAL)=0
CNTV2SpiFlash::DeviceSupported
static bool DeviceSupported(NTV2DeviceID deviceId)
Definition: ntv2spiinterface.h:39
ntv2card.h
Declares the CNTV2Card class.
CNTV2SpiFlash::CNTV2SpiFlash
CNTV2SpiFlash(bool verbose=(0))
Definition: ntv2spiinterface.h:27
CNTV2AxiSpiFlash::Erase
virtual bool Erase(const uint32_t address, uint32_t bytes)
Definition: ntv2spiinterface.cpp:374
CNTV2Card
I interrogate and control an AJA video/audio capture/playout device.
Definition: ntv2card.h:28
SpiFlashSection
SpiFlashSection
Definition: ntv2spiinterface.h:12
CNTV2SpiFlash::Erase
virtual bool Erase(const uint32_t address, uint32_t bytes)=0
SPI_FLASH_SECTION_MCSINFO
@ SPI_FLASH_SECTION_MCSINFO
Definition: ntv2spiinterface.h:17
SPI_FLASH_SECTION_UBOOT
@ SPI_FLASH_SECTION_UBOOT
Definition: ntv2spiinterface.h:14
CNTV2AxiSpiFlash
Definition: ntv2spiinterface.h:45
SPI_FLASH_SECTION_MAC
@ SPI_FLASH_SECTION_MAC
Definition: ntv2spiinterface.h:18
CNTV2AxiSpiFlash::Read
virtual bool Read(const uint32_t address, std::vector< uint8_t > &data, uint32_t maxBytes=1)
Definition: ntv2spiinterface.cpp:266
CNTV2AxiSpiFlash::Verify
virtual bool Verify(const uint32_t address, const std::vector< uint8_t > &dataWritten)
Definition: ntv2spiinterface.cpp:477
CNTV2SpiFlash
Definition: ntv2spiinterface.h:24
CNTV2SpiFlash::SetVerbosity
virtual void SetVerbosity(bool verbose)
Definition: ntv2spiinterface.h:36
SPI_FLASH_SECTION_LICENSE
@ SPI_FLASH_SECTION_LICENSE
Definition: ntv2spiinterface.h:16
CNTV2AxiSpiFlash::Write
virtual bool Write(const uint32_t address, const std::vector< uint8_t > data, uint32_t maxBytes=1)
Definition: ntv2spiinterface.cpp:313
CNTV2SpiFlash::GetVerbosity
virtual bool GetVerbosity()
Definition: ntv2spiinterface.h:37
CNTV2AxiSpiFlash::~CNTV2AxiSpiFlash
virtual ~CNTV2AxiSpiFlash()
Definition: ntv2spiinterface.cpp:245
SPI_FLASH_SECTION_KERNEL
@ SPI_FLASH_SECTION_KERNEL
Definition: ntv2spiinterface.h:15