/**
 * @file   qspiIO.h
 * @author StepTechnica
 * @date   Sep. 05, 2025
 * 
 * @brief Evaluation Board 用ヘッダーファイル「MKY43デバイス」
 * 
 * @copyright (C) 2022- StepTechnica Co.,Ltd.
 * 
 * このソフトウェアは、コピー利用、配布、変更の追加、変更を加えたもの再配布、商用利用、有料販売など、どなたも自由にお使いいただくことができます。
 * このソフトウェアには保証はついていません。
 * このソフトウェアを利用したことで問題が起きた際に、ソフトウェアの製作者は一切の責任を負いません。
 * 
 */


#ifndef __qspi_IO__

#define __qpsi_IO__


/* -----------------------------------------------------------------------------
 * #defineマクロ定義
 */
#define 	kSPI_CMD_READ           0x03	// Standard read.
#define 	kSPI_CMD_FARST_READ     0x0b	// First read.
#define 	kSPI_CMD_DOR            0x3b	// Dual output read.
#define 	kSPI_CMD_QOR            0x6b	// Quad output read.
#define 	kSPI_CMD_DIOR           0xbb	// Dual in/out read.
#define 	kSPI_CMD_QIOR           0xeb	// Quad in/out read.
#define 	kSPI_CMD_SPIS_READ      0x05	// SPI status read.
#define 	kSPI_CMD_RDID           0x9f	// ID read.

#define 	kSPI_CMD_WRITE          0x02	// Standard write.
#define 	kSPI_CMD_DIW            0xA2	// Dual input write.
#define 	kSPI_CMD_QIW            0x32	// Duad input write.
#define 	kSPI_CMD_DIOW           0xA1	// Dual in/out write.
#define 	kSPI_CMD_QIOW           0xd2	// Duad in/out write.
#define 	kSPI_CMD_SPIS_WRITE     0x01	// SPI status write.

#define 	DEF_QSPI_PRESCALER      9   	// QSPIのプリスケーラ値。216÷9＝24MHz
#define 	DEF_QSPI_AREALENGTH     0x4000	// 0~0x3FFF 14bit address
#define 	DEF_QSPI_AREABIT        13  	// 14 = 13 + 1
#define 	DEF_SPI_DUMMY           2   

extern int QSPI_Initialize(void);
extern int MKY_Read16(unsigned short offset);
extern int MKY_ReadBlock(unsigned short offset, void* block, unsigned short length);
extern int MKY_Write16(unsigned short offset, unsigned short value);
extern int MKY_WriteBlock(unsigned short offset, const void* block, unsigned short length);
extern int MKY_FillMemory(unsigned short offset, int value, unsigned short length);

#endif	//  __qpsi_IO__
