app_i2c.h 2.48 KB
/*
** Copyright (C) 2002 Optek. All rights reserved.
**
** The information and source code contained herein is the exclusive
** property of Mediamatics and may  not be disclosed, examined or
** reproduced in whole or in part without explicit written authorization
** from the company.
*/

/*
** Author:
** 
** Date:
**
** Description:
*/

#ifndef _APP_I2C_H_
#define _APP_I2C_H_
#include "c_def.h"
#include "oem.h"

//#define OTK5282P
//#define OTK5283P   // remove to oem.h
//#define I2C_PIN_SWITCH

#define MAX_I2C_TRY	4

/*
    @enum I2C_RETURN | Return status for driver calls
*/

typedef enum {
	I2C_SUCCESS,	/* @emem Success */
	I2C_ERROR		/* @emem Failure */
} I2C_RETURN;

/*
typedef struct {
	U8	addr;
	U8 	sub_addr;
	U8	*sbuf;
	I16	slen;
	U8	*rbuf;
	I16	rlen;
} I2C_BUF;
*/
void app_i2c0_init (void);
void app_i2c0_open (void);
void app_i2c0_close (void);
void app_i2c0_fini (void);

void app_i2c2_init (void);
void app_i2c2_open (void);
void app_i2c2_close (void);
void app_i2c2_fini (void);

void app_i2c3_init (void);

I2C_RETURN I2C_write (BYTE i2c_addr, BYTE *wbuf, WORD len);
I2C_RETURN I2C_write_sub (BYTE i2c_addr, BYTE sub_addr, BYTE *wbuf, WORD len);
I2C_RETURN I2C_read (BYTE i2c_addr, BYTE *rbuf, WORD len);
I2C_RETURN I2C_read_sub (BYTE i2c_addr, BYTE sub_addr, BYTE *rbuf, WORD len);

#ifndef EMBEDED_HW_I2C
I2C_RETURN I2C0_write (BYTE i2c_addr, BYTE *wbuf, WORD len);
I2C_RETURN I2C0_write_sub (BYTE i2c_addr, BYTE sub_addr, BYTE *wbuf, WORD len);
I2C_RETURN I2C0_read (BYTE i2c_addr, BYTE *rbuf, WORD len);
I2C_RETURN I2C0_read_sub (BYTE i2c_addr, BYTE sub_addr, BYTE *rbuf, WORD len);
#else
I2C_RETURN I2C0_write (U8 i2c_addr, U8 *wbuf, U16 len);
I2C_RETURN I2C0_write_sub (U8 i2c_addr, U8 sub_addr, U8 *wbuf, U16 len);
I2C_RETURN I2C0_read (U8 i2c_addr, U8 *rbuf, U16 len);
I2C_RETURN I2C0_read_sub (BYTE i2c_addr, BYTE sub_addr, BYTE *rbuf, WORD len);
#endif

/***************PMU Section*****************************/
enum{
      enCHARGE_0mA,
      enCHARGE_5mA,
      enCHARGE_10mA,
      enCHARGE_20mA,
      enCHARGE_50mA,
      enCHARGE_75mA,
      enCHARGE_100mA,
      enCHARGE_150mA,
};
enum{
      enLDO_CORE1V1,
      enLDO_CORE1V0,
      enLDO_CORE1V2,
    };

enum{
      enDC_BUCK_1V6,
      enDC_BUCK_1V3,
      enDC_BUCK_1V2,
      enDC_BUCK_1V5,
};
enum{ 
      enCODEC_LDO_3V2,
      enCODEC_LDO_2V5,
      enCODEC_LDO_1V8,
};
void app_otk5310_pmu_init(void);      
void app_otk5310_pmu_recharge_ctl(U8 charge_mA);
void app_pmu_voltage_ctl(U8 buck_v, U8 core_v, U8 codec_v);


#endif //_APP_I2C_H_