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:
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: CONFIG_ I2C_DESIGNWARE_ SLAVE) probe_slave( struct dw_i2c_dev *dev); probe_slave( struct dw_i2c_dev *dev) { return -EINVAL; }
#if IS_ENABLED(
extern int i2c_dw_
#else
static inline int i2c_dw_
#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/