linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v4 0/2] Basic DT support for Lenovo Miix 630
@ 2019-04-23 16:05 Jeffrey Hugo
  2019-04-23 16:06 ` [PATCH v4 1/2] HID: quirks: Refactor ELAN 400 and 401 handling Jeffrey Hugo
  2019-04-23 16:06 ` [PATCH v4 2/2] arm64: dts: qcom: Add Lenovo Miix 630 Jeffrey Hugo
  0 siblings, 2 replies; 14+ messages in thread
From: Jeffrey Hugo @ 2019-04-23 16:05 UTC (permalink / raw)
  Cc: lee.jones, bjorn.andersson, dmitry.torokhov, robh+dt,
	mark.rutland, agross, david.brown, jikos, benjamin.tissoires,
	hdegoede, linux-input, devicetree, linux-arm-msm, linux-kernel,
	Jeffrey Hugo

The Lenovo Miix 630 is one of three ARM based (specifically Qualcomm
MSM8998) laptops that comes with Windows, and seems to have a dedicated
following of folks intrested to get Linux up and running on it.

This series adds support for the basic functionality this is validated
towork using devicetree.  Although the laptops do feed ACPI to Windows,
the existing MSM8998 support in mainline is DT based, so DT provides a
quick path to functionality while ACPI support is investigated.

The three devices are very similar, but do have differences in the set
of peripherals supported, so the idea is that the vast majority of the
support for all three can live in a common include, which should reduce
overall duplication.  Adding support for the other two devices as a
follow on should involve minimal work.

The bleeding edge work for these laptops and work in progress can be
found at https://github.com/aarch64-laptops/prebuilt

v4:
-Changed the hid-quirks ELAN handling around per Benjamin Tissoires
-Dropped new DT binding

v3:
-Changed "clam" to "clamshell"
-Defined a dt binding for the combo Elan keyboard + touchpad device
-Adjusted the HID quirk to be correct for dt boot
-Removed extranious comment in board dts
-Fixed board level compatible

v2:
-Changed "cls" to "clam" since feedback indicated "cls" is too opaque,
but
"clamshell" is a mouthfull.  "clam" seems to be a happy medium.

Jeffrey Hugo (3):
  dt-bindings: input: add Elan 400 combo keyboard/touchpad over i2c
  HID: quirks: Fix keyboard + touchpad on Lenovo Miix 630 for DT
  arm64: dts: qcom: Add Lenovo Miix 630

 .../bindings/input/elan,combo400-i2c.txt      |  11 +
 arch/arm64/boot/dts/qcom/Makefile             |   1 +
 .../boot/dts/qcom/msm8998-clamshell.dtsi      | 278 ++++++++++++++++++
 .../boot/dts/qcom/msm8998-lenovo-miix-630.dts |  30 ++
 drivers/hid/hid-quirks.c                      |   3 +-
 5 files changed, 322 insertions(+), 1 deletion(-)
 create mode 100644 Documentation/devicetree/bindings/input/elan,combo400-i2c.txt
 create mode 100644 arch/arm64/boot/dts/qcom/msm8998-clamshell.dtsi
 create mode 100644 arch/arm64/boot/dts/qcom/msm8998-lenovo-miix-630.dts

-- 
2.17.1


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH v4 1/2] HID: quirks: Refactor ELAN 400 and 401 handling
  2019-04-23 16:05 [PATCH v4 0/2] Basic DT support for Lenovo Miix 630 Jeffrey Hugo
@ 2019-04-23 16:06 ` Jeffrey Hugo
  2019-05-21 16:43   ` Bjorn Andersson
  2019-06-06  5:20   ` Lee Jones
  2019-04-23 16:06 ` [PATCH v4 2/2] arm64: dts: qcom: Add Lenovo Miix 630 Jeffrey Hugo
  1 sibling, 2 replies; 14+ messages in thread
From: Jeffrey Hugo @ 2019-04-23 16:06 UTC (permalink / raw)
  To: dmitry.torokhov, jikos, benjamin.tissoires
  Cc: lee.jones, bjorn.andersson, robh+dt, mark.rutland, agross,
	david.brown, hdegoede, linux-input, devicetree, linux-arm-msm,
	linux-kernel, Jeffrey Hugo

There needs to be coordination between hid-quirks and the elan_i2c driver
about which devices are handled by what drivers.  Currently, both use
whitelists, which results in valid devices being unhandled by default,
when they should not be rejected by hid-quirks.  This is quickly becoming
an issue.

Since elan_i2c has a maintained whitelist of what devices it will handle,
use that to implement a blacklist in hid-quirks so that only the devices
that need to be handled by elan_i2c get rejected by hid-quirks, and
everything else is handled by default.  The downside is the whitelist and
blacklist need to be kept in sync.

Suggested-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Jeffrey Hugo <jeffrey.l.hugo@gmail.com>
---
 drivers/hid/hid-quirks.c            | 64 ++++++++++++++++++++++++-----
 drivers/input/mouse/elan_i2c_core.c |  4 ++
 2 files changed, 58 insertions(+), 10 deletions(-)

diff --git a/drivers/hid/hid-quirks.c b/drivers/hid/hid-quirks.c
index 77ffba48cc73..656485e08eb7 100644
--- a/drivers/hid/hid-quirks.c
+++ b/drivers/hid/hid-quirks.c
@@ -987,17 +987,61 @@ bool hid_ignore(struct hid_device *hdev)
 		break;
 	case USB_VENDOR_ID_ELAN:
 		/*
-		 * Many Elan devices have a product id of 0x0401 and are handled
-		 * by the elan_i2c input driver. But the ACPI HID ELAN0800 dev
-		 * is not (and cannot be) handled by that driver ->
-		 * Ignore all 0x0401 devs except for the ELAN0800 dev.
+		 * Blacklist of everything that gets handled by the elan_i2c
+		 * input driver.  This should be kept in sync with the whitelist
+		 * that exists in that driver.  This avoids disabling valid
+		 * touchpads and other ELAN devices.
 		 */
-		if (hdev->product == 0x0401 &&
-		    strncmp(hdev->name, "ELAN0800", 8) != 0)
-			return true;
-		/* Same with product id 0x0400 */
-		if (hdev->product == 0x0400 &&
-		    strncmp(hdev->name, "QTEC0001", 8) != 0)
+		if ((hdev->product == 0x0401 || hdev->product == 0x0400) &&
+		   (strncmp(hdev->name, "ELAN0000", 8) == 0 ||
+		    strncmp(hdev->name, "ELAN0100", 8) == 0 ||
+		    strncmp(hdev->name, "ELAN0600", 8) == 0 ||
+		    strncmp(hdev->name, "ELAN0601", 8) == 0 ||
+		    strncmp(hdev->name, "ELAN0602", 8) == 0 ||
+		    strncmp(hdev->name, "ELAN0603", 8) == 0 ||
+		    strncmp(hdev->name, "ELAN0604", 8) == 0 ||
+		    strncmp(hdev->name, "ELAN0605", 8) == 0 ||
+		    strncmp(hdev->name, "ELAN0606", 8) == 0 ||
+		    strncmp(hdev->name, "ELAN0607", 8) == 0 ||
+		    strncmp(hdev->name, "ELAN0608", 8) == 0 ||
+		    strncmp(hdev->name, "ELAN0609", 8) == 0 ||
+		    strncmp(hdev->name, "ELAN060B", 8) == 0 ||
+		    strncmp(hdev->name, "ELAN060C", 8) == 0 ||
+		    strncmp(hdev->name, "ELAN060F", 8) == 0 ||
+		    strncmp(hdev->name, "ELAN0610", 8) == 0 ||
+		    strncmp(hdev->name, "ELAN0611", 8) == 0 ||
+		    strncmp(hdev->name, "ELAN0612", 8) == 0 ||
+		    strncmp(hdev->name, "ELAN0613", 8) == 0 ||
+		    strncmp(hdev->name, "ELAN0614", 8) == 0 ||
+		    strncmp(hdev->name, "ELAN0615", 8) == 0 ||
+		    strncmp(hdev->name, "ELAN0616", 8) == 0 ||
+		    strncmp(hdev->name, "ELAN0617", 8) == 0 ||
+		    strncmp(hdev->name, "ELAN0618", 8) == 0 ||
+		    strncmp(hdev->name, "ELAN0619", 8) == 0 ||
+		    strncmp(hdev->name, "ELAN061A", 8) == 0 ||
+		    strncmp(hdev->name, "ELAN061B", 8) == 0 ||
+		    strncmp(hdev->name, "ELAN061C", 8) == 0 ||
+		    strncmp(hdev->name, "ELAN061D", 8) == 0 ||
+		    strncmp(hdev->name, "ELAN061E", 8) == 0 ||
+		    strncmp(hdev->name, "ELAN061F", 8) == 0 ||
+		    strncmp(hdev->name, "ELAN0620", 8) == 0 ||
+		    strncmp(hdev->name, "ELAN0621", 8) == 0 ||
+		    strncmp(hdev->name, "ELAN0622", 8) == 0 ||
+		    strncmp(hdev->name, "ELAN0623", 8) == 0 ||
+		    strncmp(hdev->name, "ELAN0624", 8) == 0 ||
+		    strncmp(hdev->name, "ELAN0625", 8) == 0 ||
+		    strncmp(hdev->name, "ELAN0626", 8) == 0 ||
+		    strncmp(hdev->name, "ELAN0627", 8) == 0 ||
+		    strncmp(hdev->name, "ELAN0628", 8) == 0 ||
+		    strncmp(hdev->name, "ELAN0629", 8) == 0 ||
+		    strncmp(hdev->name, "ELAN062A", 8) == 0 ||
+		    strncmp(hdev->name, "ELAN062B", 8) == 0 ||
+		    strncmp(hdev->name, "ELAN062C", 8) == 0 ||
+		    strncmp(hdev->name, "ELAN062D", 8) == 0 ||
+		    strncmp(hdev->name, "ELAN0631", 8) == 0 ||
+		    strncmp(hdev->name, "ELAN0632", 8) == 0 ||
+		    strncmp(hdev->name, "ELAN1000", 8) == 0 ||
+		    strncmp(hdev->name, "elan,ekth3000", 13) == 0))
 			return true;
 		break;
 	}
diff --git a/drivers/input/mouse/elan_i2c_core.c b/drivers/input/mouse/elan_i2c_core.c
index f9525d6f0bfe..3ded19528cd4 100644
--- a/drivers/input/mouse/elan_i2c_core.c
+++ b/drivers/input/mouse/elan_i2c_core.c
@@ -1332,6 +1332,10 @@ static const struct i2c_device_id elan_id[] = {
 };
 MODULE_DEVICE_TABLE(i2c, elan_id);
 
