#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <errno.h>
#include "linux/i2c.h"
#include "linux/i2c-dev.h"
#define I2C_DEVICE "/dev/i2c/0"
#define I2C_FAILURE 0
#define I2C_SUCCESS 1
static int thisi2c_init(unsigned long i2cslaveaddr);
static int thisi2c_exit(void);
static int i2c_fd = -1;
static int thisi2c_init(unsigned long i2cslaveaddr)
{
unsigned char buf[2];
if (i2c_fd != -1) {
return I2C_FAILURE;
}
i2c_fd = open(I2C_DEVICE, O_RDWR);
if (i2c_fd < 0) {
printf("open error!/n");
return I2C_FAILURE;
}
if (ioctl(i2c_fd, I2C_SLAVE, i2cslaveaddr) == -1) {
printf("addr error!");
return I2C_FAILURE;
}
/*buf[0]=0x10;
buf[1]=0x10;
if(write(i2c_fd,buf,2)!=1)
{
return I2C_FAILURE;
} */
return I2C_SUCCESS;
}
//
int tvp5158reset()
{
}
int main()//memory
{
int ret;
unsigned char buf[2];
unsigned char add;
unsigned char val;
ret=thisi2c_init(91);
for(add=0x00;add<0xff;add++)
{
write(i2c_fd,&add,1);
read(i2c_fd,&val,1);
printf("add 0x%x -------val 0x%x/n",add,val);
}
buf[0]=0xfe;
buf[1]=0x01;
write(i2c_fd,buf,2);
buf[0]=0xb0;
buf[1]=0x00;
write(i2c_fd,buf,2);
buf[0]=0xb1;
buf[1]=0x10;
write(i2c_fd,buf,2);
buf[0]=0xb2;
buf[1]=0x0d;
write(i2c_fd,buf,2);
buf[0]=0xb3;
buf[1]=0xe1;
write(i2c_fd,buf,2);
buf[0]=0xba;
buf[1]=0x01;
write(i2c_fd,buf,2);
sleep(1);
buf[0]=0xba;
buf[1]=0x00;
write(i2c_fd,buf,2);
thisi2c_exit();
}
//
static int thisi2c_exit(void)
{
if (i2c_fd == -1) {
return I2C_FAILURE;
}
if (close(i2c_fd) == -1) {
return I2C_FAILURE;
}
i2c_fd = -1;
return I2C_SUCCESS;
}
//
int pcf8574t_exit(void)
{
return(thisi2c_exit() );
}
BY WISHMASTER