.probe_new() doesn't get the i2c_device_id * parameter, so determine that explicitly in .probe(). The device_id array has to move up for that to work. Signed-off-by: Uwe Kleine-König <u.kleine-koenig@xxxxxxxxxxxxxx> --- drivers/iio/accel/da280.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/drivers/iio/accel/da280.c b/drivers/iio/accel/da280.c index 04e9c5678964..72a6a835ee74 100644 --- a/drivers/iio/accel/da280.c +++ b/drivers/iio/accel/da280.c @@ -105,8 +105,14 @@ static void da280_disable(void *client) da280_enable(client, false); } -static int da280_probe(struct i2c_client *client, - const struct i2c_device_id *id) +static const struct i2c_device_id da280_i2c_id[] = { + { "da226", da226 }, + { "da280", da280 }, + {} +}; +MODULE_DEVICE_TABLE(i2c, da280_i2c_id); + +static int da280_probe(struct i2c_client *client) { int ret; struct iio_dev *indio_dev; @@ -131,6 +137,9 @@ static int da280_probe(struct i2c_client *client, if (ACPI_HANDLE(&client->dev)) { chip = da280_match_acpi_device(&client->dev); } else { + const struct i2c_device_id *id = + i2c_match_id(da280_i2c_id, client); + chip = id->driver_data; } @@ -171,20 +180,13 @@ static const struct acpi_device_id da280_acpi_match[] = { }; MODULE_DEVICE_TABLE(acpi, da280_acpi_match); -static const struct i2c_device_id da280_i2c_id[] = { - { "da226", da226 }, - { "da280", da280 }, - {} -}; -MODULE_DEVICE_TABLE(i2c, da280_i2c_id); - static struct i2c_driver da280_driver = { .driver = { .name = "da280", .acpi_match_table = ACPI_PTR(da280_acpi_match), .pm = pm_sleep_ptr(&da280_pm_ops), }, - .probe = da280_probe, + .probe_new = da280_probe, .id_table = da280_i2c_id, }; -- 2.37.2