int check_id(unsigned int dec) { int ret; gpio_i2c_write(dec, 0xFF, 0x01); ret = (gpio_i2c_read(dec, 0xf4)<<8) | (gpio_i2c_read(dec, 0xf5)); return ret; }
static int mt9d131_device_init(void) { unsigned char regvalue; int loop1; /* read Chip version */ gpio_i2c_write(I2C_MT9D131, 0xf0, 0x00); gpio_i2c_write(I2C_MT9D131, 0xf1, 0x00); regvalue = gpio_i2c_read(I2C_MT9D131, 0x00); loop1 = gpio_i2c_read(I2C_MT9D131, 0xf1); if((regvalue != 0x15) || (loop1 != 0x19)) { printk("read Prodect ID Number MSB is %x\n",regvalue); printk("read Prodect ID Number LSB is %x\n",loop1); printk("check mt9d131 ID error.\n"); return -EFAULT; } if(out_mode == 1) mt9d131_uxga_init(); else mt9d131_vga_init(); return 0; }
static uint32_t ks103_read_reg_i2c(uint8_t addr, uint8_t reg) { uint8_t data_read; /* 需要读取的寄存器 */ gpio_i2c_start(); gpio_i2c_write(addr); if(gpio_i2c_ack() != 0){ /* 无应答 */ return KS103_DATA_ERROR; } gpio_i2c_write(reg); if(gpio_i2c_ack() != 0){ /* 无应答 */ return KS103_DATA_ERROR; } /* 读取寄存器的数值 */ gpio_i2c_start(); gpio_i2c_write(addr + 1); if(gpio_i2c_ack() != 0){ /* 无应答 */ return KS103_DATA_ERROR; } data_read = gpio_i2c_read(); gpio_i2c_ack(); gpio_i2c_stop(); return (uint32_t) data_read; }
//int gpioi2c_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg) long gpioi2c_ioctl(struct file *file, unsigned int cmd, unsigned long arg) { unsigned int val; char device_addr, reg_addr; short reg_val; switch(cmd) { case GPIO_I2C_READ: val = *(unsigned int *)arg; device_addr = (val&0xff000000)>>24; reg_addr = (val&0xff0000)>>16; reg_val = gpio_i2c_read(device_addr, reg_addr); *(unsigned int *)arg = (val&0xffff0000)|reg_val; break; case GPIO_I2C_WRITE: val = *(unsigned int *)arg; device_addr = (val&0xff000000)>>24; reg_addr = (val&0xff0000)>>16; reg_val = val&0xffff; gpio_i2c_write(device_addr, reg_addr, reg_val); break; default: return -1; } return 0; }
int tlv320aic31_read(unsigned char chip_addr,unsigned char reg_addr) { #ifdef HI_GPIO_I2C return gpio_i2c_read(chip_addr,reg_addr); #else return i2c_read(chip_addr,reg_addr); #endif }
static unsigned char it6604_byte_read(unsigned char chip_addr, unsigned char addr) { #if 0 #ifndef HI_FPGA return gpio_i2c_read(chip_addr,addr); #else if (IT6604A_I2C_ADDR == chip_addr || IT6604B_I2C_ADDR == chip_addr) { return gpio_i2c_read(chip_addr,addr); } else { return gpio_i2c1_read(chip_addr,addr); } #endif #else return gpio_i2c_read(chip_addr,addr); #endif }
BYTE HDMIRX_ReadI2C_Byte(BYTE RegAddr) { return gpio_i2c_read(IT6604A_I2C_ADDR,RegAddr); }