+/*
+ * when these whtielists get updated, the corresponding blacklist in hid-quirks
+ * needs to be updated to match.
+ */
 #ifdef CONFIG_ACPI
 static const struct acpi_device_id elan_acpi_id[] = {
 	{ "ELAN0000", 0 },
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH v4 2/2] arm64: dts: qcom: Add Lenovo Miix 630
  2019-04-23 16:05 [PATCH v4 0/2] Basic DT support for Lenovo Miix 630 Jeffrey Hugo
  2019-04-23 16:06 ` [PATCH v4 1/2] HID: quirks: Refactor ELAN 400 and 401 handling Jeffrey Hugo
@ 2019-04-23 16:06 ` Jeffrey Hugo
  2019-06-06  5:50   ` Lee Jones
  1 sibling, 1 reply; 14+ messages in thread
From: Jeffrey Hugo @ 2019-04-23 16:06 UTC (permalink / raw)
  To: bjorn.andersson, robh+dt, mark.rutland, agross, david.brown
  Cc: lee.jones, dmitry.torokhov, jikos, benjamin.tissoires, hdegoede,
	linux-input, devicetree, linux-arm-msm, linux-kernel,
	Jeffrey Hugo

This adds the initial DT for the Lenovo Miix 630 laptop.  Supported
functionality includes USB (host), microSD-card, keyboard, and trackpad.

Signed-off-by: Jeffrey Hugo <jeffrey.l.hugo@gmail.com>
---
 arch/arm64/boot/dts/qcom/Makefile             |   1 +
 .../boot/dts/qcom/msm8998-clamshell.dtsi      | 278 ++++++++++++++++++
 .../boot/dts/qcom/msm8998-lenovo-miix-630.dts |  30 ++
 3 files changed, 309 insertions(+)
 create mode 100644 arch/arm64/boot/dts/qcom/msm8998-clamshell.dtsi
 create mode 100644 arch/arm64/boot/dts/qcom/msm8998-lenovo-miix-630.dts

diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
index 21d548f02d39..c3e4307bcbd4 100644
--- a/arch/arm64/boot/dts/qcom/Makefile
+++ b/arch/arm64/boot/dts/qcom/Makefile
@@ -6,6 +6,7 @@ dtb-$(CONFIG_ARCH_QCOM)	+= msm8916-mtp.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= msm8992-bullhead-rev-101.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= msm8994-angler-rev-101.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= msm8996-mtp.dtb
+dtb-$(CONFIG_ARCH_QCOM)	+= msm8998-lenovo-miix-630.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= msm8998-mtp.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= sdm845-mtp.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= qcs404-evb-1000.dtb
diff --git a/arch/arm64/boot/dts/qcom/msm8998-clamshell.dtsi b/arch/arm64/boot/dts/qcom/msm8998-clamshell.dtsi
new file mode 100644
index 000000000000..1a341d4b1597
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8998-clamshell.dtsi
@@ -0,0 +1,278 @@
+// SPDX-License-Identifier: GPL-2.0
+/* Copyright (c) 2019, Jeffrey Hugo. All rights reserved. */
+
+/*
+ * Common include for MSM8998 clamshell devices, ie the Lenovo Miix 630,
+ * Asus NovaGo TP370QL, and HP Envy x2.  All three devices are basically the
+ * same, with differences in peripherals.
+ */
+
+#include "msm8998.dtsi"
+#include "pm8998.dtsi"
+#include "pm8005.dtsi"
+
+/ {
+	chosen {
+	};
+
+	thermal-zones {
+		battery-thermal {
+			polling-delay-passive = <250>;
+			polling-delay = <1000>;
+
+			thermal-sensors = <&tsens0 0>;
+
+			trips {
+				battery_crit: trip0 {
+					temperature = <60000>;
+					hysteresis = <2000>;
+					type = "critical";
+				};
+			};
+		};
+
+		skin-thermal {
+			polling-delay-passive = <250>;
+			polling-delay = <1000>;
+
+			thermal-sensors = <&tsens1 5>;
+
+			trips {
+				skin_alert: trip0 {
+					temperature = <44000>;
+					hysteresis = <2000>;
+					type = "passive";
+				};
+
+				skip_crit: trip1 {
+					temperature = <70000>;
+					hysteresis = <2000>;
+					type = "critical";
+				};
+			};
+		};
+	};
+
+	vph_pwr: vph-pwr-regulator {
+		compatible = "regulator-fixed";
+		regulator-name = "vph_pwr";
+		regulator-always-on;
+		regulator-boot-on;
+	};
+};
+
+&qusb2phy {
+	status = "okay";
+
+	vdda-pll-supply = <&vreg_l12a_1p8>;
+	vdda-phy-dpdm-supply = <&vreg_l24a_3p075>;
+};
+
+&rpm_requests {
+	pm8998-regulators {
+		compatible = "qcom,rpm-pm8998-regulators";
+
+		vdd_s1-supply = <&vph_pwr>;
+		vdd_s2-supply = <&vph_pwr>;
+		vdd_s3-supply = <&vph_pwr>;
+		vdd_s4-supply = <&vph_pwr>;
+		vdd_s5-supply = <&vph_pwr>;
+		vdd_s6-supply = <&vph_pwr>;
+		vdd_s7-supply = <&vph_pwr>;
+		vdd_s8-supply = <&vph_pwr>;
+		vdd_s9-supply = <&vph_pwr>;
+		vdd_s10-supply = <&vph_pwr>;
+		vdd_s11-supply = <&vph_pwr>;
+		vdd_s12-supply = <&vph_pwr>;
+		vdd_s13-supply = <&vph_pwr>;
+		vdd_l1_l27-supply = <&vreg_s7a_1p025>;
+		vdd_l2_l8_l17-supply = <&vreg_s3a_1p35>;
+		vdd_l3_l11-supply = <&vreg_s7a_1p025>;
+		vdd_l4_l5-supply = <&vreg_s7a_1p025>;
+		vdd_l6-supply = <&vreg_s5a_2p04>;
+		vdd_l7_l12_l14_l15-supply = <&vreg_s5a_2p04>;
+		vdd_l9-supply = <&vph_pwr>;
+		vdd_l10_l23_l25-supply = <&vph_pwr>;
+		vdd_l13_l19_l21-supply = <&vph_pwr>;
+		vdd_l16_l28-supply = <&vph_pwr>;
+		vdd_l18_l22-supply = <&vph_pwr>;
+		vdd_l20_l24-supply = <&vph_pwr>;
+		vdd_l26-supply = <&vreg_s3a_1p35>;
+		vdd_lvs1_lvs2-supply = <&vreg_s4a_1p8>;
+
+		vreg_s3a_1p35: s3 {
+			regulator-min-microvolt = <1352000>;
+			regulator-max-microvolt = <1352000>;
+		};
+		vreg_s4a_1p8: s4 {
+			regulator-min-microvolt = <1800000>;
+			regulator-max-microvolt = <1800000>;
+			regulator-allow-set-load;
+		};
+		vreg_s5a_2p04: s5 {
+			regulator-min-microvolt = <1904000>;
+			regulator-max-microvolt = <2040000>;
+		};
+		vreg_s7a_1p025: s7 {
+			regulator-min-microvolt = <900000>;
+			regulator-max-microvolt = <1028000>;
+		};
+		vreg_l1a_0p875: l1 {
+			regulator-min-microvolt = <880000>;
+			regulator-max-microvolt = <880000>;
+			regulator-allow-set-load;
+		};
+		vreg_l2a_1p2: l2 {
+			regulator-min-microvolt = <1200000>;
+			regulator-max-microvolt = <1200000>;
+			regulator-allow-set-load;
+		};
+		vreg_l3a_1p0: l3 {
+			regulator-min-microvolt = <1000000>;
+			regulator-max-microvolt = <1000000>;
+		};
+		vreg_l5a_0p8: l5 {
+			regulator-min-microvolt = <800000>;
+			regulator-max-microvolt = <800000>;
+		};
+		vreg_l6a_1p8: l6 {
+			regulator-min-microvolt = <1808000>;
+			regulator-max-microvolt = <1808000>;
+		};
+		vreg_l7a_1p8: l7 {
+			regulator-min-microvolt = <1800000>;
+			regulator-max-microvolt = <1800000>;
+		};
+		vreg_l8a_1p2: l8 {
+			regulator-min-microvolt = <1200000>;
+			regulator-max-microvolt = <1200000>;
+		};
+		vreg_l9a_1p8: l9 {
+			regulator-min-microvolt = <1808000>;
+			regulator-max-microvolt = <2960000>;
+		};
+		vreg_l10a_1p8: l10 {
+			regulator-min-microvolt = <1808000>;
+			regulator-max-microvolt = <2960000>;
+		};
+		vreg_l11a_1p0: l11 {
+			regulator-min-microvolt = <1000000>;
+			regulator-max-microvolt = <1000000>;
+		};
+		vreg_l12a_1p8: l12 {
+			regulator-min-microvolt = <1800000>;
+			regulator-max-microvolt = <1800000>;
+		};
+		vreg_l13a_2p95: l13 {
+			regulator-min-microvolt = <1808000>;
+			regulator-max-microvolt = <2960000>;
+		};
+		vreg_l14a_1p88: l14 {
+			regulator-min-microvolt = <1880000>;
+			regulator-max-microvolt = <1880000>;
+		};
+		vreg_15a_1p8: l15 {
+			regulator-min-microvolt = <1800000>;
+			regulator-max-microvolt = <1800000>;
+		};
+		vreg_l16a_2p7: l16 {
+			regulator-min-microvolt = <2704000>;
+			regulator-max-microvolt = <2704000>;
+		};
+		vreg_l17a_1p3: l17 {
+			regulator-min-microvolt = <1304000>;
+			regulator-max-microvolt = <1304000>;
+		};
+		vreg_l18a_2p7: l18 {
+			regulator-min-microvolt = <2704000>;
+			regulator-max-microvolt = <2704000>;
+		};
+		vreg_l19a_3p0: l19 {
+			regulator-min-microvolt = <3008000>;
+			regulator-max-microvolt = <3008000>;
+		};
+		vreg_l20a_2p95: l20 {
+			regulator-min-microvolt = <2960000>;
+			regulator-max-microvolt = <2960000>;
+			regulator-allow-set-load;
+		};
+		vreg_l21a_2p95: l21 {
+			regulator-min-microvolt = <2960000>;
+			regulator-max-microvolt = <2960000>;
+			regulator-allow-set-load;
+			regulator-system-load = <800000>;
+		};
+		vreg_l22a_2p85: l22 {
+			regulator-min-microvolt = <2864000>;
+			regulator-max-microvolt = <2864000>;
+		};
+		vreg_l23a_3p3: l23 {
+			regulator-min-microvolt = <3312000>;
+			regulator-max-microvolt = <3312000>;
+		};
+		vreg_l24a_3p075: l24 {
+			regulator-min-microvolt = <3088000>;
+			regulator-max-microvolt = <3088000>;
+		};
+		vreg_l25a_3p3: l25 {
+			regulator-min-microvolt = <3104000>;
+			regulator-max-microvolt = <3312000>;
+		};
+		vreg_l26a_1p2: l26 {
+			regulator-min-microvolt = <1200000>;
+			regulator-max-microvolt = <1200000>;
+		};
+		vreg_l28_3p0: l28 {
+			regulator-min-microvolt = <3008000>;
+			regulator-max-microvolt = <3008000>;
+		};
+
+		vreg_lvs1a_1p8: lvs1 {
+			regulator-min-microvolt = <1800000>;
+			regulator-max-microvolt = <1800000>;
+		};
+
+		vreg_lvs2a_1p8: lvs2 {
+			regulator-min-microvolt = <1800000>;
+			regulator-max-microvolt = <1800000>;
+		};
+
+	};
+};
+
+&tlmm {
+	gpio-reserved-ranges = <0 4>, <81 4>;
+
+	touchpad: touchpad {
+		config {
+			pins = "gpio123";
+			bias-pull-up;           /* pull up */
+		};
+	};
+};
+
+&sdhc2 {
+	status = "okay";
+
+	vmmc-supply = <&vreg_l21a_2p95>;
+	vqmmc-supply = <&vreg_l13a_2p95>;
+
+	pinctrl-names = "default", "sleep";
+	pinctrl-0 = <&sdc2_clk_on  &sdc2_cmd_on  &sdc2_data_on  &sdc2_cd_on>;
+	pinctrl-1 = <&sdc2_clk_off &sdc2_cmd_off &sdc2_data_off &sdc2_cd_off>;
+};
+
+&usb3 {
+	status = "okay";
+};
+
+&usb3_dwc3 {
+	dr_mode = "host"; /* Force to host until we have Type-C hooked up */
+};
+
+&usb3phy {
+	status = "okay";
+
+	vdda-phy-supply = <&vreg_l1a_0p875>;
+	vdda-pll-supply = <&vreg_l2a_1p2>;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8998-lenovo-miix-630.dts b/arch/arm64/boot/dts/qcom/msm8998-lenovo-miix-630.dts
new file mode 100644
index 000000000000..407c6a32911c
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8998-lenovo-miix-630.dts
@@ -0,0 +1,30 @@
+// SPDX-License-Identifier: GPL-2.0
+/* Copyright (c) 2019, Jeffrey Hugo. All rights reserved. */
+
+/dts-v1/;
+
+#include "msm8998-clamshell.dtsi"
+
+/ {
+	model = "Lenovo Miix 630";
+	compatible = "lenovo,miix-630", "qcom,msm8998";
+};
+
+&blsp1_i2c6 {
+	status = "okay";
+
+	keyboard@3a {
+		compatible = "hid-over-i2c";
+		interrupt-parent = <&tlmm>;
+		interrupts = <0x79 IRQ_TYPE_LEVEL_LOW>;
+		reg = <0x3a>;
+		hid-descr-addr = <0x0001>;
+
+		pinctrl-names = "default";
+		pinctrl-0 = <&touchpad>;
+	};
+};
+
+&sdhc2 {
+	cd-gpios = <&tlmm 95 GPIO_ACTIVE_HIGH>;
+};
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* Re: [PATCH v4 1/2] HID: quirks: Refactor ELAN 400 and 401 handling
  2019-04-23 16:06 ` [PATCH v4 1/2] HID: quirks: Refactor ELAN 400 and 401 handling Jeffrey Hugo
