]> git.baikalelectronics.ru Git - kernel.git/commit
platform/x86: intel-vbtn: Detect switch position before registering the input-device
authorHans de Goede <hdegoede@redhat.com>
Sun, 10 May 2020 12:20:47 +0000 (14:20 +0200)
committerAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Tue, 12 May 2020 14:27:12 +0000 (17:27 +0300)
commitc83aebd09c687073a99640896efbb8cf95b93a66
tree67fc0cb08244d7fff043aca8d98d0be3c228700d
parent49db9b533ef6e3217f1280774b14815c529b4106
platform/x86: intel-vbtn: Detect switch position before registering the input-device

Setting the initial state of input-device switches must be done before
registering the input-device.

Otherwise the initial state will get send out as an event as soon
as input_sync() gets called.

E.g. when undocking a tablet using intel-vbtn to report SW_TABLET_MODE
and SW_DOCK before this commit we would get (evemu-record output):

E: 0.000001 0005 0005 0001 # EV_SW / SW_DOCK              1
E: 0.000001 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +0ms
E: 0.000109 0005 0005 0000 # EV_SW / SW_DOCK              0
E: 0.000109 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +0ms
E: 0.000133 0005 0001 0001 # EV_SW / SW_TABLET_MODE       1
E: 0.000133 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +0ms

The first SW_DOCK=1 report is spurious, setting the initial switch
state before registering the input-device fixes this.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
drivers/platform/x86/intel-vbtn.c