[PATCH 2/2] hp_accel: fix accelerometer orientation for EliteBook 840

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The HP EliteBook 840 G1 accelerometer does not behave according to the
current "EliteBook 84" driver quirk.

Instead, it needs all three axes inverted in order to achieve the
behaviour described in the lis3lv02d.rst documentation. We have confirmed
this on multiple units.

Add a new product-specific quirk to correct this, but also leave the
previous match in place, assuming that it is correct for other models
that will continue to match that one instead.

DMI data of this product is:
Handle 0x000D, DMI type 1, 27 bytes
System Information
	Manufacturer: Hewlett-Packard
	Product Name: HP EliteBook 840 G1
	Version: A3009DD10303
	Serial Number: 5CG51115YS
	SKU Number: F9W96UP#ABA
	Family: 103C_5336AN G=N L=BUS B=HP S=ELI

Handle 0x000E, DMI type 2, 16 bytes
Base Board Information
	Manufacturer: Hewlett-Packard
	Product Name: 198F
	Version: KBC Version 15.59
	Serial Number: PDXVC00WB8G0Y2

Signed-off-by: Daniel Drake <drake@xxxxxxxxxxxx>
---
 drivers/platform/x86/hp_accel.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/platform/x86/hp_accel.c b/drivers/platform/x86/hp_accel.c
index 7a2747455237..bbacaa21d539 100644
--- a/drivers/platform/x86/hp_accel.c
+++ b/drivers/platform/x86/hp_accel.c
@@ -162,6 +162,7 @@ static int lis3lv02d_dmi_matched(const struct dmi_system_id *dmi)
 DEFINE_CONV(normal, 1, 2, 3);
 DEFINE_CONV(y_inverted, 1, -2, 3);
 DEFINE_CONV(x_inverted, -1, 2, 3);
+DEFINE_CONV(xyz_inverted, -1, -2, -3);
 DEFINE_CONV(x_inverted_usd, -1, 2, -3);
 DEFINE_CONV(z_inverted, 1, 2, -3);
 DEFINE_CONV(xy_swap, 2, 1, 3);
@@ -237,6 +238,7 @@ static const struct dmi_system_id lis3lv02d_dmi_ids[] = {
 	AXIS_DMI_MATCH("Mini510x", "HP Mini 510", xy_rotated_left_usd),
 	AXIS_DMI_MATCH("HPB63xx", "HP ProBook 63", xy_swap),
 	AXIS_DMI_MATCH("HPB64xx", "HP ProBook 64", xy_swap),
+	AXIS_DMI_MATCH("HPEB840", "HP EliteBook 840", xyz_inverted),
 	AXIS_DMI_MATCH("HPB64xx", "HP EliteBook 84", xy_swap),
 	AXIS_DMI_MATCH("HPB65xx", "HP ProBook 65", x_inverted),
 	AXIS_DMI_MATCH("HPZBook15", "HP ZBook 15", x_inverted),
-- 
2.20.1




[Index of Archives]     [Linux Kernel Development]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux