电容屏gslX680的驱动,使用中总是出现:i2c i2c-0: sendbytes: NAK bailout.的错误,导致触摸屏很不稳定。最后发现是复位芯片的时候出错了。
static void reset_chip(struct i2c_client *client)
{
u8 buf[4] = {0x00};
u8 tmp = 0x88;
u8 temp = 0x04;
/*0xE0: STATUS register*/
gsl_ts_write(client, 0xe0, &tmp, 1);// i2c i2c-0: sendbytes: NAK bailout.
msleep(10);
gsl_ts_write(client, 0xe4, &temp, 1);
msleep(10);
gsl_ts_write(client, 0xbc, buf, sizeof(buf));
msleep(10);
}
看了http://linux-sunxi.org/GSL1680的相关介绍,的确是要往0xe0状态寄存器写0x88的值,但是为什么在我这一直写不进去,换做其他的值是可以的。
最后换成0x80试了下,不会报错了,电容屏使用也没问题,真是不解。