diff options
-rw-r--r-- | drivers/leds/leds-pca963x.c | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/drivers/leds/leds-pca963x.c b/drivers/leds/leds-pca963x.c index 46fbf935944a..ded1e4dac36a 100644 --- a/drivers/leds/leds-pca963x.c +++ b/drivers/leds/leds-pca963x.c | |||
@@ -25,6 +25,7 @@ | |||
25 | * or by adding the 'nxp,hw-blink' property to the DTS. | 25 | * or by adding the 'nxp,hw-blink' property to the DTS. |
26 | */ | 26 | */ |
27 | 27 | ||
28 | #include <linux/acpi.h> | ||
28 | #include <linux/module.h> | 29 | #include <linux/module.h> |
29 | #include <linux/delay.h> | 30 | #include <linux/delay.h> |
30 | #include <linux/string.h> | 31 | #include <linux/string.h> |
@@ -96,6 +97,15 @@ static const struct i2c_device_id pca963x_id[] = { | |||
96 | }; | 97 | }; |
97 | MODULE_DEVICE_TABLE(i2c, pca963x_id); | 98 | MODULE_DEVICE_TABLE(i2c, pca963x_id); |
98 | 99 | ||
100 | static const struct acpi_device_id pca963x_acpi_ids[] = { | ||
101 | { "PCA9632", pca9633 }, | ||
102 | { "PCA9633", pca9633 }, | ||
103 | { "PCA9634", pca9634 }, | ||
104 | { "PCA9635", pca9635 }, | ||
105 | { } | ||
106 | }; | ||
107 | MODULE_DEVICE_TABLE(acpi, pca963x_acpi_ids); | ||
108 | |||
99 | struct pca963x_led; | 109 | struct pca963x_led; |
100 | 110 | ||
101 | struct pca963x { | 111 | struct pca963x { |
@@ -360,7 +370,16 @@ static int pca963x_probe(struct i2c_client *client, | |||
360 | struct pca963x_chipdef *chip; | 370 | struct pca963x_chipdef *chip; |
361 | int i, err; | 371 | int i, err; |
362 | 372 | ||
363 | chip = &pca963x_chipdefs[id->driver_data]; | 373 | if (id) { |
374 | chip = &pca963x_chipdefs[id->driver_data]; | ||
375 | } else { | ||
376 | const struct acpi_device_id *acpi_id; | ||
377 | |||
378 | acpi_id = acpi_match_device(pca963x_acpi_ids, &client->dev); | ||
379 | if (!acpi_id) | ||
380 | return -ENODEV; | ||
381 | chip = &pca963x_chipdefs[acpi_id->driver_data]; | ||
382 | } | ||
364 | pdata = dev_get_platdata(&client->dev); | 383 | pdata = dev_get_platdata(&client->dev); |
365 | 384 | ||
366 | if (!pdata) { | 385 | if (!pdata) { |
@@ -464,6 +483,7 @@ static struct i2c_driver pca963x_driver = { | |||
464 | .driver = { | 483 | .driver = { |
465 | .name = "leds-pca963x", | 484 | .name = "leds-pca963x", |
466 | .of_match_table = of_match_ptr(of_pca963x_match), | 485 | .of_match_table = of_match_ptr(of_pca963x_match), |
486 | .acpi_match_table = ACPI_PTR(pca963x_acpi_ids), | ||
467 | }, | 487 | }, |
468 | .probe = pca963x_probe, | 488 | .probe = pca963x_probe, |
469 | .remove = pca963x_remove, | 489 | .remove = pca963x_remove, |