Lines Matching +full:i2c +full:- +full:mux

1 // SPDX-License-Identifier: GPL-2.0-only
3 #include <linux/i2c.h>
4 #include <linux/i2c-mux.h>
17 static int mpu3050_i2c_bypass_select(struct i2c_mux_core *mux, u32 chan_id) in mpu3050_i2c_bypass_select() argument
19 struct mpu3050 *mpu3050 = i2c_mux_priv(mux); in mpu3050_i2c_bypass_select()
22 pm_runtime_get_sync(mpu3050->dev); in mpu3050_i2c_bypass_select()
26 static int mpu3050_i2c_bypass_deselect(struct i2c_mux_core *mux, u32 chan_id) in mpu3050_i2c_bypass_deselect() argument
28 struct mpu3050 *mpu3050 = i2c_mux_priv(mux); in mpu3050_i2c_bypass_deselect()
30 pm_runtime_mark_last_busy(mpu3050->dev); in mpu3050_i2c_bypass_deselect()
31 pm_runtime_put_autosuspend(mpu3050->dev); in mpu3050_i2c_bypass_deselect()
43 if (!i2c_check_functionality(client->adapter, in mpu3050_i2c_probe()
45 return -EOPNOTSUPP; in mpu3050_i2c_probe()
48 name = id->name; in mpu3050_i2c_probe()
50 return -ENODEV; in mpu3050_i2c_probe()
54 dev_err(&client->dev, "Failed to register i2c regmap: %pe\n", in mpu3050_i2c_probe()
59 ret = mpu3050_common_probe(&client->dev, regmap, client->irq, name); in mpu3050_i2c_probe()
63 /* The main driver is up, now register the I2C mux */ in mpu3050_i2c_probe()
64 mpu3050 = iio_priv(dev_get_drvdata(&client->dev)); in mpu3050_i2c_probe()
65 mpu3050->i2cmux = i2c_mux_alloc(client->adapter, &client->dev, in mpu3050_i2c_probe()
69 /* Just fail the mux, there is no point in killing the driver */ in mpu3050_i2c_probe()
70 if (!mpu3050->i2cmux) in mpu3050_i2c_probe()
71 dev_err(&client->dev, "failed to allocate I2C mux\n"); in mpu3050_i2c_probe()
73 mpu3050->i2cmux->priv = mpu3050; in mpu3050_i2c_probe()
75 i2c_mux_add_adapter(mpu3050->i2cmux, 0, 0, 0); in mpu3050_i2c_probe()
83 struct iio_dev *indio_dev = dev_get_drvdata(&client->dev); in mpu3050_i2c_remove()
86 if (mpu3050->i2cmux) in mpu3050_i2c_remove()
87 i2c_mux_del_adapters(mpu3050->i2cmux); in mpu3050_i2c_remove()
89 mpu3050_common_remove(&client->dev); in mpu3050_i2c_remove()
100 MODULE_DEVICE_TABLE(i2c, mpu3050_i2c_id);
116 .name = "mpu3050-i2c",