diff -Nru slimbook-qc71-dkms-0.3.2/debian/changelog slimbook-qc71-dkms-0.3.3/debian/changelog --- slimbook-qc71-dkms-0.3.2/debian/changelog 2023-11-16 14:56:09.000000000 +0000 +++ slimbook-qc71-dkms-0.3.3/debian/changelog 2024-03-01 11:42:43.000000000 +0000 @@ -1,3 +1,11 @@ +slimbook-qc71-dkms (0.3.3) jammy; urgency=medium + + * Updated to fc37de1112915248c1a940716edc2fbbe1699f9d + * Events sent now are model specific, no longer generic + * Sending recognized keycodes, no longer raw scancodes + + -- Slimbook Fri, 01 Mar 2024 12:42:43 +0100 + slimbook-qc71-dkms (0.3.2) jammy; urgency=medium * Updated to 4815fb9757278d9354a8611bc18ca7d7df7474f4 diff -Nru slimbook-qc71-dkms-0.3.2/slimbook-qc71-0.0/events.c slimbook-qc71-dkms-0.3.3/slimbook-qc71-0.0/events.c --- slimbook-qc71-dkms-0.3.2/slimbook-qc71-0.0/events.c 2023-11-16 10:21:22.000000000 +0000 +++ slimbook-qc71-dkms-0.3.3/slimbook-qc71-0.0/events.c 2024-03-01 11:40:27.000000000 +0000 @@ -12,6 +12,7 @@ #include "misc.h" #include "pdev.h" #include "wmi.h" +#include "features.h" /* ========================================================================== */ @@ -53,9 +54,11 @@ * handled automatically when it automatic mode */ { KE_KEY, 0xa4, { KEY_RFKILL }}, + { KE_KEY, 0xa5, { KEY_FN_F2 }}, { KE_KEY, 0xb1, { KEY_KBDILLUMDOWN }}, { KE_KEY, 0xb2, { KEY_KBDILLUMUP }}, { KE_KEY, 0xb8, { KEY_FN_ESC }}, + { KE_KEY, 0xbc, { KEY_FN_F5 }}, { KE_END } @@ -223,7 +226,7 @@ /* super key (win key) lock state changed */ case 0xa5: - do_report = false; + //do_report = false; pr_debug("super key lock state changed\n"); sysfs_notify(&qc71_platform_dev->dev.kobj, NULL, "super_key_lock"); break; @@ -274,10 +277,17 @@ /* perf mode button pressed */ case 0xbc: do_report = false; - pr_info("change perf mode\n"); - /* TODO: should it be handled here? */ + pr_info("change perfomance mode\n"); + + if (qc71_model == SLB_MODEL_EXECUTIVE) { + do_report = true; + } + sysfs_notify(&qc71_platform_dev->dev.kobj, NULL, "silent_mode"); - sysfs_notify(&qc71_platform_dev->dev.kobj, NULL, "turbo_mode"); + + if (qc71_model == SLB_MODEL_HERO || qc71_model == SLB_MODEL_TITAN) { + sysfs_notify(&qc71_platform_dev->dev.kobj, NULL, "turbo_mode"); + } break; /* keyboard backlight brightness changed */ diff -Nru slimbook-qc71-dkms-0.3.2/slimbook-qc71-0.0/features.c slimbook-qc71-dkms-0.3.3/slimbook-qc71-0.0/features.c --- slimbook-qc71-dkms-0.3.2/slimbook-qc71-0.0/features.c 2023-11-16 10:21:22.000000000 +0000 +++ slimbook-qc71-dkms-0.3.3/slimbook-qc71-0.0/features.c 2024-03-01 11:40:27.000000000 +0000 @@ -20,10 +20,20 @@ /* ========================================================================== */ -static int __init slimbook_dmi_cb(const struct dmi_system_id *id) +static int __init slimbook_prox_dmi_cb(const struct dmi_system_id *id) { qc71_features.fn_lock = true; qc71_features.silent_mode = true; + qc71_model = SLB_MODEL_PROX; + + return 1; +} + +static int __init slimbook_executive_dmi_cb(const struct dmi_system_id *id) +{ + qc71_features.fn_lock = true; + qc71_features.silent_mode = true; + qc71_model = SLB_MODEL_EXECUTIVE; return 1; } @@ -32,6 +42,7 @@ { qc71_features.silent_mode = true; qc71_features.turbo_mode = true; + qc71_model = SLB_MODEL_TITAN; return 1; } @@ -41,6 +52,7 @@ qc71_features.silent_mode = true; qc71_features.turbo_mode = true; qc71_features.kbd_backlight_rgb = true; + qc71_model = SLB_MODEL_HERO; return 1; } @@ -62,7 +74,7 @@ }, { /* Slimbook PROX AMD */ - .callback = slimbook_dmi_cb, + .callback = slimbook_prox_dmi_cb, .matches = { DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "PROX-AMD"), DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "SLIMBOOK"), @@ -71,7 +83,7 @@ }, { /* Slimbook PROX15 AMD */ - .callback = slimbook_dmi_cb, + .callback = slimbook_prox_dmi_cb, .matches = { DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "PROX15-AMD"), DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "SLIMBOOK"), @@ -80,7 +92,7 @@ }, { /* Slimbook PROX AMD5 */ - .callback = slimbook_dmi_cb, + .callback = slimbook_prox_dmi_cb, .matches = { DMI_EXACT_MATCH(DMI_PRODUCT_NAME,"PROX-AMD5"), DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "SLIMBOOK"), @@ -89,7 +101,7 @@ }, { /* Slimbook PROX15 AMD5 */ - .callback = slimbook_dmi_cb, + .callback = slimbook_prox_dmi_cb, .matches = { DMI_EXACT_MATCH(DMI_PRODUCT_NAME,"PROX15-AMD5"), DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "SLIMBOOK"), @@ -107,7 +119,7 @@ }, { /* Executive 12th */ - .callback = slimbook_dmi_cb, + .callback = slimbook_executive_dmi_cb, .matches = { DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Executive"), DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "SLIMBOOK"), @@ -116,7 +128,7 @@ }, { /* Executive-14 11th */ - .callback = slimbook_dmi_cb, + .callback = slimbook_executive_dmi_cb, .matches = { DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "EXECUTIVE-14"), DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "SLIMBOOK"), @@ -124,6 +136,7 @@ } }, { + /* Slimbook Hero Raptor Lake with Nvidia RTX */ .callback = slimbook_hero_dmi_cb, .matches = { DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "HERO-RPL-RTX"), @@ -137,6 +150,7 @@ /* ========================================================================== */ struct qc71_features_struct qc71_features; +uint32_t qc71_model; /* ========================================================================== */ diff -Nru slimbook-qc71-dkms-0.3.2/slimbook-qc71-0.0/features.h slimbook-qc71-dkms-0.3.3/slimbook-qc71-0.0/features.h --- slimbook-qc71-dkms-0.3.2/slimbook-qc71-0.0/features.h 2023-11-16 10:21:22.000000000 +0000 +++ slimbook-qc71-dkms-0.3.3/slimbook-qc71-0.0/features.h 2024-03-01 11:40:27.000000000 +0000 @@ -5,6 +5,11 @@ #include #include +#define SLB_MODEL_EXECUTIVE 0x0100 +#define SLB_MODEL_PROX 0x0200 +#define SLB_MODEL_TITAN 0x0400 +#define SLB_MODEL_HERO 0x0800 + struct qc71_features_struct { bool super_key_lock : 1; bool lightbar : 1; @@ -20,6 +25,7 @@ /* ========================================================================== */ extern struct qc71_features_struct qc71_features; +extern uint32_t qc71_model; /* ========================================================================== */