Commit 24f7b9a0 authored by Hans de Goede's avatar Hans de Goede
Browse files

platform/x86: x86-android-tablets: Add support for extra buttons on Cyberbook T116



The Cyberbook T116 rugged tablet comes in both Windows and Android versions
and even on the Android version the DSDT is mostly sane. This tablet has
2 extra general purpose buttons in the row with the power + volume-buttons,
labeled P and F.

Use the x86-android-tablets infra to create a gpio-button device for these
2 extra buttons.

Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
Reviewed-by: default avatarAndy Shevchenko <andy.shevchenko@gmail.com>
Link: https://lore.kernel.org/r/20230505205901.42649-2-hdegoede@redhat.com
parent 6dc6c0c1
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -58,6 +58,17 @@ const struct dmi_system_id x86_android_tablet_ids[] __initconst = {
		},
		.driver_data = (void *)&chuwi_hi8_info,
	},
	{
		/* Cyberbook T116 Android version */
		.matches = {
			DMI_MATCH(DMI_BOARD_VENDOR, "Default string"),
			DMI_MATCH(DMI_BOARD_NAME, "Cherry Trail CR"),
			/* Above strings are much too generic, also match on SKU + BIOS date */
			DMI_MATCH(DMI_PRODUCT_SKU, "20170531"),
			DMI_MATCH(DMI_BIOS_DATE, "07/12/2017"),
		},
		.driver_data = (void *)&cyberbook_t116_info,
	},
	{
		/* CZC P10T */
		.ident = "CZC ODEON TPC-10 (\"P10T\")",
+39 −0
Original line number Diff line number Diff line
@@ -197,6 +197,45 @@ const struct x86_dev_info chuwi_hi8_info __initconst = {
	.init = chuwi_hi8_init,
};

/*
 * Cyberbook T116 Android version
 * This comes in both Windows and Android versions and even on Android
 * the DSDT is mostly sane. This tablet has 2 extra general purpose buttons
 * in the button row with the power + volume-buttons labeled P and F.
 * Use the x86-android-tablets infra to create a gpio-button device for these.
 */
static const struct x86_gpio_button cyberbook_t116_buttons[] __initconst = {
	{
		.button = {
			.code = KEY_PROG1,
			.active_low = true,
			.desc = "prog1_key",
			.type = EV_KEY,
			.wakeup = false,
			.debounce_interval = 50,
		},
		.chip = "INT33FF:00",
		.pin = 30,
	},
	{
		.button = {
			.code = KEY_PROG2,
			.active_low = true,
			.desc = "prog2_key",
			.type = EV_KEY,
			.wakeup = false,
			.debounce_interval = 50,
		},
		.chip = "INT33FF:03",
		.pin = 48,
	},
};

const struct x86_dev_info cyberbook_t116_info __initconst = {
	.gpio_button = cyberbook_t116_buttons,
	.gpio_button_count = ARRAY_SIZE(cyberbook_t116_buttons),
};

#define CZC_EC_EXTRA_PORT	0x68
#define CZC_EC_ANDROID_KEYS	0x63

+1 −0
Original line number Diff line number Diff line
@@ -94,6 +94,7 @@ extern const struct x86_dev_info advantech_mica_071_info;
extern const struct x86_dev_info asus_me176c_info;
extern const struct x86_dev_info asus_tf103c_info;
extern const struct x86_dev_info chuwi_hi8_info;
extern const struct x86_dev_info cyberbook_t116_info;
extern const struct x86_dev_info czc_p10t;
extern const struct x86_dev_info lenovo_yogabook_x90_info;
extern const struct x86_dev_info lenovo_yogabook_x91_info;