|
@@ -44,9 +44,19 @@ static int inv_mpu_i2c_disable(struct iio_dev *indio_dev)
|
|
|
static int inv_mpu_probe(struct spi_device *spi)
|
|
|
{
|
|
|
struct regmap *regmap;
|
|
|
- const struct spi_device_id *id = spi_get_device_id(spi);
|
|
|
- const char *name = id ? id->name : NULL;
|
|
|
- const int chip_type = id ? id->driver_data : 0;
|
|
|
+ const struct spi_device_id *spi_id;
|
|
|
+ const struct acpi_device_id *acpi_id;
|
|
|
+ const char *name = NULL;
|
|
|
+ enum inv_devices chip_type;
|
|
|
+
|
|
|
+ if ((spi_id = spi_get_device_id(spi))) {
|
|
|
+ chip_type = (enum inv_devices)spi_id->driver_data;
|
|
|
+ name = spi_id->name;
|
|
|
+ } else if ((acpi_id = acpi_match_device(spi->dev.driver->acpi_match_table, &spi->dev))) {
|
|
|
+ chip_type = (enum inv_devices)acpi_id->driver_data;
|
|
|
+ } else {
|
|
|
+ return -ENODEV;
|
|
|
+ }
|
|
|
|
|
|
regmap = devm_regmap_init_spi(spi, &inv_mpu_regmap_config);
|
|
|
if (IS_ERR(regmap)) {
|
|
@@ -76,7 +86,7 @@ static const struct spi_device_id inv_mpu_id[] = {
|
|
|
MODULE_DEVICE_TABLE(spi, inv_mpu_id);
|
|
|
|
|
|
static const struct acpi_device_id inv_acpi_match[] = {
|
|
|
- {"INVN6000", 0},
|
|
|
+ {"INVN6000", INV_MPU6000},
|
|
|
{ },
|
|
|
};
|
|
|
MODULE_DEVICE_TABLE(acpi, inv_acpi_match);
|