Commit 30132fe4 authored by Hans de Goede's avatar Hans de Goede Committed by Jonathan Cameron
Browse files

iio: accel: kxcjk-1013: Set label based on accel-location on 2-accel yoga-style 2-in-1s



Some 2-in-1 laptops / convertibles with 360° (yoga-style) hinges,
use 2 KXCJ91008 accelerometers:
1 in their display using an ACPI HID of "KIOX010A"; and
1 in their base    using an ACPI HID of "KIOX020A"

Since in this case we know the location of each accelerometer,
set the label for the accelerometers to the standardized
"accel-display" resp. "accel-base" labels. This way userspace
can use the labels to get the location.

This was tested on a Medion Akoya E2228T MD60250.

Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
Link: https://lore.kernel.org/r/20210207160901.110643-4-hdegoede@redhat.com


Signed-off-by: default avatarJonathan Cameron <Jonathan.Cameron@huawei.com>
parent 788348a5
Loading
Loading
Loading
Loading
+10 −4
Original line number Diff line number Diff line
@@ -1284,7 +1284,8 @@ 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,
					       enum kx_acpi_type *acpi_type)
					       enum kx_acpi_type *acpi_type,
					       const char **label)
{
	const struct acpi_device_id *id;

@@ -1292,10 +1293,14 @@ static const char *kxcjk1013_match_acpi_device(struct device *dev,
	if (!id)
		return NULL;

	if (strcmp(id->id, "SMO8500") == 0)
	if (strcmp(id->id, "SMO8500") == 0) {
		*acpi_type = ACPI_SMO8500;
	else if (strcmp(id->id, "KIOX010A") == 0)
	} else if (strcmp(id->id, "KIOX010A") == 0) {
		*acpi_type = ACPI_KIOX010A;
		*label = "accel-display";
	} else if (strcmp(id->id, "KIOX020A") == 0) {
		*label = "accel-base";
	}

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

@@ -1368,7 +1373,8 @@ static int kxcjk1013_probe(struct i2c_client *client,
	} else if (ACPI_HANDLE(&client->dev)) {
		name = kxcjk1013_match_acpi_device(&client->dev,
						   &data->chipset,
						   &data->acpi_type);
						   &data->acpi_type,
						   &indio_dev->label);
	} else
		return -ENODEV;