@ 2019-05-21 16:43   ` Bjorn Andersson
  2019-06-05 23:25     ` Jeffrey Hugo
  2019-06-06  5:20   ` Lee Jones
  1 sibling, 1 reply; 14+ messages in thread
From: Bjorn Andersson @ 2019-05-21 16:43 UTC (permalink / raw)
  To: Jeffrey Hugo
  Cc: dmitry.torokhov, jikos, benjamin.tissoires, lee.jones, robh+dt,
	mark.rutland, agross, david.brown, hdegoede, linux-input,
	devicetree, linux-arm-msm, linux-kernel

On Tue 23 Apr 09:06 PDT 2019, Jeffrey Hugo wrote:

> There needs to be coordination between hid-quirks and the elan_i2c driver
> about which devices are handled by what drivers.  Currently, both use
> whitelists, which results in valid devices being unhandled by default,
> when they should not be rejected by hid-quirks.  This is quickly becoming
> an issue.
> 
> Since elan_i2c has a maintained whitelist of what devices it will handle,
> use that to implement a blacklist in hid-quirks so that only the devices
> that need to be handled by elan_i2c get rejected by hid-quirks, and
> everything else is handled by default.  The downside is the whitelist and
> blacklist need to be kept in sync.
> 

Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>

Jiri, the two patches in this series doesn't have a build time
dependency, so if you take this one through your tree I'll take 2/2
through arm-soc.

Regards,
Bjorn

> Suggested-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
> Signed-off-by: Jeffrey Hugo <jeffrey.l.hugo@gmail.com>
> ---
>  drivers/hid/hid-quirks.c            | 64 ++++++++++++++++++++++++-----
>  drivers/input/mouse/elan_i2c_core.c |  4 ++
>  2 files changed, 58 insertions(+), 10 deletions(-)
> 
> diff --git a/drivers/hid/hid-quirks.c b/drivers/hid/hid-quirks.c
> index 77ffba48cc73..656485e08eb7 100644
> --- a/drivers/hid/hid-quirks.c
> +++ b/drivers/hid/hid-quirks.c
> @@ -987,17 +987,61 @@ bool hid_ignore(struct hid_device *hdev)
>  		break;
>  	case USB_VENDOR_ID_ELAN:
>  		/*
> -		 * Many Elan devices have a product id of 0x0401 and are handled
> -		 * by the elan_i2c input driver. But the ACPI HID ELAN0800 dev
> -		 * is not (and cannot be) handled by that driver ->
> -		 * Ignore all 0x0401 devs except for the ELAN0800 dev.
> +		 * Blacklist of everything that gets handled by the elan_i2c
> +		 * input driver.  This should be kept in sync with the whitelist
> +		 * that exists in that driver.  This avoids disabling valid
> +		 * touchpads and other ELAN devices.
>  		 */
> -		if (hdev->product == 0x0401 &&
> -		    strncmp(hdev->name, "ELAN0800", 8) != 0)
> -			return true;
> -		/* Same with product id 0x0400 */
> -		if (hdev->product == 0x0400 &&
> -		    strncmp(hdev->name, "QTEC0001", 8) != 0)
> +		if ((hdev->product == 0x0401 || hdev->product == 0x0400) &&
> +		   (strncmp(hdev->name, "ELAN0000", 8) == 0 ||
> +		    strncmp(hdev->name, "ELAN0100", 8) == 0 ||
> +		    strncmp(hdev->name, "ELAN0600", 8) == 0 ||
> +		    strncmp(hdev->name, "ELAN0601", 8) == 0 ||
> +		    strncmp(hdev->name, "ELAN0602", 8) == 0 ||
> +		    strncmp(hdev->name, "ELAN0603", 8) == 0 ||
> +		    strncmp(hdev->name, "ELAN0604", 8) == 0 ||
> +		    strncmp(hdev->name, "ELAN0605", 8) == 0 ||
> +		    strncmp(hdev->name, "ELAN0606", 8) == 0 ||
> +		    strncmp(hdev->name, "ELAN0607", 8) == 0 ||
> +		    strncmp(hdev->name, "ELAN0608", 8) == 0 ||
> +		    strncmp(hdev->name, "ELAN0609", 8) == 0 ||
> +		    strncmp(hdev->name, "ELAN060B", 8) == 0 ||
> +		    strncmp(hdev->name, "ELAN060C", 8) == 0 ||
> +		    strncmp(hdev->name, "ELAN060F", 8) == 0 ||
> +		    strncmp(hdev->name, "ELAN0610", 8) == 0 ||
> +		    strncmp(hdev->name, "ELAN0611", 8) == 0 ||
> +		    strncmp(hdev->name, "ELAN0612", 8) == 0 ||
> +		    strncmp(hdev->name, "ELAN0613", 8) == 0 ||
> +		    strncmp(hdev->name, "ELAN0614", 8) == 0 ||
> +		    strncmp(hdev->name, "ELAN0615", 8) == 0 ||
> +		    strncmp(hdev->name, "ELAN0616", 8) == 0 ||
> +		    strncmp(hdev->name, "ELAN0617", 8) == 0 ||
> +		    strncmp(hdev->name, "ELAN0618", 8) == 0 ||
> +		    strncmp(hdev->name, "ELAN0619", 8) == 0 ||
> +		    strncmp(hdev->name, "ELAN061A", 8) == 0 ||
> +		    strncmp(hdev->name, "ELAN061B", 8) == 0 ||
> +		    strncmp(hdev->name, "ELAN061C", 8) == 0 ||
> +		    strncmp(hdev->name, "ELAN061D", 8) == 0 ||
> +		    strncmp(hdev->name, "ELAN061E", 8) == 0 ||
> +		    strncmp(hdev->name, "ELAN061F", 8) == 0 ||
> +		    strncmp(hdev->name, "ELAN0620", 8) == 0 ||
> +		    strncmp(hdev->name, "ELAN0621", 8) == 0 ||
> +		    strncmp(hdev->name, "ELAN0622", 8) == 0 ||
> +		    strncmp(hdev->name, "ELAN0623", 8) == 0 ||
> +		    strncmp(hdev->name, "ELAN0624", 8) == 0 ||
> +		    strncmp(hdev->name, "ELAN0625", 8) == 0 ||
> +		    strncmp(hdev->name, "ELAN0626", 8) == 0 ||
> +		    strncmp(hdev->name, "ELAN0627", 8) == 0 ||
> +		    strncmp(hdev->name, "ELAN0628", 8) == 0 ||
> +		    strncmp(hdev->name, "ELAN0629", 8) == 0 ||
> +		    strncmp(hdev->name, "ELAN062A", 8) == 0 ||
> +		    strncmp(hdev->name, "ELAN062B", 8) == 0 ||
> +		    strncmp(hdev->name, "ELAN062C", 8) == 0 ||
> +		    strncmp(hdev->name, "ELAN062D", 8) == 0 ||
> +		    strncmp(hdev->name, "ELAN0631", 8) == 0 ||
> +		    strncmp(hdev->name, "ELAN0632", 8) == 0 ||
> +		    strncmp(hdev->name, "ELAN1000", 8) == 0 ||
> +		    strncmp(hdev->name, "elan,ekth3000", 13) == 0))
>  			return true;
>  		break;
>  	}
> diff --git a/drivers/input/mouse/elan_i2c_core.c b/drivers/input/mouse/elan_i2c_core.c
> index f9525d6f0bfe..3ded19528cd4 100644
> --- a/drivers/input/mouse/elan_i2c_core.c
> +++ b/drivers/input/mouse/elan_i2c_core.c
> @@ -1332,6 +1332,10 @@ static const struct i2c_device_id elan_id[] = {
>  };
>  MODULE_DEVICE_TABLE(i2c, elan_id);
>  
> +/*
> + * when these whtielists get updated, the corresponding blacklist in hid-quirks
> + * needs to be updated to match.
> + */
>  #ifdef CONFIG_ACPI
>  static const struct acpi_device_id elan_acpi_id[] = {
>  	{ "ELAN0000", 0 },
> -- 
> 2.17.1
> 

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v4 1/2] HID: quirks: Refactor ELAN 400 and 401 handling
  2019-05-21 16:43   ` Bjorn Andersson
@ 2019-06-05 23:25     ` Jeffrey Hugo
  2019-06-06  7:06       ` Benjamin Tissoires
  0 siblings, 1 reply; 14+ messages in thread
From: Jeffrey Hugo @ 2019-06-05 23:25 UTC (permalink / raw)
  To: Bjorn Andersson
  Cc: Dmitry Torokhov, Jiri Kosina, Benjamin Tissoires, Lee Jones,
	Rob Herring, Mark Rutland, Andy Gross, David Brown,
	Hans de Goede, open list:HID CORE LAYER, devicetree, MSM, lkml

