iio: accel: kxcjk1013: Replace is_smo8500_device with an acpi_type enum

Replace the boolean is_smo8500_device variable with an acpi_type enum.

For now this can be either ACPI_GENERIC or ACPI_SMO8500, this is a
preparation patch for adding special handling for the KIOX010A ACPI HID,
which will add a ACPI_KIOX010A acpi_type to the introduced enum.

For stable as needed as precursor for next patch.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Fixes: 7f6232e695 ("iio: accel: kxcjk1013: Add KIOX010A ACPI Hardware-ID")
Cc: <Stable@vger.kernel.org>
Link: https://lore.kernel.org/r/20201110133835.129080-2-hdegoede@redhat.com
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
This commit is contained in:
Hans de Goede 2020-11-10 14:38:34 +01:00 committed by Jonathan Cameron
parent 44a146a44f
commit 11e94f28c3
1 changed files with 10 additions and 5 deletions

View File

@ -126,6 +126,11 @@ enum kx_chipset {
KX_MAX_CHIPS /* this must be last */ KX_MAX_CHIPS /* this must be last */
}; };
enum kx_acpi_type {
ACPI_GENERIC,
ACPI_SMO8500,
};
struct kxcjk1013_data { struct kxcjk1013_data {
struct i2c_client *client; struct i2c_client *client;
struct iio_trigger *dready_trig; struct iio_trigger *dready_trig;
@ -143,7 +148,7 @@ struct kxcjk1013_data {
bool motion_trigger_on; bool motion_trigger_on;
int64_t timestamp; int64_t timestamp;
enum kx_chipset chipset; enum kx_chipset chipset;
bool is_smo8500_device; enum kx_acpi_type acpi_type;
}; };
enum kxcjk1013_axis { enum kxcjk1013_axis {
@ -1247,7 +1252,7 @@ static irqreturn_t kxcjk1013_data_rdy_trig_poll(int irq, void *private)
static const char *kxcjk1013_match_acpi_device(struct device *dev, static const char *kxcjk1013_match_acpi_device(struct device *dev,
enum kx_chipset *chipset, enum kx_chipset *chipset,
bool *is_smo8500_device) enum kx_acpi_type *acpi_type)
{ {
const struct acpi_device_id *id; const struct acpi_device_id *id;
@ -1256,7 +1261,7 @@ static const char *kxcjk1013_match_acpi_device(struct device *dev,
return NULL; return NULL;
if (strcmp(id->id, "SMO8500") == 0) if (strcmp(id->id, "SMO8500") == 0)
*is_smo8500_device = true; *acpi_type = ACPI_SMO8500;
*chipset = (enum kx_chipset)id->driver_data; *chipset = (enum kx_chipset)id->driver_data;
@ -1299,7 +1304,7 @@ static int kxcjk1013_probe(struct i2c_client *client,
} else if (ACPI_HANDLE(&client->dev)) { } else if (ACPI_HANDLE(&client->dev)) {
name = kxcjk1013_match_acpi_device(&client->dev, name = kxcjk1013_match_acpi_device(&client->dev,
&data->chipset, &data->chipset,
&data->is_smo8500_device); &data->acpi_type);
} else } else
return -ENODEV; return -ENODEV;
@ -1316,7 +1321,7 @@ static int kxcjk1013_probe(struct i2c_client *client,
indio_dev->modes = INDIO_DIRECT_MODE; indio_dev->modes = INDIO_DIRECT_MODE;
indio_dev->info = &kxcjk1013_info; indio_dev->info = &kxcjk1013_info;
if (client->irq > 0 && !data->is_smo8500_device) { if (client->irq > 0 && data->acpi_type != ACPI_SMO8500) {
ret = devm_request_threaded_irq(&client->dev, client->irq, ret = devm_request_threaded_irq(&client->dev, client->irq,
kxcjk1013_data_rdy_trig_poll, kxcjk1013_data_rdy_trig_poll,
kxcjk1013_event_handler, kxcjk1013_event_handler,