i use /drivers/input/touchscreen/tsc2007.c with am335x, but it looks like this. i do not know why it happens.
static inline int tsc2007_xfer(struct tsc2007 *tsc, u8 cmd)
{
..........
data = i2c_smbus_read_word_data(tsc->client, cmd);/*here is the bug.*/
............
}
as we know, the data will be sent after the ack after slave address, but here we received the ack but then data disappeared!!!!!