On Tue, May 21, 2019 at 10:42 AM Bjorn Andersson
<bjorn.andersson@linaro.org> wrote:
>
> On Tue 23 Apr 09:06 PDT 2019, Jeffrey Hugo wrote:
>
> > There needs to be coordination between hid-quirks and the elan_i2c driver
> > about which devices are handled by what drivers.  Currently, both use
> > whitelists, which results in valid devices being unhandled by default,
> > when they should not be rejected by hid-quirks.  This is quickly becoming
> > an issue.
> >
> > Since elan_i2c has a maintained whitelist of what devices it will handle,
> > use that to implement a blacklist in hid-quirks so that only the devices
> > that need to be handled by elan_i2c get rejected by hid-quirks, and
> > everything else is handled by default.  The downside is the whitelist and
> > blacklist need to be kept in sync.
> >
>
> Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
>
> Jiri, the two patches in this series doesn't have a build time
> dependency, so if you take this one through your tree I'll take 2/2
> through arm-soc.

Ping?  Is this good from the HID perspective?  I would really like to
see this queued for 5.3.

>
> Regards,
> Bjorn
>
> > Suggested-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
> > Signed-off-by: Jeffrey Hugo <jeffrey.l.hugo@gmail.com>
> > ---
> >  drivers/hid/hid-quirks.c            | 64 ++++++++++++++++++++++++-----
> >  drivers/input/mouse/elan_i2c_core.c |  4 ++
> >  2 files changed, 58 insertions(+), 10 deletions(-)
> >
> > diff --git a/drivers/hid/hid-quirks.c b/drivers/hid/hid-quirks.c
> > index 77ffba48cc73..656485e08eb7 100644
> > --- a/drivers/hid/hid-quirks.c
> > +++ b/drivers/hid/hid-quirks.c
> > @@ -987,17 +987,61 @@ bool hid_ignore(struct hid_device *hdev)
> >               break;
> >       case USB_VENDOR_ID_ELAN:
> >               /*
> > -              * Many Elan devices have a product id of 0x0401 and are handled
> > -              * by the elan_i2c input driver. But the ACPI HID ELAN0800 dev
> > -              * is not (and cannot be) handled by that driver ->
> > -              * Ignore all 0x0401 devs except for the ELAN0800 dev.
> > +              * Blacklist of everything that gets handled by the elan_i2c
> > +              * input driver.  This should be kept in sync with the whitelist
> > +              * that exists in that driver.  This avoids disabling valid
> > +              * touchpads and other ELAN devices.
> >                */
> > -             if (hdev->product == 0x0401 &&
> > -                 strncmp(hdev->name, "ELAN0800", 8) != 0)
> > -                     return true;
> > -             /* Same with product id 0x0400 */
> > -             if (hdev->product == 0x0400 &&
> > -                 strncmp(hdev->name, "QTEC0001", 8) != 0)
> > +             if ((hdev->product == 0x0401 || hdev->product == 0x0400) &&
> > +                (strncmp(hdev->name, "ELAN0000", 8) == 0 ||
> > +                 strncmp(hdev->name, "ELAN0100", 8) == 0 ||
> > +                 strncmp(hdev->name, "ELAN0600", 8) == 0 ||
> > +                 strncmp(hdev->name, "ELAN0601", 8) == 0 ||
> > +                 strncmp(hdev->name, "ELAN0602", 8) == 0 ||
> > +                 strncmp(hdev->name, "ELAN0603", 8) == 0 ||
> > +                 strncmp(hdev->name, "ELAN0604", 8) == 0 ||
> > +                 strncmp(hdev->name, "ELAN0605", 8) == 0 ||
> > +                 strncmp(hdev->name, "ELAN0606", 8) == 0 ||
> > +                 strncmp(hdev->name, "ELAN0607", 8) == 0 ||
> > +                 strncmp(hdev->name, "ELAN0608", 8) == 0 ||
> > +                 strncmp(hdev->name, "ELAN0609", 8) == 0 ||
> > +                 strncmp(hdev->name, "ELAN060B", 8) == 0 ||
> > +                 strncmp(hdev->name, "ELAN060C", 8) == 0 ||
> > +                 strncmp(hdev->name, "ELAN060F", 8) == 0 ||
> > +                 strncmp(hdev->name, "ELAN0610", 8) == 0 ||
> > +                 strncmp(hdev->name, "ELAN0611", 8) == 0 ||
> > +                 strncmp(hdev->name, "ELAN0612", 8) == 0 ||
> > +                 strncmp(hdev->name, "ELAN0613", 8) == 0 ||
> > +                 strncmp(hdev->name, "ELAN0614", 8) == 0 ||
> > +                 strncmp(hdev->name, "ELAN0615", 8) == 0 ||
> > +                 strncmp(hdev->name, "ELAN0616", 8) == 0 ||
> > +                 strncmp(hdev->name, "ELAN0617", 8) == 0 ||
> > +                 strncmp(hdev->name, "ELAN0618", 8) == 0 ||
> > +                 strncmp(hdev->name, "ELAN0619", 8) == 0 ||
> > +                 strncmp(hdev->name, "ELAN061A", 8) == 0 ||
> > +                 strncmp(hdev->name, "ELAN061B", 8) == 0 ||
> > +                 strncmp(hdev->name, "ELAN061C", 8) == 0 ||
> > +                 strncmp(hdev->name, "ELAN061D", 8) == 0 ||
> > +                 strncmp(hdev->name, "ELAN061E", 8) == 0 ||
> > +                 strncmp(hdev->name, "ELAN061F", 8) == 0 ||
> > +                 strncmp(hdev->name, "ELAN0620", 8) == 0 ||
> > +                 strncmp(hdev->name, "ELAN0621", 8) == 0 ||
> > +                 strncmp(hdev->name, "ELAN0622", 8) == 0 ||
> > +                 strncmp(hdev->name, "ELAN0623", 8) == 0 ||
> > +                 strncmp(hdev->name, "ELAN0624", 8) == 0 ||
> > +                 strncmp(hdev->name, "ELAN0625", 8) == 0 ||
> > +                 strncmp(hdev->name, "ELAN0626", 8) == 0 ||
> > +                 strncmp(hdev->name, "ELAN0627", 8) == 0 ||
> > +                 strncmp(hdev->name, "ELAN0628", 8) == 0 ||
> > +                 strncmp(hdev->name, "ELAN0629", 8) == 0 ||
> > +                 strncmp(hdev->name, "ELAN062A", 8) == 0 ||
> > +                 strncmp(hdev->name, "ELAN062B", 8) == 0 ||
> > +                 strncmp(hdev->name, "ELAN062C", 8) == 0 ||
> > +                 strncmp(hdev->name, "ELAN062D", 8) == 0 ||
> > +                 strncmp(hdev->name, "ELAN0631", 8) == 0 ||
> > +                 strncmp(hdev->name, "ELAN0632", 8) == 0 ||
> > +                 strncmp(hdev->name, "ELAN1000", 8) == 0 ||
> > +                 strncmp(hdev->name, "elan,ekth3000", 13) == 0))
> >                       return true;
> >               break;
> >       }
> > diff --git a/drivers/input/mouse/elan_i2c_core.c b/drivers/input/mouse/elan_i2c_core.c
> > index f9525d6f0bfe..3ded19528cd4 100644
> > --- a/drivers/input/mouse/elan_i2c_core.c
> > +++ b/drivers/input/mouse/elan_i2c_core.c
> > @@ -1332,6 +1332,10 @@ static const struct i2c_device_id elan_id[] = {
> >  };
> >  MODULE_DEVICE_TABLE(i2c, elan_id);
> >
> > +/*
> > + * when these whtielists get updated, the corresponding blacklist in hid-quirks
> > + * needs to be updated to match.
> > + */
> >  #ifdef CONFIG_ACPI
> >  static const struct acpi_device_id elan_acpi_id[] = {
> >       { "ELAN0000", 0 },
> > --
> > 2.17.1
> >

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v4 1/2] HID: quirks: Refactor ELAN 400 and 401 handling
  2019-04-23 16:06 ` [PATCH v4 1/2] HID: quirks: Refactor ELAN 400 and 401 handling Jeffrey Hugo
  2019-05-21 16:43   ` Bjorn Andersson
@ 2019-06-06  5:20   ` Lee Jones
  1 sibling, 0 replies; 14+ messages in thread
From: Lee Jones @ 2019-06-06  5:20 UTC (permalink / raw)
  To: Jeffrey Hugo
  Cc: dmitry.torokhov, jikos, benjamin.tissoires, bjorn.andersson,
	robh+dt, mark.rutland, agross, david.brown, hdegoede,
	linux-input, devicetree, linux-arm-msm, linux-kernel

On Tue, 23 Apr 2019, Jeffrey Hugo wrote:

> There needs to be coordination between hid-quirks and the elan_i2c driver
> about which devices are handled by what drivers.  Currently, both use
> whitelists, which results in valid devices being unhandled by default,
> when they should not be rejected by hid-quirks.  This is quickly becoming
> an issue.
> 
> Since elan_i2c has a maintained whitelist of what devices it will handle,
> use that to implement a blacklist in hid-quirks so that only the devices
> that need to be handled by elan_i2c get rejected by hid-quirks, and
> everything else is handled by default.  The downside is the whitelist and
> blacklist need to be kept in sync.
> 
> Suggested-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
> Signed-off-by: Jeffrey Hugo <jeffrey.l.hugo@gmail.com>
> ---
>  drivers/hid/hid-quirks.c            | 64 ++++++++++++++++++++++++-----
>  drivers/input/mouse/elan_i2c_core.c |  4 ++
>  2 files changed, 58 insertions(+), 10 deletions(-)

Reviewed-by: Lee Jones <lee.jones@linaro.org>
Tested-by: Lee Jones <lee.jones@linaro.org>

-- 
Lee Jones [李琼斯]
Linaro Services Technical Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v4 2/2] arm64: dts: qcom: Add Lenovo Miix 630
  2019-04-23 16:06 ` [PATCH v4 2/2] arm64: dts: qcom: Add Lenovo Miix 630 Jeffrey Hugo
@ 2019-06-06  5:50   ` Lee Jones
  2019-06-06  7:26     ` Bjorn Andersson
  0 siblings, 1 reply; 14+ messages in thread
From: Lee Jones @ 2019-06-06  5:50 UTC (permalink / raw)
  To: Jeffrey Hugo
  Cc: bjorn.andersson, robh+dt, mark.rutland, agross, david.brown,
	dmitry.torokhov, jikos, benjamin.tissoires, hdegoede,
	linux-input, devicetree, linux-arm-msm, linux-kernel

On Tue, 23 Apr 2019, Jeffrey Hugo wrote:

> This adds the initial DT for the Lenovo Miix 630 laptop.  Supported
> functionality includes USB (host), microSD-card, keyboard, and trackpad.
> 
> Signed-off-by: Jeffrey Hugo <jeffrey.l.hugo@gmail.com>
> ---
>  arch/arm64/boot/dts/qcom/Makefile             |   1 +
>  .../boot/dts/qcom/msm8998-clamshell.dtsi      | 278 ++++++++++++++++++
>  .../boot/dts/qcom/msm8998-lenovo-miix-630.dts |  30 ++

What's happening with this patch?

It's been on the list a while now.  I'm waiting for it to be accepted,
since there are patches I wish to submit which are based on it.

Who is responsible for merging these?

>  3 files changed, 309 insertions(+)
>  create mode 100644 arch/arm64/boot/dts/qcom/msm8998-clamshell.dtsi
>  create mode 100644 arch/arm64/boot/dts/qcom/msm8998-lenovo-miix-630.dts
> 
> diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
> index 21d548f02d39..c3e4307bcbd4 100644
> --- a/arch/arm64/boot/dts/qcom/Makefile
> +++ b/arch/arm64/boot/dts/qcom/Makefile
> @@ -6,6 +6,7 @@ dtb-$(CONFIG_ARCH_QCOM)	+= msm8916-mtp.dtb
>  dtb-$(CONFIG_ARCH_QCOM)	+= msm8992-bullhead-rev-101.dtb
>  dtb-$(CONFIG_ARCH_QCOM)	+= msm8994-angler-rev-101.dtb
>  dtb-$(CONFIG_ARCH_QCOM)	+= msm8996-mtp.dtb
> +dtb-$(CONFIG_ARCH_QCOM)	+= msm8998-lenovo-miix-630.dtb
>  dtb-$(CONFIG_ARCH_QCOM)	+= msm8998-mtp.dtb
>  dtb-$(CONFIG_ARCH_QCOM)	+= sdm845-mtp.dtb
>  dtb-$(CONFIG_ARCH_QCOM)	+= qcs404-evb-1000.dtb
> diff --git a/arch/arm64/boot/dts/qcom/msm8998-clamshell.dtsi b/arch/arm64/boot/dts/qcom/msm8998-clamshell.dtsi
> new file mode 100644
> index 000000000000..1a341d4b1597
> --- /dev/null
> +++ b/arch/arm64/boot/dts/qcom/msm8998-clamshell.dtsi
> @@ -0,0 +1,278 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/* Copyright (c) 2019, Jeffrey Hugo. All rights reserved. */
> +
> +/*
> + * Common include for MSM8998 clamshell devices, ie the Lenovo Miix 630,
> + * Asus NovaGo TP370QL, and HP Envy x2.  All three devices are basically the
> + * same, with differences in peripherals.
> + */
> +
> +#include "msm8998.dtsi"
> +#include "pm8998.dtsi"
> +#include "pm8005.dtsi"
> +
> +/ {
> +	chosen {
> +	};
> +
> +	thermal-zones {
> +		battery-thermal {
> +			polling-delay-passive = <250>;
> +			polling-delay = <1000>;
> +
> +			thermal-sensors = <&tsens0 0>;
> +
> +			trips {
> +				battery_crit: trip0 {
> +					temperature = <60000>;
> +					hysteresis = <2000>;
> +					type = "critical";
> +				};
> +			};
> +		};
> +
> +		skin-thermal {
> +			polling-delay-passive = <250>;
> +			polling-delay = <1000>;
> +
> +			thermal-sensors = <&tsens1 5>;
> +
> +			trips {
> +				skin_alert: trip0 {
> +					temperature = <44000>;
> +					hysteresis = <2000>;
> +					type = "passive";
> +				};
> +
> +				skip_crit: trip1 {
> +					temperature = <70000>;
> +					hysteresis = <2000>;
> +					type = "critical";
> +				};
> +			};
> +		};
> +	};
> +
> +	vph_pwr: vph-pwr-regulator {
> +		compatible = "regulator-fixed";
> +		regulator-name = "vph_pwr";
> +		regulator-always-on;
> +		regulator-boot-on;
> +	};
> +};
> +
> +&qusb2phy {
> +	status = "okay";
> +
> +	vdda-pll-supply = <&vreg_l12a_1p8>;
> +	vdda-phy-dpdm-supply = <&vreg_l24a_3p075>;
> +};
> +
> +&rpm_requests {
> +	pm8998-regulators {
> +		compatible = "qcom,rpm-pm8998-regulators";
> +
> +		vdd_s1-supply = <&vph_pwr>;
> +		vdd_s2-supply = <&vph_pwr>;
> +		vdd_s3-supply = <&vph_pwr>;
> +		vdd_s4-supply = <&vph_pwr>;
> +		vdd_s5-supply = <&vph_pwr>;
> +		vdd_s6-supply = <&vph_pwr>;
> +		vdd_s7-supply = <&vph_pwr>;
> +		vdd_s8-supply = <&vph_pwr>;
> +		vdd_s9-supply = <&vph_pwr>;
> +		vdd_s10-supply = <&vph_pwr>;
> +		vdd_s11-supply = <&vph_pwr>;
> +		vdd_s12-supply = <&vph_pwr>;
> +		vdd_s13-supply = <&vph_pwr>;
> +		vdd_l1_l27-supply = <&vreg_s7a_1p025>;
> +		vdd_l2_l8_l17-supply = <&vreg_s3a_1p35>;
> +		vdd_l3_l11-supply = <&vreg_s7a_1p025>;
> +		vdd_l4_l5-supply = <&vreg_s7a_1p025>;
> +		vdd_l6-supply = <&vreg_s5a_2p04>;
> +		vdd_l7_l12_l14_l15-supply = <&vreg_s5a_2p04>;
> +		vdd_l9-supply = <&vph_pwr>;
> +		vdd_l10_l23_l25-supply = <&vph_pwr>;
> +		vdd_l13_l19_l21-supply = <&vph_pwr>;
> +		vdd_l16_l28-supply = <&vph_pwr>;
> +		vdd_l18_l22-supply = <&vph_pwr>;
> +		vdd_l20_l24-supply = <&vph_pwr>;
> +		vdd_l26-supply = <&vreg_s3a_1p35>;
> +		vdd_lvs1_lvs2-supply = <&vreg_s4a_1p8>;
> +
> +		vreg_s3a_1p35: s3 {
> +			regulator-min-microvolt = <1352000>;
> +			regulator-max-microvolt = <1352000>;
> +		};
> +		vreg_s4a_1p8: s4 {
> +			regulator-min-microvolt = <1800000>;
> +			regulator-max-microvolt = <1800000>;
> +			regulator-allow-set-load;
> +		};
> +		vreg_s5a_2p04: s5 {
> +			regulator-min-microvolt = <1904000>;
> +			regulator-max-microvolt = <2040000>;
> +		};
> +		vreg_s7a_1p025: s7 {
> +			regulator-min-microvolt = <900000>;
> +			regulator-max-microvolt = <1028000>;
> +		};
> +		vreg_l1a_0p875: l1 {
> +			regulator-min-microvolt = <880000>;
> +			regulator-max-microvolt = <880000>;
> +			regulator-allow-set-load;
> +		};
> +		vreg_l2a_1p2: l2 {
> +			regulator-min-microvolt = <1200000>;
> +			regulator-max-microvolt = <1200000>;
> +			regulator-allow-set-load;
> +		};
> +		vreg_l3a_1p0: l3 {
> +			regulator-min-microvolt = <1000000>;
> +			regulator-max-microvolt = <1000000>;
> +		};
> +		vreg_l5a_0p8: l5 {
> +			regulator-min-microvolt = <800000>;
> +			regulator-max-microvolt = <800000>;
> +		};
> +		vreg_l6a_1p8: l6 {
> +			regulator-min-microvolt = <1808000>;
> +			regulator-max-microvolt = <1808000>;
> +		};
> +		vreg_l7a_1p8: l7 {
> +			regulator-min-microvolt = <1800000>;
> +			regulator-max-microvolt = <1800000>;
> +		};
> +		vreg_l8a_1p2: l8 {
> +			regulator-min-microvolt = <1200000>;
> +			regulator-max-microvolt = <1200000>;
> +		};
> +		vreg_l9a_1p8: l9 {
> +			regulator-min-microvolt = <1808000>;
> +			regulator-max-microvolt = <2960000>;
> +		};
> +		vreg_l10a_1p8: l10 {
> +			regulator-min-microvolt = <1808000>;
> +			regulator-max-microvolt = <2960000>;
> +		};
> +		vreg_l11a_1p0: l11 {
> +			regulator-min-microvolt = <1000000>;
> +			regulator-max-microvolt = <1000000>;
> +		};
> +		vreg_l12a_1p8: l12 {
> +			regulator-min-microvolt = <1800000>;
> +			regulator-max-microvolt = <1800000>;
> +		};
> +		vreg_l13a_2p95: l13 {
> +			regulator-min-microvolt = <1808000>;
> +			regulator-max-microvolt = <2960000>;
> +		};
> +		vreg_l14a_1p88: l14 {
> +			regulator-min-microvolt = <1880000>;
> +			regulator-max-microvolt = <1880000>;
> +		};
> +		vreg_15a_1p8: l15 {
> +			regulator-min-microvolt = <1800000>;
> +			regulator-max-microvolt = <1800000>;
> +		};
> +		vreg_l16a_2p7: l16 {
> +			regulator-min-microvolt = <2704000>;
> +			regulator-max-microvolt = <2704000>;
> +		};
> +		vreg_l17a_1p3: l17 {
> +			regulator-min-microvolt = <1304000>;
> +			regulator-max-microvolt = <1304000>;
> +		};
> +		vreg_l18a_2p7: l18 {
> +			regulator-min-microvolt = <2704000>;
> +			regulator-max-microvolt = <2704000>;
> +		};
> +		vreg_l19a_3p0: l19 {
> +			regulator-min-microvolt = <3008000>;
> +			regulator-max-microvolt = <3008000>;
> +		};
> +		vreg_l20a_2p95: l20 {
> +			regulator-min-microvolt = <2960000>;
> +			regulator-max-microvolt = <2960000>;
> +			regulator-allow-set-load;
> +		};
> +		vreg_l21a_2p95: l21 {
> +			regulator-min-microvolt = <2960000>;
> +			regulator-max-microvolt = <2960000>;
> +			regulator-allow-set-load;
> +			regulator-system-load = <800000>;
> +		};
> +		vreg_l22a_2p85: l22 {
> +			regulator-min-microvolt = <2864000>;
> +			regulator-max-microvolt = <2864000>;
> +		};
> +		vreg_l23a_3p3: l23 {
> +			regulator-min-microvolt = <3312000>;
> +			regulator-max-microvolt = <3312000>;
> +		};
> +		vreg_l24a_3p075: l24 {
> +			regulator-min-microvolt = <3088000>;
> +			regulator-max-microvolt = <3088000>;
> +		};
> +		vreg_l25a_3p3: l25 {
> +			regulator-min-microvolt = <3104000>;
> +			regulator-max-microvolt = <3312000>;
> +		};
> +		vreg_l26a_1p2: l26 {
> +			regulator-min-microvolt = <1200000>;
> +			regulator-max-microvolt = <1200000>;
> +		};
> +		vreg_l28_3p0: l28 {
> +			regulator-min-microvolt = <3008000>;
> +			regulator-max-microvolt = <3008000>;
> +		};
> +
> +		vreg_lvs1a_1p8: lvs1 {
> +			regulator-min-microvolt = <1800000>;
> +			regulator-max-microvolt = <1800000>;
> +		};
> +
> +		vreg_lvs2a_1p8: lvs2 {
> +			regulator-min-microvolt = <1800000>;
> +			regulator-max-microvolt = <1800000>;
> +		};
> +
> +	};
> +};
> +
> +&tlmm {
> +	gpio-reserved-ranges = <0 4>, <81 4>;
> +
> +	touchpad: touchpad {
> +		config {
> +			pins = "gpio123";
> +			bias-pull-up;           /* pull up */
> +		};
> +	};
> +};
> +
> +&sdhc2 {
> +	status = "okay";
> +
> +	vmmc-supply = <&vreg_l21a_2p95>;
> +	vqmmc-supply = <&vreg_l13a_2p95>;
> +
> +	pinctrl-names = "default", "sleep";
> +	pinctrl-0 = <&sdc2_clk_on  &sdc2_cmd_on  &sdc2_data_on  &sdc2_cd_on>;
> +	pinctrl-1 = <&sdc2_clk_off &sdc2_cmd_off &sdc2_data_off &sdc2_cd_off>;
> +};
> +
> +&usb3 {
> +	status = "okay";
> +};
> +
> +&usb3_dwc3 {
> +	dr_mode = "host"; /* Force to host until we have Type-C hooked up */
> +};
> +
> +&usb3phy {
> +	status = "okay";
> +
> +	vdda-phy-supply = <&vreg_l1a_0p875>;
> +	vdda-pll-supply = <&vreg_l2a_1p2>;
> +};
> diff --git a/arch/arm64/boot/dts/qcom/msm8998-lenovo-miix-630.dts b/arch/arm64/boot/dts/qcom/msm8998-lenovo-miix-630.dts
> new file mode 100644
> index 000000000000..407c6a32911c
> --- /dev/null
> +++ b/arch/arm64/boot/dts/qcom/msm8998-lenovo-miix-630.dts
> @@ -0,0 +1,30 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/* Copyright (c) 2019, Jeffrey Hugo. All rights reserved. */
> +
> +/dts-v1/;
> +
> +#include "msm8998-clamshell.dtsi"
> +
> +/ {
> +	model = "Lenovo Miix 630";
> +	compatible = "lenovo,miix-630", "qcom,msm8998";
> +};
> +
> +&blsp1_i2c6 {
> +	status = "okay";
> +
> +	keyboard@3a {
> +		compatible = "hid-over-i2c";
> +		interrupt-parent = <&tlmm>;
> +		interrupts = <0x79 IRQ_TYPE_LEVEL_LOW>;
> +		reg = <0x3a>;
> +		hid-descr-addr = <0x0001>;
> +
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&touchpad>;
> +	};
> +};
> +
> +&sdhc2 {
> +	cd-gpios = <&tlmm 95 GPIO_ACTIVE_HIGH>;
> +};

-- 
Lee Jones [李琼斯]
Linaro Services Technical Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v4 1/2] HID: quirks: Refactor ELAN 400 and 401 handling
  2019-06-05 23:25     ` Jeffrey Hugo
@ 2019-06-06  7:06       ` Benjamin Tissoires
  2019-06-06 14:30         ` Jeffrey Hugo
  0 siblings, 1 reply; 14+ messages in thread
From: Benjamin Tissoires @ 2019-06-06  7:06 UTC (permalink / raw)
  To: Jeffrey Hugo
  Cc: Bjorn Andersson, Dmitry Torokhov, Jiri Kosina, Lee Jones,
	Rob Herring, Mark Rutland, Andy Gross, David Brown,
	Hans de Goede, open list:HID CORE LAYER, devicetree, MSM, lkml

On Thu, Jun 6, 2019 at 1:25 AM Jeffrey Hugo <jeffrey.l.hugo@gmail.com> wrote:
>
> On Tue, May 21, 2019 at 10:42 AM Bjorn Andersson
> <bjorn.andersson@linaro.org> wrote:
> >
> > On Tue 23 Apr 09:06 PDT 2019, Jeffrey Hugo wrote:
> >
> > > There needs to be coordination between hid-quirks and the elan_i2c driver
> > > about which devices are handled by what drivers.  Currently, both use
> > > whitelists, which results in valid devices being unhandled by default,
> > > when they should not be rejected by hid-quirks.  This is quickly becoming
> > > an issue.
> > >
> > > Since elan_i2c has a maintained whitelist of what devices it will handle,
> > > use that to implement a blacklist in hid-quirks so that only the devices
> > > that need to be handled by elan_i2c get rejected by hid-quirks, and
> > > everything else is handled by default.  The downside is the whitelist and
> > > blacklist need to be kept in sync.
> > >
> >
> > Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
> >
> > Jiri, the two patches in this series doesn't have a build time
> > dependency, so if you take this one through your tree I'll take 2/2
> > through arm-soc.
>
> Ping?  Is this good from the HID perspective?  I would really like to
> see this queued for 5.3.
>

Sorry, this felt through the cracks.

I'm fine with the idea of the patch, but I just realized what bugged me:
we should instead have a static array of the various ACPI matches,
instead of duplicating the various strncmp.

So IMO, we should:
- merge patch 2/2 through Bjorn's tree (or with any changes he would request)
- have a v5 for the HID/input part with:
  * a static array of the names to match against in hid-quirks.c
  * separate the elan_i2c trivial change in its separate patch as
there are already a few changes committed in the input tree, which is
different from the HID tree. I don't expect any conflicts though, so
if Dmitry is fine, I can take the whole input/HID part through the HID
tree, but a separate patch would be more obvious in case of a
conflict.

Cheers,
Benjamin

> >
> > Regards,
> > Bjorn
> >
> > > Suggested-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
> > > Signed-off-by: Jeffrey Hugo <jeffrey.l.hugo@gmail.com>
> > > ---
> > >  drivers/hid/hid-quirks.c            | 64 ++++++++++++++++++++++++-----
> > >  drivers/input/mouse/elan_i2c_core.c |  4 ++
> > >  2 files changed, 58 insertions(+), 10 deletions(-)
> > >
> > > diff --git a/drivers/hid/hid-quirks.c b/drivers/hid/hid-quirks.c
> > > index 77ffba48cc73..656485e08eb7 100644
> > > --- a/drivers/hid/hid-quirks.c
> > > +++ b/drivers/hid/hid-quirks.c
> > > @@ -987,17 +987,61 @@ bool hid_ignore(struct hid_device *hdev)
> > >               break;
> > >       case USB_VENDOR_ID_ELAN:
> > >               /*
> > > -              * Many Elan devices have a product id of 0x0401 and are handled
> > > -              * by the elan_i2c input driver. But the ACPI HID ELAN0800 dev
> > > -              * is not (and cannot be) handled by that driver ->
> > > -              * Ignore all 0x0401 devs except for the ELAN0800 dev.
> > > +              * Blacklist of everything that gets handled by the elan_i2c
> > > +              * input driver.  This should be kept in sync with the whitelist
> > > +              * that exists in that driver.  This avoids disabling valid
> > > +              * touchpads and other ELAN devices.
> > >                */
> > > -             if (hdev->product == 0x0401 &&
> > > -                 strncmp(hdev->name, "ELAN0800", 8) != 0)
> > > -                     return true;
> > > -             /* Same with product id 0x0400 */
> > > -             if (hdev->product == 0x0400 &&
> > > -                 strncmp(hdev->name, "QTEC0001", 8) != 0)
> > > +             if ((hdev->product == 0x0401 || hdev->product == 0x0400) &&
> > > +                (strncmp(hdev->name, "ELAN0000", 8) == 0 ||
> > > +                 strncmp(hdev->name, "ELAN0100", 8) == 0 ||
> > > +                 strncmp(hdev->name, "ELAN0600", 8) == 0 ||
> > > +                 strncmp(hdev->name, "ELAN0601", 8) == 0 ||
> > > +                 strncmp(hdev->name, "ELAN0602", 8) == 0 ||
> > > +                 strncmp(hdev->name, "ELAN0603", 8) == 0 ||
> > > +                 strncmp(hdev->name, "ELAN0604", 8) == 0 ||
> > > +                 strncmp(hdev->name, "ELAN0605", 8) == 0 ||
> > > +                 strncmp(hdev->name, "ELAN0606", 8) == 0 ||
> > > +                 strncmp(hdev->name, "ELAN0607", 8) == 0 ||
> > > +                 strncmp(hdev->name, "ELAN0608", 8) == 0 ||
> > > +                 strncmp(hdev->name, "ELAN0609", 8) == 0 ||
> > > +                 strncmp(hdev->name, "ELAN060B", 8) == 0 ||
> > > +                 strncmp(hdev->name, "ELAN060C", 8) == 0 ||
> > > +                 strncmp(hdev->name, "ELAN060F", 8) == 0 ||
> > > +                 strncmp(hdev->name, "ELAN0610", 8) == 0 ||
> > > +                 strncmp(hdev->name, "ELAN0611", 8) == 0 ||
> > > +                 strncmp(hdev->name, "ELAN0612", 8) == 0 ||
> > > +                 strncmp(hdev->name, "ELAN0613", 8) == 0 ||
> > > +                 strncmp(hdev->name, "ELAN0614", 8) == 0 ||
> > > +                 strncmp(hdev->name, "ELAN0615", 8) == 0 ||
> > > +                 strncmp(hdev->name, "ELAN0616", 8) == 0 ||
> > > +                 strncmp(hdev->name, "ELAN0617", 8) == 0 ||
> > > +                 strncmp(hdev->name, "ELAN0618", 8) == 0 ||
> > > +                 strncmp(hdev->name, "ELAN0619", 8) == 0 ||
> > > +                 strncmp(hdev->name, "ELAN061A", 8) == 0 ||
> > > +                 strncmp(hdev->name, "ELAN061B", 8) == 0 ||
> > > +                 strncmp(hdev->name, "ELAN061C", 8) == 0 ||
> > > +                 strncmp(hdev->name, "ELAN061D", 8) == 0 ||
> > > +                 strncmp(hdev->name, "ELAN061E", 8) == 0 ||
> > > +                 strncmp(hdev->name, "ELAN061F", 8) == 0 ||
> > > +                 strncmp(hdev->name, "ELAN0620", 8) == 0 ||
> > > +                 strncmp(hdev->name, "ELAN0621", 8) == 0 ||
> > > +                 strncmp(hdev->name, "ELAN0622", 8) == 0 ||
> > > +                 strncmp(hdev->name, "ELAN0623", 8) == 0 ||
> > > +                 strncmp(hdev->name, "ELAN0624", 8) == 0 ||
> > > +                 strncmp(hdev->name, "ELAN0625", 8) == 0 ||
> > > +                 strncmp(hdev->name, "ELAN0626", 8) == 0 ||
> > > +                 strncmp(hdev->name, "ELAN0627", 8) == 0 ||
> > > +                 strncmp(hdev->name, "ELAN0628", 8) == 0 ||
> > > +                 strncmp(hdev->name, "ELAN0629", 8) == 0 ||
> > > +                 strncmp(hdev->name, "ELAN062A", 8) == 0 ||
> > > +                 strncmp(hdev->name, "ELAN062B", 8) == 0 ||
> > > +                 strncmp(hdev->name, "ELAN062C", 8) == 0 ||
> > > +                 strncmp(hdev->name, "ELAN062D", 8) == 0 ||
> > > +                 strncmp(hdev->name, "ELAN0631", 8) == 0 ||
> > > +                 strncmp(hdev->name, "ELAN0632", 8) == 0 ||
> > > +                 strncmp(hdev->name, "ELAN1000", 8) == 0 ||
> > > +                 strncmp(hdev->name, "elan,ekth3000", 13) == 0))
> > >                       return true;
> > >               break;
> > >       }
> > > diff --git a/drivers/input/mouse/elan_i2c_core.c b/drivers/input/mouse/elan_i2c_core.c
> > > index f9525d6f0bfe..3ded19528cd4 100644
> > > --- a/drivers/input/mouse/elan_i2c_core.c
> > > +++ b/drivers/input/mouse/elan_i2c_core.c
> > > @@ -1332,6 +1332,10 @@ static const struct i2c_device_id elan_id[] = {
> > >  };
> > >  MODULE_DEVICE_TABLE(i2c, elan_id);
> > >
> > > +/*
> > > + * when these whtielists get updated, the corresponding blacklist in hid-quirks
> > > + * needs to be updated to match.
> > > + */
> > >  #ifdef CONFIG_ACPI
> > >  static const struct acpi_device_id elan_acpi_id[] = {
> > >       { "ELAN0000", 0 },
> > > --
> > > 2.17.1
> > >

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v4 2/2] arm64: dts: qcom: Add Lenovo Miix 630
  2019-06-06  5:50   ` Lee Jones
