Received: by 2002:ac0:a581:0:0:0:0:0 with SMTP id m1-v6csp3316886imm; Sun, 24 Jun 2018 17:32:21 -0700 (PDT) X-Google-Smtp-Source: ADUXVKKi8Xr0EGymM3Pqi6154wDCAR94xu0ciAyNsLvVUX+L3x8R4QPTkyz/T0S+Ca1hsyYuPOUi X-Received: by 2002:a62:3d15:: with SMTP id k21-v6mr3400649pfa.61.1529886741047; Sun, 24 Jun 2018 17:32:21 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1529886741; cv=none; d=google.com; s=arc-20160816; b=0XEaQdEBCe6n5/bhZS0MfCoZcBAUVIgWLmWSeShIAVS1xelxy/9YCuFOMYtQT6VMwo gwLn8avgoZioS6zIZmr+dDrH1leR/jwROuczkZwHEwfSeAcRh5zEWMC8TilgkaZZYY4+ LarlSwyPlv6QBK8Ntg8l6pA9hbEZVI1ylOpZe2bIoRF5GQ+Iqq/EWS1gCrz/+l2ZjUdn ZLmjp40sWpeyEUZ1e4Lasd4mJAV7Iu5TyW38CY/HwZ4ZDFq4IT7mgtpX7+2d9w23/kd4 miu+RUgJqBI2TT2NspDDIEXD9YW+xJit16WJ8ev2qUpwZEvZVQP7LC6FcEaLGA6p7xMM SCyA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :dkim-signature:arc-authentication-results; bh=TiqpLj5vJjuHzBO2JRV+YLe/YFUQ2LsxJvvpm8zGnrE=; b=Q14SJz6RSN5NL5psGjjzkX6aXOJqG2vSqSWbeGaH2qCuZBIgTN/+ZXIyV5WDXvCfCi J7P9yQiWKSxuxS+DoJCVuFx6PFXWM/BaGnHP0w5PtYR/MHiSfXUgoF9eoDIu38YfrLJd p92aq/7BUUU+mcD4KT2Rqt82gZmm/C59XUlW49l2XRom9gAsBvAEyDtp3x1p+6rjF0Cu jAH28iqZ6ZC1wv29m5/V76TOqD3lniVs+n267/ts+85Myd85QbPid142gtC26jwD5KML CWs0flj0sF3UciH14Ttn2lPVIGd7SEUeyvYZRryBQkkxPbYVBN1jYDuXm3WjA9ycx1/t ZDyg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=cjD6Bhx7; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 1-v6si12827869plz.379.2018.06.24.17.31.38; Sun, 24 Jun 2018 17:32:21 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=cjD6Bhx7; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752220AbeFYAaF (ORCPT + 99 others); Sun, 24 Jun 2018 20:30:05 -0400 Received: from mail-pg0-f67.google.com ([74.125.83.67]:47042 "EHLO mail-pg0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752120AbeFYAaD (ORCPT ); Sun, 24 Jun 2018 20:30:03 -0400 Received: by mail-pg0-f67.google.com with SMTP id q14-v6so1505860pgt.13 for ; Sun, 24 Jun 2018 17:30:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id; bh=TiqpLj5vJjuHzBO2JRV+YLe/YFUQ2LsxJvvpm8zGnrE=; b=cjD6Bhx7hJkCK/LwactZ4qNoWxh3WwECQ69gzgJRGIXuvABMnXMy9FbClzn7+tTSrW p6/7BKRl1DYPU/ifqJpK+ce5WHlGGfOdIs+eHxsqV6V14KtMV5KTz7nM5tDS0iFgnjzC t3SxOfGjEqEtFf5mQ2e7vhKgyc/QAx2zIaJVA= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=TiqpLj5vJjuHzBO2JRV+YLe/YFUQ2LsxJvvpm8zGnrE=; b=Le+o4GpqibSDppvvAJRUedEzq5J+1FTnQYk4J2lMHLSVtdzAqC7cijl4PdFIFxJVPa eurIXj+SHHapau0hY0OTJziMzp/fHmDbW2I+Ca7w4KVDtPC6mGxrWUr04QfKfcRDU8Oc gXPUsqjooaSiQB/NILAMAZlvXDpNd7HvZNOvB03/SO9c1x0cozVoPGFV7bJHHW5Hfgpp B7k15FsaR2Q6GvRB3z8QlX0NMLXtYTNotiLSkRULF6LibL+frvfvn0k/g7FEpRrp2VKT FqCV4Ew4HoCx0rkUIYIZIVt5a0VQJxlUbeqC7CuMM4zuK7sq9hdepS9x6G0sWHY82C6a uwqQ== X-Gm-Message-State: APt69E2f6n/U5QhDhUzwI0p0FEnbljHYIzP3/NHkjCs/kAM4Qy9j/DK9 OuHBRSdHycjuppLRCleS+e09Dw== X-Received: by 2002:a63:3807:: with SMTP id f7-v6mr8777158pga.446.1529886603049; Sun, 24 Jun 2018 17:30:03 -0700 (PDT) Received: from delco2.sfo.corp.google.com ([2620:0:1002:19:b211:91ff:fab4:4e8]) by smtp.gmail.com with ESMTPSA id k69-v6sm21948365pgc.39.2018.06.24.17.30.01 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 24 Jun 2018 17:30:02 -0700 (PDT) From: Matt Delco To: AceLan Kao Cc: Matt Delco , Darren Hart , Andy Shevchenko , platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org, Dmitry Torokhov Subject: [PATCH v2] platform/x86: intel-vbtn: Add support for dock mode detection Date: Sun, 24 Jun 2018 17:29:40 -0700 Message-Id: <20180625002940.117141-1-delco@chromium.org> X-Mailer: git-send-email 2.18.0.rc2.346.g013aa6912e-goog Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The Dell laptop I have has an ACPI that sends 0xCB and 0xCC on entering tablet mode. On exiting tablet mode it sends 0xCA and 0xCD. Based on: http://www.traby.de/medion/DSDT/dsdt.dsl https://gist.github.com/jprvita/5737de3cbb670e80973b7d4e51c38ab6 https://osdn.net/projects/android-x86/scm/git/kernel/commits/ 7cbe5a330687b851f32dd9f1048a6ce182d0ff44 It appears that 0xCA and 0xCB are about dock mode, which for my convertible laptop seems questionably tied to whether I've put the laptop in tablet or laptop mode. I previously proposed no-oping 0xCA and 0xCB but this revised change attempts to add support for detecting dock mode--this detection will essentially be broken for my laptop (the main workaround would be for 0xCA and 0xCB to be used to provoke a query of the VGBS method that reports the current dock & tablet mode [which is accurately reported on my laptop but based on the prior workarounds in the driver it apparently can't be trusted for all systems]). Signed-off-by: Matt Delco Cc: Darren Hart Cc: Andy Shevchenko Cc: platform-driver-x86@vger.kernel.org Cc: linux-kernel@vger.kernel.org Cc: Dmitry Torokhov --- drivers/platform/x86/intel-vbtn.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/platform/x86/intel-vbtn.c b/drivers/platform/x86/intel-vbtn.c index c13780b8dabb..06cd7e818ed5 100644 --- a/drivers/platform/x86/intel-vbtn.c +++ b/drivers/platform/x86/intel-vbtn.c @@ -17,6 +17,7 @@ /* When NOT in tablet mode, VGBS returns with the flag 0x40 */ #define TABLET_MODE_FLAG 0x40 +#define DOCK_MODE_FLAG 0x80 MODULE_LICENSE("GPL"); MODULE_AUTHOR("AceLan Kao"); @@ -38,6 +39,8 @@ static const struct key_entry intel_vbtn_keymap[] = { { KE_IGNORE, 0xC7, { KEY_VOLUMEDOWN } }, /* volume-down key release */ { KE_KEY, 0xC8, { KEY_ROTATE_LOCK_TOGGLE } }, /* rotate-lock key press */ { KE_KEY, 0xC9, { KEY_ROTATE_LOCK_TOGGLE } }, /* rotate-lock key release */ + { KE_SW, 0xCA, { .sw = { SW_DOCK, 1 } } }, /* Docked */ + { KE_SW, 0xCB, { .sw = { SW_DOCK, 0 } } }, /* Undocked */ { KE_SW, 0xCC, { .sw = { SW_TABLET_MODE, 1 } } }, /* Tablet */ { KE_SW, 0xCD, { .sw = { SW_TABLET_MODE, 0 } } }, /* Laptop */ { KE_END }, @@ -121,6 +124,8 @@ static void detect_tablet_mode(struct platform_device *device) m = !(obj->integer.value & TABLET_MODE_FLAG); input_report_switch(priv->input_dev, SW_TABLET_MODE, m); + m = (obj->integer.value & DOCK_MODE_FLAG) ? 1 : 0; + input_report_switch(priv->input_dev, SW_DOCK, m); out: kfree(vgbs_output.pointer); } -- 2.18.0.rc2.346.g013aa6912e-goog