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:
parent
44a146a44f
commit
11e94f28c3
|
@ -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,
|
||||||
|
|
Loading…
Reference in New Issue