mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-21 08:19:28 +00:00
![Jeremy Cline](/assets/img/avatar_default.png)
Some BOSC0200 acpi_device-s describe two accelerometers in a single ACPI device. Normally we would handle this by letting the special drivers/platform/x86/i2c-multi-instantiate.c driver handle the BOSC0200 ACPI id and let it instantiate 2 bmc150_accel type i2c_client-s for us. But doing so changes the modalias for the first accelerometer (which is already supported and used on many devices) from acpi:BOSC0200 to i2c:bmc150_accel. The modalias is not only used to load the driver, but is also used by hwdb matches in /lib/udev/hwdb.d/60-sensor.hwdb which provide a mountmatrix to userspace by setting the ACCEL_MOUNT_MATRIX udev property. Switching the handling of the BOSC0200 over to i2c-multi-instantiate.c will break the hwdb matches causing the ACCEL_MOUNT_MATRIX udev prop to no longer be set. So switching over to i2c-multi-instantiate.c is not an option. Changes by Hans de Goede: -Add explanation to the commit message why i2c-multi-instantiate.c cannot be used -Also set the dev_name, fwnode and irq i2c_board_info struct members for the 2nd client Signed-off-by: Jeremy Cline <jeremy@jcline.org> Signed-off-by: Hans de Goede <hdegoede@redhat.com> Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com> Link: https://lore.kernel.org/r/20201130141954.339805-2-hdegoede@redhat.com BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=198671 Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
25 lines
642 B
C
25 lines
642 B
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef _BMC150_ACCEL_H_
|
|
#define _BMC150_ACCEL_H_
|
|
|
|
struct regmap;
|
|
|
|
enum {
|
|
bmc150,
|
|
bmi055,
|
|
bma255,
|
|
bma250e,
|
|
bma222,
|
|
bma222e,
|
|
bma280,
|
|
};
|
|
|
|
int bmc150_accel_core_probe(struct device *dev, struct regmap *regmap, int irq,
|
|
const char *name, bool block_supported);
|
|
int bmc150_accel_core_remove(struct device *dev);
|
|
struct i2c_client *bmc150_get_second_device(struct i2c_client *second_device);
|
|
void bmc150_set_second_device(struct i2c_client *second_device);
|
|
extern const struct dev_pm_ops bmc150_accel_pm_ops;
|
|
extern const struct regmap_config bmc150_regmap_conf;
|
|
|
|
#endif /* _BMC150_ACCEL_H_ */
|