Esempio n. 1
0
static int w9966_rReg_i2c(struct w9966_dev* cam, int reg)
{
	int data;

	w9966_i2c_setsda(cam, 0);
	w9966_i2c_setscl(cam, 0);

	if (
		w9966_i2c_wbyte(cam, W9966_I2C_W_ID) == -1 ||
		w9966_i2c_wbyte(cam, reg) == -1
	)
		return -1;

	w9966_i2c_setsda(cam, 1);
	if (w9966_i2c_setscl(cam, 1) == -1)
		return -1;
	w9966_i2c_setsda(cam, 0);
	w9966_i2c_setscl(cam, 0);

	if (
		w9966_i2c_wbyte(cam, W9966_I2C_R_ID) == -1 ||
		(data = w9966_i2c_rbyte(cam)) == -1
	)
		return -1;

	w9966_i2c_setsda(cam, 0);

	if (w9966_i2c_setscl(cam, 1) == -1)
		return -1;
	w9966_i2c_setsda(cam, 1);

	return data;
}
Esempio n. 2
0
// Read a register from the i2c device.
// Expects claimed pdev. -1 on error
static int w9966_i2c_rreg(struct w9966_dev* cam, int device, int reg)
{
	int data;

	w9966_i2c_setsda(cam, 0);
	w9966_i2c_setscl(cam, 0);

	if (!w9966_i2c_wbyte(cam, device << 1) ||
	    !w9966_i2c_wbyte(cam, reg))
		return -1;

	w9966_i2c_setsda(cam, 1);
	if (!w9966_i2c_setscl(cam, 1))
		return -1;

	w9966_i2c_setsda(cam, 0);
	w9966_i2c_setscl(cam, 0);

	if (!w9966_i2c_wbyte(cam, (device << 1) | 1) ||
	    (data = w9966_i2c_rbyte(cam)) == -1)
		return -1;

	w9966_i2c_setsda(cam, 0);

	if (!w9966_i2c_setscl(cam, 1))
		return -1;

	w9966_i2c_setsda(cam, 1);

	return data;
}