@ 2019-06-06  7:26     ` Bjorn Andersson
  2019-06-06  8:13       ` Lee Jones
  0 siblings, 1 reply; 14+ messages in thread
From: Bjorn Andersson @ 2019-06-06  7:26 UTC (permalink / raw)
  To: Lee Jones
  Cc: Jeffrey Hugo, robh+dt, mark.rutland, agross, david.brown,
	dmitry.torokhov, jikos, benjamin.tissoires, hdegoede,
	linux-input, devicetree, linux-arm-msm, linux-kernel

On Wed 05 Jun 22:50 PDT 2019, Lee Jones wrote:

> On Tue, 23 Apr 2019, Jeffrey Hugo wrote:
> 
> > This adds the initial DT for the Lenovo Miix 630 laptop.  Supported
> > functionality includes USB (host), microSD-card, keyboard, and trackpad.
> > 
> > Signed-off-by: Jeffrey Hugo <jeffrey.l.hugo@gmail.com>
> > ---
> >  arch/arm64/boot/dts/qcom/Makefile             |   1 +
> >  .../boot/dts/qcom/msm8998-clamshell.dtsi      | 278 ++++++++++++++++++
> >  .../boot/dts/qcom/msm8998-lenovo-miix-630.dts |  30 ++
> 
> What's happening with this patch?
> 

The thermal-zones are wrong, but I'm okay with an incremental patch for
that...

> It's been on the list a while now.  I'm waiting for it to be accepted,
> since there are patches I wish to submit which are based on it.
> 
> Who is responsible for merging these?
> 

...so I've just been waiting for a conclusion on the HID patch before I
could pick this up.

Regards,
Bjorn

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v4 2/2] arm64: dts: qcom: Add Lenovo Miix 630
  2019-06-06  7:26     ` Bjorn Andersson
@ 2019-06-06  8:13       ` Lee Jones
  2019-06-06  8:40         ` Marc Gonzalez
  2019-06-06 14:27         ` Jeffrey Hugo
  0 siblings, 2 replies; 14+ messages in thread
From: Lee Jones @ 2019-06-06  8:13 UTC (permalink / raw)
  To: Bjorn Andersson
  Cc: Jeffrey Hugo, robh+dt, mark.rutland, agross, david.brown,
	dmitry.torokhov, jikos, benjamin.tissoires, hdegoede,
	linux-input, devicetree, linux-arm-msm, linux-kernel

On Thu, 06 Jun 2019, Bjorn Andersson wrote:

> On Wed 05 Jun 22:50 PDT 2019, Lee Jones wrote:
> 
> > On Tue, 23 Apr 2019, Jeffrey Hugo wrote:
> > 
> > > This adds the initial DT for the Lenovo Miix 630 laptop.  Supported
> > > functionality includes USB (host), microSD-card, keyboard, and trackpad.
> > > 
> > > Signed-off-by: Jeffrey Hugo <jeffrey.l.hugo@gmail.com>
> > > ---
> > >  arch/arm64/boot/dts/qcom/Makefile             |   1 +
> > >  .../boot/dts/qcom/msm8998-clamshell.dtsi      | 278 ++++++++++++++++++
> > >  .../boot/dts/qcom/msm8998-lenovo-miix-630.dts |  30 ++
> > 
> > What's happening with this patch?
> > 
> 
> The thermal-zones are wrong, but I'm okay with an incremental patch for
> that...

I guess it would take you about 10 seconds to whip those out when
merging?

> > It's been on the list a while now.  I'm waiting for it to be accepted,
> > since there are patches I wish to submit which are based on it.
> > 
> > Who is responsible for merging these?
> 
> ...so I've just been waiting for a conclusion on the HID patch before I
> could pick this up.

Aren't they orthogonal? 

-- 
Lee Jones [李琼斯]
Linaro Services Technical Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v4 2/2] arm64: dts: qcom: Add Lenovo Miix 630
  2019-06-06  8:13       ` Lee Jones
@ 2019-06-06  8:40         ` Marc Gonzalez
  2019-06-06  9:01           ` Lee Jones
  2019-06-06 14:27         ` Jeffrey Hugo
  1 sibling, 1 reply; 14+ messages in thread
From: Marc Gonzalez @ 2019-06-06  8:40 UTC (permalink / raw)
  To: Lee Jones, Bjorn Andersson, Jeffrey Hugo; +Cc: MSM, LKML

On 06/06/2019 10:13, Lee Jones wrote:

> On Thu, 06 Jun 2019, Bjorn Andersson wrote:
> 
>> On Wed 05 Jun 22:50 PDT 2019, Lee Jones wrote:
>>
>>> On Tue, 23 Apr 2019, Jeffrey Hugo wrote:
>>>
>>>> This adds the initial DT for the Lenovo Miix 630 laptop.  Supported
>>>> functionality includes USB (host), microSD-card, keyboard, and trackpad.
>>>>
>>>> Signed-off-by: Jeffrey Hugo <jeffrey.l.hugo@gmail.com>
>>>> ---
>>>>  arch/arm64/boot/dts/qcom/Makefile             |   1 +
>>>>  .../boot/dts/qcom/msm8998-clamshell.dtsi      | 278 ++++++++++++++++++
>>>>  .../boot/dts/qcom/msm8998-lenovo-miix-630.dts |  30 ++
>>>
>>> What's happening with this patch?
>>>
>>
>> The thermal-zones are wrong, but I'm okay with an incremental patch for
>> that...
> 
> I guess it would take you about 10 seconds to whip those out when
> merging?

https://git.kernel.org/pub/scm/linux/kernel/git/agross/linux.git/commit/?h=for-next&id=ad480e0149cfc10defe76e88354b977360adb7a1

AFAIU, the fixup is to just drop the thermal-zones section altogether.

Regards.

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v4 2/2] arm64: dts: qcom: Add Lenovo Miix 630
  2019-06-06  8:40         ` Marc Gonzalez
@ 2019-06-06  9:01           ` Lee Jones
  0 siblings, 0 replies; 14+ messages in thread
From: Lee Jones @ 2019-06-06  9:01 UTC (permalink / raw)
  To: Marc Gonzalez; +Cc: Bjorn Andersson, Jeffrey Hugo, MSM, LKML

On Thu, 06 Jun 2019, Marc Gonzalez wrote:

> On 06/06/2019 10:13, Lee Jones wrote:
> 
> > On Thu, 06 Jun 2019, Bjorn Andersson wrote:
> > 
> >> On Wed 05 Jun 22:50 PDT 2019, Lee Jones wrote:
> >>
> >>> On Tue, 23 Apr 2019, Jeffrey Hugo wrote:
> >>>
> >>>> This adds the initial DT for the Lenovo Miix 630 laptop.  Supported
> >>>> functionality includes USB (host), microSD-card, keyboard, and trackpad.
> >>>>
> >>>> Signed-off-by: Jeffrey Hugo <jeffrey.l.hugo@gmail.com>
> >>>> ---
> >>>>  arch/arm64/boot/dts/qcom/Makefile             |   1 +
> >>>>  .../boot/dts/qcom/msm8998-clamshell.dtsi      | 278 ++++++++++++++++++
> >>>>  .../boot/dts/qcom/msm8998-lenovo-miix-630.dts |  30 ++
> >>>
> >>> What's happening with this patch?
> >>>
> >>
> >> The thermal-zones are wrong, but I'm okay with an incremental patch for
> >> that...
> > 
> > I guess it would take you about 10 seconds to whip those out when
> > merging?
> 
> https://git.kernel.org/pub/scm/linux/kernel/git/agross/linux.git/commit/?h=for-next&id=ad480e0149cfc10defe76e88354b977360adb7a1
> 
> AFAIU, the fixup is to just drop the thermal-zones section altogether.

Yes, exactly.  A 10 second job.

-- 
Lee Jones [李琼斯]
Linaro Services Technical Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v4 2/2] arm64: dts: qcom: Add Lenovo Miix 630
  2019-06-06  8:13       ` Lee Jones
  2019-06-06  8:40         ` Marc Gonzalez
@ 2019-06-06 14:27         ` Jeffrey Hugo
  1 sibling, 0 replies; 14+ messages in thread
From: Jeffrey Hugo @ 2019-06-06 14:27 UTC (permalink / raw)
  To: Lee Jones
  Cc: Bjorn Andersson, Rob Herring, Mark Rutland, Andy Gross,
	David Brown, Dmitry Torokhov, Jiri Kosina, Benjamin Tissoires,
	Hans de Goede, open list:HID CORE LAYER, devicetree, MSM, lkml

On Thu, Jun 6, 2019 at 2:13 AM Lee Jones <lee.jones@linaro.org> wrote:
>
> On Thu, 06 Jun 2019, Bjorn Andersson wrote:
>
> > On Wed 05 Jun 22:50 PDT 2019, Lee Jones wrote:
> >
> > > On Tue, 23 Apr 2019, Jeffrey Hugo wrote:
> > >
> > > > This adds the initial DT for the Lenovo Miix 630 laptop.  Supported
> > > > functionality includes USB (host), microSD-card, keyboard, and trackpad.
> > > >
> > > > Signed-off-by: Jeffrey Hugo <jeffrey.l.hugo@gmail.com>
> > > > ---
> > > >  arch/arm64/boot/dts/qcom/Makefile             |   1 +
> > > >  .../boot/dts/qcom/msm8998-clamshell.dtsi      | 278 ++++++++++++++++++
> > > >  .../boot/dts/qcom/msm8998-lenovo-miix-630.dts |  30 ++
> > >
> > > What's happening with this patch?
> > >
> >
> > The thermal-zones are wrong, but I'm okay with an incremental patch for
> > that...
>
> I guess it would take you about 10 seconds to whip those out when
> merging?
>
> > > It's been on the list a while now.  I'm waiting for it to be accepted,
> > > since there are patches I wish to submit which are based on it.
> > >
> > > Who is responsible for merging these?
> >
> > ...so I've just been waiting for a conclusion on the HID patch before I
> > could pick this up.
>
> Aren't they orthogonal?

Eh, if the HID stuff changes, we'll probably have to change the DT.
Which isn't great.

I guess we could also merge this, and fix it up as necessary if there
is fall out from the HID stuff.

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v4 1/2] HID: quirks: Refactor ELAN 400 and 401 handling
  2019-06-06  7:06       ` Benjamin Tissoires
