⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 i2c_api.h

📁 SAMSUNG 5009的源代码
💻 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 + -