static int w9966_i2c_rbyte(struct w9966 *cam) { unsigned char data = 0x00; int i; w9966_i2c_setsda(cam, 1); for (i = 0; i < 8; i++) { if (w9966_i2c_setscl(cam, 1) == -1) return -1; data = data << 1; if (w9966_i2c_getsda(cam)) data |= 0x01; w9966_i2c_setscl(cam, 0); } return data; }
// Read a data byte with ack from the i2c-bus // Expects a claimed pdev. -1 on error static int w9966_i2c_rbyte(struct w9966_dev* cam) { u8 data = 0x00; int i; w9966_i2c_setsda(cam, 1); for (i = 0; i < 8; i++) { if (!w9966_i2c_setscl(cam, 1)) return -1; data = data << 1; if (w9966_i2c_getsda(cam)) data |= 0x01; w9966_i2c_setscl(cam, 0); } return data; }