@ 2019-06-06 14:30         ` Jeffrey Hugo
  0 siblings, 0 replies; 14+ messages in thread
From: Jeffrey Hugo @ 2019-06-06 14:30 UTC (permalink / raw)
  To: Benjamin Tissoires
  Cc: Bjorn Andersson, Dmitry Torokhov, Jiri Kosina, Lee Jones,
	Rob Herring, Mark Rutland, Andy Gross, David Brown,
	Hans de Goede, open list:HID CORE LAYER, devicetree, MSM, lkml

On Thu, Jun 6, 2019 at 1:07 AM Benjamin Tissoires
<benjamin.tissoires@redhat.com> wrote:
>
> On Thu, Jun 6, 2019 at 1:25 AM Jeffrey Hugo <jeffrey.l.hugo@gmail.com> wrote:
> >
> > On Tue, May 21, 2019 at 10:42 AM Bjorn Andersson
> > <bjorn.andersson@linaro.org> wrote:
> > >
> > > On Tue 23 Apr 09:06 PDT 2019, Jeffrey Hugo wrote:
> > >
> > > > There needs to be coordination between hid-quirks and the elan_i2c driver
> > > > about which devices are handled by what drivers.  Currently, both use
> > > > whitelists, which results in valid devices being unhandled by default,
> > > > when they should not be rejected by hid-quirks.  This is quickly becoming
> > > > an issue.
> > > >
> > > > Since elan_i2c has a maintained whitelist of what devices it will handle,
> > > > use that to implement a blacklist in hid-quirks so that only the devices
> > > > that need to be handled by elan_i2c get rejected by hid-quirks, and
> > > > everything else is handled by default.  The downside is the whitelist and
> > > > blacklist need to be kept in sync.
> > > >
> > >
> > > Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
> > >
> > > Jiri, the two patches in this series doesn't have a build time
> > > dependency, so if you take this one through your tree I'll take 2/2
> > > through arm-soc.
> >
> > Ping?  Is this good from the HID perspective?  I would really like to
> > see this queued for 5.3.
> >
>
> Sorry, this felt through the cracks.

No problem.

>
> I'm fine with the idea of the patch, but I just realized what bugged me:
> we should instead have a static array of the various ACPI matches,
> instead of duplicating the various strncmp.
>
> So IMO, we should:
> - merge patch 2/2 through Bjorn's tree (or with any changes he would request)
> - have a v5 for the HID/input part with:
>   * a static array of the names to match against in hid-quirks.c
>   * separate the elan_i2c trivial change in its separate patch as
> there are already a few changes committed in the input tree, which is
> different from the HID tree. I don't expect any conflicts though, so
> if Dmitry is fine, I can take the whole input/HID part through the HID
> tree, but a separate patch would be more obvious in case of a
> conflict.

Ok.  Will respin today.

>
> Cheers,
> Benjamin
>
> > >
> > > Regards,
> > > Bjorn
> > >
> > > > Suggested-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
> > > > Signed-off-by: Jeffrey Hugo <jeffrey.l.hugo@gmail.com>
> > > > ---
> > > >  drivers/hid/hid-quirks.c            | 64 ++++++++++++++++++++++++-----
> > > >  drivers/input/mouse/elan_i2c_core.c |  4 ++
> > > >  2 files changed, 58 insertions(+), 10 deletions(-)
> > > >
> > > > diff --git a/drivers/hid/hid-quirks.c b/drivers/hid/hid-quirks.c
> > > > index 77ffba48cc73..656485e08eb7 100644
> > > > --- a/drivers/hid/hid-quirks.c
> > > > +++ b/drivers/hid/hid-quirks.c
> > > > @@ -987,17 +987,61 @@ bool hid_ignore(struct hid_device *hdev)
> > > >               break;
> > > >       case USB_VENDOR_ID_ELAN:
> > > >               /*
> > > > -              * Many Elan devices have a product id of 0x0401 and are handled
> > > > -              * by the elan_i2c input driver. But the ACPI HID ELAN0800 dev
> > > > -              * is not (and cannot be) handled by that driver ->
> > > > -              * Ignore all 0x0401 devs except for the ELAN0800 dev.
> > > > +              * Blacklist of everything that gets handled by the elan_i2c
> > > > +              * input driver.  This should be kept in sync with the whitelist
> > > > +              * that exists in that driver.  This avoids disabling valid
> > > > +              * touchpads and other ELAN devices.
> > > >                */
> > > > -             if (hdev->product == 0x0401 &&
> > > > -                 strncmp(hdev->name, "ELAN0800", 8) != 0)
> > > > -                     return true;
> > > > -             /* Same with product id 0x0400 */
> > > > -             if (hdev->product == 0x0400 &&
> > > > -                 strncmp(hdev->name, "QTEC0001", 8) != 0)
> > > > +             if ((hdev->product == 0x0401 || hdev->product == 0x0400) &&
> > > > +                (strncmp(hdev->name, "ELAN0000", 8) == 0 ||
> > > > +                 strncmp(hdev->name, "ELAN0100", 8) == 0 ||
> > > > +                 strncmp(hdev->name, "ELAN0600", 8) == 0 ||
> > > > +                 strncmp(hdev->name, "ELAN0601", 8) == 0 ||
> > > > +                 strncmp(hdev->name, "ELAN0602", 8) == 0 ||
> > > > +                 strncmp(hdev->name, "ELAN0603", 8) == 0 ||
> > > > +                 strncmp(hdev->name, "ELAN0604", 8) == 0 ||
> > > > +                 strncmp(hdev->name, "ELAN0605", 8) == 0 ||
> > > > +                 strncmp(hdev->name, "ELAN0606", 8) == 0 ||
> > > > +                 strncmp(hdev->name, "ELAN0607", 8) == 0 ||
> > > > +                 strncmp(hdev->name, "ELAN0608", 8) == 0 ||
> > > > +                 strncmp(hdev->name, "ELAN0609", 8) == 0 ||
> > > > +                 strncmp(hdev->name, "ELAN060B", 8) == 0 ||
> > > > +                 strncmp(hdev->name, "ELAN060C", 8) == 0 ||
> > > > +                 strncmp(hdev->name, "ELAN060F", 8) == 0 ||
> > > > +                 strncmp(hdev->name, "ELAN0610", 8) == 0 ||
> > > > +                 strncmp(hdev->name, "ELAN0611", 8) == 0 ||
> > > > +                 strncmp(hdev->name, "ELAN0612", 8) == 0 ||
> > > > +                 strncmp(hdev->name, "ELAN0613", 8) == 0 ||
> > > > +                 strncmp(hdev->name, "ELAN0614", 8) == 0 ||
> > > > +                 strncmp(hdev->name, "ELAN0615", 8) == 0 ||
> > > > +                 strncmp(hdev->name, "ELAN0616", 8) == 0 ||
> > > > +                 strncmp(hdev->name, "ELAN0617", 8) == 0 ||
> > > > +                 strncmp(hdev->name, "ELAN0618", 8) == 0 ||
> > > > +                 strncmp(hdev->name, "ELAN0619", 8) == 0 ||
> > > > +                 strncmp(hdev->name, "ELAN061A", 8) == 0 ||
> > > > +                 strncmp(hdev->name, "ELAN061B", 8) == 0 ||
> > > > +                 strncmp(hdev->name, "ELAN061C", 8) == 0 ||
> > > > +                 strncmp(hdev->name, "ELAN061D", 8) == 0 ||
> > > > +                 strncmp(hdev->name, "ELAN061E", 8) == 0 ||
> > > > +                 strncmp(hdev->name, "ELAN061F", 8) == 0 ||
> > > > +                 strncmp(hdev->name, "ELAN0620", 8) == 0 ||
> > > > +                 strncmp(hdev->name, "ELAN0621", 8) == 0 ||
> > > > +                 strncmp(hdev->name, "ELAN0622", 8) == 0 ||
> > > > +                 strncmp(hdev->name, "ELAN0623", 8) == 0 ||
> > > > +                 strncmp(hdev->name, "ELAN0624", 8) == 0 ||
> > > > +                 strncmp(hdev->name, "ELAN0625", 8) == 0 ||
> > > > +                 strncmp(hdev->name, "ELAN0626", 8) == 0 ||
> > > > +                 strncmp(hdev->name, "ELAN0627", 8) == 0 ||
> > > > +                 strncmp(hdev->name, "ELAN0628", 8) == 0 ||
> > > > +                 strncmp(hdev->name, "ELAN0629", 8) == 0 ||
> > > > +                 strncmp(hdev->name, "ELAN062A", 8) == 0 ||
> > > > +                 strncmp(hdev->name, "ELAN062B", 8) == 0 ||
> > > > +                 strncmp(hdev->name, "ELAN062C", 8) == 0 ||
> > > > +                 strncmp(hdev->name, "ELAN062D", 8) == 0 ||
> > > > +                 strncmp(hdev->name, "ELAN0631", 8) == 0 ||
> > > > +                 strncmp(hdev->name, "ELAN0632", 8) == 0 ||
> > > > +                 strncmp(hdev->name, "ELAN1000", 8) == 0 ||
> > > > +                 strncmp(hdev->name, "elan,ekth3000", 13) == 0))
> > > >                       return true;
> > > >               break;
> > > >       }
> > > > diff --git a/drivers/input/mouse/elan_i2c_core.c b/drivers/input/mouse/elan_i2c_core.c
> > > > index f9525d6f0bfe..3ded19528cd4 100644
> > > > --- a/drivers/input/mouse/elan_i2c_core.c
> > > > +++ b/drivers/input/mouse/elan_i2c_core.c
> > > > @@ -1332,6 +1332,10 @@ static const struct i2c_device_id elan_id[] = {
> > > >  };
> > > >  MODULE_DEVICE_TABLE(i2c, elan_id);
> > > >
> > > > +/*
> > > > + * when these whtielists get updated, the corresponding blacklist in hid-quirks
> > > > + * needs to be updated to match.
> > > > + */
> > > >  #ifdef CONFIG_ACPI
> > > >  static const struct acpi_device_id elan_acpi_id[] = {
> > > >       { "ELAN0000", 0 },
> > > > --
> > > > 2.17.1
> > > >

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2019-06-06 14:30 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-04-23 16:05 [PATCH v4 0/2] Basic DT support for Lenovo Miix 630 Jeffrey Hugo
2019-04-23 16:06 ` [PATCH v4 1/2] HID: quirks: Refactor ELAN 400 and 401 handling Jeffrey Hugo
2019-05-21 16:43   ` Bjorn Andersson
2019-06-05 23:25     ` Jeffrey Hugo
2019-06-06  7:06       ` Benjamin Tissoires
2019-06-06 14:30         ` Jeffrey Hugo
2019-06-06  5:20   ` Lee Jones
2019-04-23 16:06 ` [PATCH v4 2/2] arm64: dts: qcom: Add Lenovo Miix 630 Jeffrey Hugo
2019-06-06  5:50   ` Lee Jones
2019-06-06  7:26     ` Bjorn Andersson
2019-06-06  8:13       ` Lee Jones
2019-06-06  8:40         ` Marc Gonzalez
2019-06-06  9:01           ` Lee Jones
2019-06-06 14:27         ` Jeffrey Hugo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).