Skip to content

Commit 95b829f

Browse files
committed
platform/x86: x86-android-tablets: Add Wacom digitizer info for Lenovo Yoga Book
The Lenovo Yoga Book has a wacom digitizer in its keyboard half, add the necessary info to instantiate an i2c_client for the digitizer. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Link: https://lore.kernel.org/r/20230416212841.311152-2-hdegoede@redhat.com
1 parent 02377e9 commit 95b829f

1 file changed

Lines changed: 35 additions & 0 deletions

File tree

  • drivers/platform/x86/x86-android-tablets

drivers/platform/x86/x86-android-tablets/lenovo.c

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,16 @@ static struct lp855x_platform_data lenovo_lp8557_pdata = {
4040

4141
/* Lenovo Yoga Book X90F / X90L's Android factory img has everything hardcoded */
4242

43+
static const struct property_entry lenovo_yb1_x90_wacom_props[] = {
44+
PROPERTY_ENTRY_U32("hid-descr-addr", 0x0001),
45+
PROPERTY_ENTRY_U32("post-reset-deassert-delay-ms", 150),
46+
{ }
47+
};
48+
49+
static const struct software_node lenovo_yb1_x90_wacom_node = {
50+
.properties = lenovo_yb1_x90_wacom_props,
51+
};
52+
4353
/*
4454
* The HiDeep IST940E touchscreen comes up in I2C-HID mode. The native protocol
4555
* reports ABS_MT_PRESSURE and ABS_MT_TOUCH_MAJOR which are not reported in HID
@@ -86,6 +96,22 @@ static const struct x86_i2c_client_info lenovo_yb1_x90_i2c_clients[] __initconst
8696
.trigger = ACPI_EDGE_SENSITIVE,
8797
.polarity = ACPI_ACTIVE_LOW,
8898
},
99+
}, {
100+
/* Wacom Digitizer in keyboard half */
101+
.board_info = {
102+
.type = "hid-over-i2c",
103+
.addr = 0x09,
104+
.dev_name = "wacom",
105+
.swnode = &lenovo_yb1_x90_wacom_node,
106+
},
107+
.adapter_path = "\\_SB_.PCI0.I2C4",
108+
.irq_data = {
109+
.type = X86_ACPI_IRQ_TYPE_GPIOINT,
110+
.chip = "INT33FF:01",
111+
.index = 49,
112+
.trigger = ACPI_LEVEL_SENSITIVE,
113+
.polarity = ACPI_ACTIVE_LOW,
114+
},
89115
}, {
90116
/* LP8557 Backlight controller */
91117
.board_info = {
@@ -131,9 +157,18 @@ static struct gpiod_lookup_table lenovo_yb1_x90_hideep_gpios = {
131157
},
132158
};
133159

160+
static struct gpiod_lookup_table lenovo_yb1_x90_wacom_gpios = {
161+
.dev_id = "i2c-wacom",
162+
.table = {
163+
GPIO_LOOKUP("INT33FF:00", 82, "reset", GPIO_ACTIVE_LOW),
164+
{ }
165+
},
166+
};
167+
134168
static struct gpiod_lookup_table * const lenovo_yb1_x90_gpios[] = {
135169
&lenovo_yb1_x90_hideep_gpios,
136170
&lenovo_yb1_x90_goodix_gpios,
171+
&lenovo_yb1_x90_wacom_gpios,
137172
NULL
138173
};
139174

0 commit comments

Comments
 (0)