mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2025-11-02 19:38:08 +00:00
87 lines
3.3 KiB
C
87 lines
3.3 KiB
C
/**
|
|
* Copyright (c) 2017-present, Facebook, Inc.
|
|
* All rights reserved.
|
|
*
|
|
* This source code is licensed under the BSD-style license found in the
|
|
* LICENSE file in the root directory of this source tree. An additional grant
|
|
* of patent rights can be found in the PATENTS file in the same directory.
|
|
*/
|
|
#ifndef EEPROM_H_
|
|
#define EEPROM_H_
|
|
|
|
/*****************************************************************************
|
|
* HEADER FILES
|
|
*****************************************************************************/
|
|
#include "common/inc/global/ocmp_frame.h" /* Temporary, just for OCMPSubsystem def */
|
|
#include "drivers/OcGpio.h"
|
|
#include "inc/common/i2cbus.h"
|
|
|
|
/*****************************************************************************
|
|
* MACRO DEFINITIONS
|
|
*****************************************************************************/
|
|
#define OC_TEST_ADDRESS 0xFFFF
|
|
#define OC_CONNECT1_SERIAL_INFO 0x01C6
|
|
#define OC_CONNECT1_SERIAL_SIZE 0x12
|
|
#define OC_GBC_BOARD_INFO 0x01AC
|
|
#define OC_GBC_BOARD_INFO_SIZE 0x12
|
|
#define OC_GBC_DEVICE_INFO 0x0100 /*TODO: Update offsets*/
|
|
#define OC_SDR_BOARD_INFO 0x01AC
|
|
#define OC_SDR_BOARD_INFO_SIZE 0x12
|
|
#define OC_SDR_DEVICE_INFO 0x0100 /*TODO: Update offsets*/
|
|
#define OC_RFFE_BOARD_INFO 0x01AC
|
|
#define OC_RFFE_BOARD_INFO_SIZE 0x11
|
|
#define OC_RFFE_DEVICE_INFO 0x0100 /*TODO: Update offsets*/
|
|
#define OC_DEVICE_INFO_SIZE 0x0A
|
|
|
|
/*****************************************************************************
|
|
* STRUCT DEFINITIONS
|
|
*****************************************************************************/
|
|
typedef struct EepromDev_Cfg {
|
|
/*!< EEPROM size in bytes */
|
|
size_t mem_size;
|
|
/*!< Page size (max bytes we can write in a single shot) */
|
|
size_t page_size;
|
|
} EepromDev_Cfg;
|
|
|
|
typedef struct Eeprom_Cfg {
|
|
I2C_Dev i2c_dev;
|
|
OcGpio_Pin *pin_wp;
|
|
EepromDev_Cfg type; /*!< Device specific config (page size, etc) */
|
|
OCMPSubsystem ss; /* TODO: The HW config need not know about the subsytem
|
|
to be fixed later */
|
|
} Eeprom_Cfg, *Eeprom_Handle;
|
|
|
|
typedef enum {
|
|
OC_STAT_SYS_SERIAL_ID = 0,
|
|
OC_STAT_SYS_GBC_BOARD_ID,
|
|
OC_STAT_SYS_STATE
|
|
} eOCStatusParamId;
|
|
|
|
/*****************************************************************************
|
|
* FUNCTION DECLARATIONS
|
|
*****************************************************************************/
|
|
bool eeprom_init(Eeprom_Cfg *cfg);
|
|
|
|
ReturnStatus eeprom_read(const Eeprom_Cfg *cfg, uint16_t address, void *buffer,
|
|
size_t size);
|
|
|
|
ReturnStatus eeprom_write(const Eeprom_Cfg *cfg, uint16_t address,
|
|
const void *buffer, size_t size);
|
|
|
|
ReturnStatus eeprom_disable_write(Eeprom_Cfg *cfg);
|
|
|
|
ReturnStatus eeprom_enable_write(Eeprom_Cfg *cfg);
|
|
|
|
ReturnStatus eeprom_read_oc_info(uint8_t *oc_serial);
|
|
|
|
ReturnStatus eeprom_read_board_info(const Eeprom_Cfg *cfg, uint8_t *rom_info);
|
|
|
|
ReturnStatus eeprom_read_device_info_record(const Eeprom_Cfg *cfg,
|
|
uint8_t recordNo,
|
|
char *device_info);
|
|
|
|
ReturnStatus eeprom_write_device_info_record(Eeprom_Cfg *cfg, uint8_t recordNo,
|
|
char *device_info);
|
|
|
|
#endif /* EEPROM_H_ */
|