/*! ***************************************************************************** ** \file gd_lib/GK7101/inc/gd_spieeprom.h ** ** \version $Id$ ** ** \brief ** ** \attention THIS SAMPLE CODE IS PROVIDED AS IS. GOKE MICROELECTRONICS ** ACCEPTS NO RESPONSIBILITY OR LIABILITY FOR ANY ERRORS OR ** OMMISSIONS ** ** (C) Copyright 2012-2013 by GOKE MICROELECTRONICS CO.,LTD ** ***************************************************************************** */ #ifndef _GD_SPIEEPROM_H_ #define _GD_SPIEEPROM_H_ #include #include #include "gd_gpio.h" #include "gd_spi.h" //***************************************************************************** //***************************************************************************** //** Defines and Macros //***************************************************************************** //***************************************************************************** //***************************************************************************** //***************************************************************************** //** Enumerated types //***************************************************************************** //***************************************************************************** typedef enum { GD_SPI_EEPROM_AT25320B = 0, GD_SPI_EEPROM_AT25640B, GD_SPI_EEPROM_NUM }GD_SPI_EEPROM_E; /*! ******************************************************************************* ** ** \anchor ** \brief he base error code for the serial spi eeprom device driver. ** ******************************************************************************* */ #define GD_SPI_EEPROM_ERR_BASE (GD_SPI_EEPROM_MODULE_ID<<16) /*! ******************************************************************************* ** ** \brief Flash driver error codes. ** ******************************************************************************* */ enum { GD_ERR_SPI_EEPROM_TYPE_NOT_SUPPORTED = GD_SPI_EEPROM_ERR_BASE, //!< Device not supported. GD_ERR_SPI_EEPROM_IN_USE, //!< Read error. GD_ERR_SPI_EEPROM_READ, //!< Read error. GD_ERR_SPI_EEPROM_WRITE, //!< Write error. }; //***************************************************************************** //***************************************************************************** //** Data Structures //***************************************************************************** //***************************************************************************** /* ******************************************************************************* ** ** serial spi eeprom specific commands and statis register bit definitions ** ******************************************************************************* */ typedef struct { U8 writeEnable; // command to WREN Set Write Enable Latch U8 writeDisable; // command to WRDI Reset Write Enable Latch U8 readStatus; // command to RDSR Read Status Register U8 writeStatus; // command to WRSR Write Status Register U8 readData; // command to READ Read Data from Memory Array U8 WriteData; // command to WRITE Write Data to Memory Array }GD_SPI_EEPROM_CMD_S; /* ******************************************************************************* ** ** serial spi eeprom specific geometry and information data structure ** ******************************************************************************* */ typedef struct { char* manufactureName; // Pointer to manufacture name char* deviceName; // Pointer to device name U32 deviceBytes; // Size of spi eeprom device in bytes U32 sectorCount; // Number of sectors U32 sectorBytes; // Size of a single sector in bytes GD_SPI_EEPROM_CMD_S* commands; // Device specific access commands GBOOL wptoporbottom; GD_SPI_EEPROM_E device; GD_HANDLE spi; GD_HANDLE wp; GD_HANDLE hold; }GD_SPI_EEPROM_DEV_S; typedef struct { GD_SPI_EEPROM_E device; GD_SPI_CHANNEL_E channel; GD_SPI_SLAVE_E slave; GD_SPI_SPEED_MODE speed; GD_SPI_POLARITY_MODE polarity; GBOOL used_irq; GD_GPIO_PIN_E csgpiopin; GD_GPIO_TYPE_E csgpiotype; GD_GPIO_PIN_E wpgpiopin; GD_GPIO_TYPE_E wpgpiotype; GD_GPIO_PIN_E holdgpiopin; GD_GPIO_TYPE_E holdgpiotype; } GD_SPI_EEPROM_OPEN_PARAMS_S; //***************************************************************************** //***************************************************************************** //** Global Data //***************************************************************************** //***************************************************************************** //***************************************************************************** //***************************************************************************** //** API Functions //***************************************************************************** //***************************************************************************** #ifdef __cplusplus extern "C" { #endif GERR GD_SPI_EEPROM_Init(void); GERR GD_SPI_EEPROM_Exit(void); GERR GD_SPI_EEPROM_Open(GD_SPI_EEPROM_OPEN_PARAMS_S *openParamsP, GD_HANDLE* pHandle); GERR GD_SPI_EEPROM_Close(GD_HANDLE* pHandle); GERR GD_SPI_EEPROM_Read(GD_HANDLE handle, U32 address, U8* buffer, U32 bytes); GERR GD_SPI_EEPROM_Write(GD_HANDLE handle, U32 address, U8* buffer, U32 bytes); GERR GD_SPI_EEPROM_GetNames(GD_HANDLE handle, char** manufactureName, char** deviceName); GERR GD_SPI_EEPROM_GetNumberOfSectors(GD_HANDLE handle, U16* numberOfSectors); GERR GD_SPI_EEPROM_GetSectorAddress(GD_HANDLE handle, U16 sector, U32* address); GERR GD_SPI_EEPROM_GetSize(GD_HANDLE handle, U32* deviceBytes); GERR GD_SPI_EEPROM_GetSectorSize(GD_HANDLE handle, U16 sector, U32* deviceBytes); GERR GD_SPI_EEPROM_GetSector(GD_HANDLE handle, U32 address, U16* sector); GERR GD_SPI_EEPROM_Unlock(GD_HANDLE handle); GERR GD_SPI_EEPROM_Lock(GD_HANDLE handle); #ifdef __cplusplus } #endif #endif /* _GD_SPIEEPROM_H_ */