📄 i2c_api.h
字号:
/******************************************************************************
* Filename : I2C_api.h *
* Start date : *
* By : S.C.Kwon *
* Contact : *
* Description : low level api headers.(for only high level api) *
* *
******************************************************************************
*/
#ifndef __I2C_H__
#define __I2C_H__
#ifdef __cplusplus
extern "C" {
#endif
#define EEPROM_ADDRESS 0xA8
/*
* To control EEPROM
*/
#define EEPROM_ADDRESS_OFFSET 0x05 /* this is for safety */
#define EEPROM_ADDRESS_OPEN_CMD 0x7E /* This is for _DVS_TRINO_ */
#define EEPROM_ADDRESS_PARK 0x7F
#define EEPROM_DUMP_ADDR_DRM 0x80
#define EEPROM_DUMP_NUM_DRM 3
#define ROM_ADDR_DIVX_DRM EEPROM_DUMP_ADDR_DRM
#define EEPROM_SIZE (EEPROM_DUMP_ADDR_DRM + 0x80)
#define ROM_ADDR_GLOBAL EEPROM_ADDRESS_OFFSET + 0
#define ROM_ADDR_COUNTRY ROM_ADDR_GLOBAL + 1
#define ROM_ADDR_LANG_SETUP ROM_ADDR_COUNTRY + 2
#define ROM_ADDR_LANG_MENU ROM_ADDR_LANG_SETUP + 2
#define ROM_ADDR_LANG_AUDIO ROM_ADDR_LANG_MENU + 2
#define ROM_ADDR_LANG_SUBTITLE ROM_ADDR_LANG_AUDIO + 2
#define ROM_ADDR_AUDIO_OUT ROM_ADDR_LANG_SUBTITLE + 2
#define ROM_ADDR_DISPLAY_TYPE ROM_ADDR_AUDIO_OUT + 4
#define ROM_ADDR_REGION_CODE ROM_ADDR_DISPLAY_TYPE + 4
#define ROM_ADDR_ADULT_INFO ROM_ADDR_REGION_CODE + 1
#define ROM_ADDR_LANG_EXT_AUDIO ROM_ADDR_ADULT_INFO + 4
#define ROM_ADDR_LANG_EXT_SP ROM_ADDR_LANG_EXT_AUDIO + 1 /* 1byte */
#define ROM_ADDR_SPK_SET ROM_ADDR_LANG_EXT_SP + 1 // 25~26(19~1a)
#define ROM_ADDR_KROK_SET ROM_ADDR_SPK_SET + 3
#define ROM_ADDR_ETC_INFO ROM_ADDR_KROK_SET + 2
#if _SUPPORT_TVG_FUNCTION_ //(weilf)20060720
#define ROM_ADDR_TVG_GUARDIAN ROM_ADDR_ETC_INFO + 6
#define ROM_ADDR_TVG_CC ROM_ADDR_TVG_GUARDIAN + 1
#define ROM_ADDR_TVG_PASSWORD ROM_ADDR_TVG_CC + 1
//PASSWORD:20bits,need 3 bytes
#endif
#define ROM_ADDR_DISC_INFO_START 0xAA
#define DISC_INFO_SIZE 0x10
#define ROM_ADDR_RESUME_FLAG 0x30
#define ROM_ADDR_APPL_RESUME ROM_ADDR_RESUME_FLAG+1
#if 0
/* For DVD Video case */
#define ROM_ADDR_DVD_HLBT ROM_ADDR_RESUME_FLAG + 1 /* Highlight btn*/
#define ROM_ADDR_DVD_NVPCK ROM_ADDR_DVD_HLBT + 1 /* NV pack */
#define ROM_ADDR_DVD_CN ROM_ADDR_DVD_NVPCK + 4 /* Cell # */
#define ROM_ADDR_DVD_PGCN ROM_ADDR_DVD_CN + 1
#define ROM_ADDR_DVD_FPGCN ROM_ADDR_DVD_PGCN + 2 /* First PGCN */
#define ROM_ADDR_DVD_TTN ROM_ADDR_DVD_FPGCN + 2 /* Title # */
#define ROM_ADDR_DVD_ANGLE ROM_ADDR_DVD_TTN + 1 /* 1 byte */
#define ROM_ADDR_DVD_GPRM ROM_ADDR_DVD_ANGLE + 1
#define ROM_ADDR_DVD_NV_TIMER ROM_ADDR_DVD_GPRM + 32
#define ROM_ADDR_DVD_NV_PGCN ROM_ADDR_DVD_NV_TIMER + 2
#define ROM_ADDR_DVD_AUDIO_ID ROM_ADDR_DVD_NV_PGCN + 2
#define ROM_ADDR_DVD_GPRM_MODE ROM_ADDR_DVD_AUDIO_ID + 1
#define ROM_ADDR_DVD_SUBTITLE_ID ROM_ADDR_DVD_GPRM_MODE + 2
/* For xVCD case */
/* <<< @: 5008CHN-XXX.hkpark 050510 :power off/resume changed msf to lba*/
#define ROM_ADDR_XVCD_START_LBA ROM_ADDR_RESUME_FLAG + 1
/* >>> @: 5008CHN-XXX.hkpark 050510 : */
#define ROM_ADDR_XVCD_TRACK_NUM ROM_ADDR_XVCD_START_LBA + 4 /* 4 byte */
#define ROM_ADDR_XVCD_ITEM ROM_ADDR_XVCD_TRACK_NUM + 4
#define ROM_ADDR_XVCD_STATE ROM_ADDR_XVCD_ITEM + 1
#define ROM_ADDR_XVCD_PSD_OFFSET ROM_ADDR_XVCD_STATE + 1 /* 4 byte */
#define ROM_ADDR_XVCD_SEQ_HOR ROM_ADDR_XVCD_PSD_OFFSET + 4 /* Horizontal */
#define ROM_ADDR_XVCD_SEQ_VER ROM_ADDR_XVCD_SEQ_HOR + 4 /* Vertical */
#define ROM_ADDR_XVCD_SEQ_EXT ROM_ADDR_XVCD_SEQ_VER + 4 /* Extension */
#define ROM_ADDR_XVCD_SEQ_MODE ROM_ADDR_XVCD_SEQ_EXT + 4 /* MPEG mode 1byte */
/* <<< @: 5008CHN-XXX.hkpark 050510 :power off/resume add one parameter for cdda */
#define ROM_ADDR_XVCD_DISC_TYPE ROM_ADDR_XVCD_SEQ_MODE+1 //Added by phk
/* >>> @: 5008CHN-XXX.hkpark 050510 : */
/* for CD-DA case */
#define ROM_ADDR_CDDA_TRACK_NUM ROM_ADDR_RESUME_FLAG + 1
#define ROM_ADDR_CDDA_START_MIN ROM_ADDR_CDDA_TRACK_NUM + 1
#define ROM_ADDR_CDDA_START_SEC ROM_ADDR_CDDA_START_MIN + 1
#define ROM_ADDR_CDDA_START_FRAME ROM_ADDR_CDDA_START_SEC + 1 /* 1 byte */
/*For Mmp case*/
#define ROM_ADDR_MMP_FOLDER_INDEX ROM_ADDR_RESUME_FLAG + 1
#define ROM_ADDR_MMP_FILE_INDEX ROM_ADDR_MMP_FOLDER_INDEX + 2
#define ROM_ADDR_MMP_FILE_TYPE ROM_ADDR_MMP_FILE_INDEX + 2
#endif
#define EEPROM_ADDRESS_VALID_CHECK 0x72
#define EEPROM_VALID_CHECK_COUNT 8
/*
* data types
*/
#define EEPROM_VALID_DATA_CHECK 0x5A /* EEPROM data check */
/*********************************************
* Data types
*********************************************/
typedef enum {
I2C_SlaveRx,
I2C_SlaveTx,
I2C_MasterRx,
I2C_MasterTx
}I2C_Mode_t;
typedef enum {
I2C_CmdSTOP,
I2C_CmdSTART
}I2C_Cmd_t;
/*********************************************
* Define
*********************************************/
#define I2C_ACK 7
#define I2C_512CK 6
#define I2C_PENDING (1<<4)
#define I2C_PRESCALE 0xf /* PCLK/512/2 = 100KHz *//* steven */
#define I2C_BusBusy (1<<5)
#define I2C_Enable (1<<4)
#define I2C_AckFlag 0
#define I2C_SLAVE 1 /* S5H5002 Slave address */
/*********************************************
* Functions Define
*********************************************/
VOID I2C_Initilize(VOID);
VOID I2C_Stop(VOID);
VOID I2C_SlaveAddress(UCHAR device_address, UCHAR word_address);
VOID I2C_WriteByte(UCHAR data);
UCHAR I2C_ReadByte(VOID);
VOID I2C_ReadMode(UCHAR word_address);
VOID I2C_RandomByteWrite(UCHAR slave_add, UCHAR word_add, UCHAR data);
VOID I2C_PageWrite(UCHAR slave_add, UCHAR word_add, UCHAR write_num, UCHAR *data_ptr);
VOID I2C_PageRead(UCHAR slave_add, UCHAR word_add, UCHAR read_num, UCHAR *data_ptr);
UCHAR I2C_RandomByteRead(UCHAR slave_add, UCHAR word_add);
UCHAR I2C_CurrentRead(UCHAR slave_add);
VOID I2C_SequentialRead(UCHAR slave_add, UCHAR read_num, UCHAR *data_ptr);
VOID I2C_CheckComplete(VOID); //added by steven 2004.7.2
/*------------------------------------------------------------------------------*/
#ifdef __cplusplus
}
#endif
#endif /*__I2C_H__*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -