Comment 62 for bug 1745342

Revision history for this message
Kai-Heng Feng (kaihengfeng) wrote :

First, kudos to Joseph, my guesswork is based on his hard work.

Here's my theory: SMO91D0 (iio sensor hub) is connected to i2c's master adapter, SYNA7500 is connected to i2c's slave adapter.

We can see that in v4.12, both of them gets detected but SMO* doesn't get probed correctly. In v4.13, the support for i2c master/slave code got merged, now SMO* device can work, but the SYNA* is missing, because it's connected to the slave adapter.

Here's the relevant code:
#if IS_ENABLED(CONFIG_I2C_DESIGNWARE_SLAVE)
extern int i2c_dw_probe_slave(struct dw_i2c_dev *dev);
#else
static inline int i2c_dw_probe_slave(struct dw_i2c_dev *dev) { return -EINVAL; }
#endif

Right now CONFIG_I2C_DESIGNWARE_SLAVE is not enabled, so let's try if enable it can make your touchscreen work again:

http://people.canonical.com/~khfeng/lp1745342-i2c-slave/