Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8ccf1ff7 authored by Hans de Goede's avatar Hans de Goede Committed by Greg Kroah-Hartman
Browse files

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



commit 11e94f28c3de35d5ad1ac6a242a5b30f4378991a upstream.

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: default avatarHans de Goede <hdegoede@redhat.com>
Fixes: 7f6232e69539 ("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: default avatarJonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent bd8352d6
Loading
Loading
Loading
Loading
+10 −5
Original line number Diff line number Diff line
@@ -91,6 +91,11 @@ enum kx_chipset {
	KX_MAX_CHIPS /* this must be last */
};

enum kx_acpi_type {
	ACPI_GENERIC,
	ACPI_SMO8500,
};

struct kxcjk1013_data {
	struct i2c_client *client;
	struct iio_trigger *dready_trig;
@@ -107,7 +112,7 @@ struct kxcjk1013_data {
	bool motion_trigger_on;
	int64_t timestamp;
	enum kx_chipset chipset;
	bool is_smo8500_device;
	enum kx_acpi_type acpi_type;
};

enum kxcjk1013_axis {
@@ -1144,7 +1149,7 @@ static irqreturn_t kxcjk1013_data_rdy_trig_poll(int irq, void *private)

static const char *kxcjk1013_match_acpi_device(struct device *dev,
					       enum kx_chipset *chipset,
					       bool *is_smo8500_device)
					       enum kx_acpi_type *acpi_type)
{
	const struct acpi_device_id *id;

@@ -1153,7 +1158,7 @@ static const char *kxcjk1013_match_acpi_device(struct device *dev,
		return NULL;

	if (strcmp(id->id, "SMO8500") == 0)
		*is_smo8500_device = true;
		*acpi_type = ACPI_SMO8500;

	*chipset = (enum kx_chipset)id->driver_data;

@@ -1189,7 +1194,7 @@ static int kxcjk1013_probe(struct i2c_client *client,
	} else if (ACPI_HANDLE(&client->dev)) {
		name = kxcjk1013_match_acpi_device(&client->dev,
						   &data->chipset,
						   &data->is_smo8500_device);
						   &data->acpi_type);
	} else
		return -ENODEV;

@@ -1207,7 +1212,7 @@ static int kxcjk1013_probe(struct i2c_client *client,
	indio_dev->modes = INDIO_DIRECT_MODE;
	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,
						kxcjk1013_data_rdy_trig_poll,
						kxcjk1013_event_handler,