OSDN Git Service

iio: imu: st_lsm6dsx: add dts property to disable sensor-hub
authorLorenzo Bianconi <lorenzo@kernel.org>
Sat, 13 Nov 2021 15:23:14 +0000 (16:23 +0100)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Sat, 4 Dec 2021 15:34:17 +0000 (15:34 +0000)
Introduce the capability to disable sensorhub through a device-tree
property since there are some configurations where users want to
explicitly disable sensor-hub auto-probing at bootstrap.
A typical configuration is when the sensorhub clock/data lines are connected
to a pull-up resistor since no slave sensors are connected to the i2c master.
If SDO/SA0 line is connected to the same pull-up resistor, when the driver
tries to probe slave devices connected on sensor-hub, it will force SDO/SA0
line to low, modifying the device i2c address.

Tested-by: Mario Tesi <mario.tesi@st.com>
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Link: https://lore.kernel.org/r/ad7894e7b1c6fb3427fab3f623bb942860ad45cf.1636816719.git.lorenzo@kernel.org
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c

index f2cbbc7..727b4b6 100644 (file)
@@ -2244,7 +2244,9 @@ int st_lsm6dsx_probe(struct device *dev, int irq, int hw_id,
                return err;
 
        hub_settings = &hw->settings->shub_settings;
-       if (hub_settings->master_en.addr) {
+       if (hub_settings->master_en.addr &&
+           (!dev_fwnode(dev) ||
+            !device_property_read_bool(dev, "st,disable-sensor-hub"))) {
                err = st_lsm6dsx_shub_probe(hw, name);
                if (err < 0)
                        return err;