From patchwork Sat Oct 27 13:58:07 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: whs_jwc X-Patchwork-Id: 1655761 Return-Path: X-Original-To: patchwork-linux-input@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork1.kernel.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by patchwork1.kernel.org (Postfix) with ESMTP id 069753FD4F for ; Sat, 27 Oct 2012 14:14:33 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751532Ab2J0OO2 (ORCPT ); Sat, 27 Oct 2012 10:14:28 -0400 Received: from m13-84.163.com ([220.181.13.84]:57766 "EHLO m13-84.163.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751079Ab2J0OO2 (ORCPT ); Sat, 27 Oct 2012 10:14:28 -0400 X-Greylist: delayed 911 seconds by postgrey-1.27 at vger.kernel.org; Sat, 27 Oct 2012 10:14:27 EDT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com; s=s110527; h=Received:Date:From:To:Subject: Content-Transfer-Encoding:Content-Type:MIME-Version:Message-ID: Resent-From:Resent-Date:Errors-To:Resent-Message-Id; bh=Fo3caHqb ku35m1Bu4uzPGUysdYIwUs90c7XX9grWwCI=; b=mwZ4q/wAx5NplGG3731uZPt0 ySoFdvs5Igw1cXCrUX2183l/Jw/ykr6CSP0EwZ3LIRk/zPiu4c5m/qXWS5wbpDK2 Y0ZCjEBEvEK6IbpGg21afkBLIqsBsarAUxkJdc0rqDTenw44KfSr9eogL7g2tSiE k8I/yBtyv6cWu8xEYOU= Received: from whs_jwc$163.com ( [219.217.246.72] ) by ajax-webmail-wmsvr84 (Coremail) ; Sat, 27 Oct 2012 21:58:07 +0800 (CST) X-Originating-IP: [219.217.246.72] Date: Sat, 27 Oct 2012 21:58:07 +0800 (CST) From: whs_jwc To: whs_jwc@163.com Subject: [PATCH] Some Samsung laptops with Fn+Fx key release not working X-Priority: 3 X-Mailer: Coremail Webmail Server Version SP_ntes V3.5 build 20120914(19817.4926.4909) Copyright (c) 2002-2012 www.mailtech.cn 163com MIME-Version: 1.0 Message-ID: <69021e29.7876.13aa283f3de.Coremail.whs_jwc@163.com> X-CM-TRANSID: VMGowEApk0Kx6ItQ7bYuAA--.10370W X-CM-SenderInfo: pzkvsylzf6il2tof0z/ X-Coremail-Antispam: 1U5529EdanIXcx71UUUUU7vcSsGvfC2KfnxnUU== Sender: linux-input-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-input@vger.kernel.org [PATCH] Some Samsung laptops with Fn+Fx key release not working Some new Samsung laptops doesn't send key-release signal of the volume key to the OS, it's quite hard to change the volume by using Fn+Fx, so I decode the DMI and add several samsung machines to the forced_release_keys table in order to fixed this problem. DMI (only a part): # dmidecode ... Handle 0x0001, DMI type 1, 27 bytes System Information Manufacturer: SAMSUNG ELECTRONICS CO., LTD. Product Name: 355V4C/355V4X/355V5C/355V5X/356V4C/356V4X/356V5C/356V5X/3445VC/3445VX/3545VC/3545VX Version: P02AAN.014.CP Serial Number: HTD798FC7B1TQY UUID: 7661EB04-63B7-E111-9466-B888E35FDCEE Wake-up Type: Power Switch SKU Number: P02AAN.014.CP Family: Eureka ... P.S: I have tested this patch on all these machines and It works very well. Patched file(s): drivers/input/keyboard/atkbd.c ----- input_keyboard_samsung_laptops.patch ----- commit f7540722cf2e98a01f64239c184882de000904ac Author: WenCong Ji Date: Sat Oct 27 21:11:20 2012 +0800 input/keyboard: Some Samsung laptops with Fn+Fx key release not working Some new Samsung laptops doesn't send key-release signal to the Operating System when we click on Fn+F[6-8], so we have to force it to release immedi- ately after receiving the key-press signal. Signed-off-by: WenCong Ji Signed-off-by: Cai Liu --- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff -up a/drivers/input/keyboard/atkbd.c b/drivers/input/keyboard/atkbd.c --- a/drivers/input/keyboard/atkbd.c +++ b/drivers/input/keyboard/atkbd.c @@ -915,10 +915,10 @@ static unsigned int atkbd_hp_forced_rele }; /* - * Samsung NC10,NC20 with Fn+F? key release not working + * Some Samsung laptops with Fn+F? key release not working */ static unsigned int atkbd_samsung_forced_release_keys[] = { - 0x82, 0x83, 0x84, 0x86, 0x88, 0x89, 0xb3, 0xf7, 0xf9, -1U + 0x82, 0x83, 0x84, 0x86, 0x88, 0x89, 0xa0, 0xae, 0xb0, 0xb3, 0xf7, 0xf9, -1U }; /* @@ -1700,6 +1700,114 @@ static const struct dmi_system_id atkbd_ }, .callback = atkbd_setup_forced_release, .driver_data = atkbd_samsung_forced_release_keys, + }, + { + /* Samsung 355V4C */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."), + DMI_MATCH(DMI_PRODUCT_NAME, "355V4C"), + }, + .callback = atkbd_setup_forced_release, + .driver_data = atkbd_samsung_forced_release_keys, + }, + { + /* Samsung 355V4X */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."), + DMI_MATCH(DMI_PRODUCT_NAME, "355V4X"), + }, + .callback = atkbd_setup_forced_release, + .driver_data = atkbd_samsung_forced_release_keys, + }, + { + /* Samsung 355V5C */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."), + DMI_MATCH(DMI_PRODUCT_NAME, "355V5C"), + }, + .callback = atkbd_setup_forced_release, + .driver_data = atkbd_samsung_forced_release_keys, + }, + { + /* Samsung 355V5X */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."), + DMI_MATCH(DMI_PRODUCT_NAME, "355V5X"), + }, + .callback = atkbd_setup_forced_release, + .driver_data = atkbd_samsung_forced_release_keys, + }, + { + /* Samsung 356V4C */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."), + DMI_MATCH(DMI_PRODUCT_NAME, "356V4C"), + }, + .callback = atkbd_setup_forced_release, + .driver_data = atkbd_samsung_forced_release_keys, + }, + { + /* Samsung 356V4X */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."), + DMI_MATCH(DMI_PRODUCT_NAME, "356V4X"), + }, + .callback = atkbd_setup_forced_release, + .driver_data = atkbd_samsung_forced_release_keys, + }, + { + /* Samsung 356V5C */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."), + DMI_MATCH(DMI_PRODUCT_NAME, "356V5C"), + }, + .callback = atkbd_setup_forced_release, + .driver_data = atkbd_samsung_forced_release_keys, + }, + { + /* Samsung 356V5X */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."), + DMI_MATCH(DMI_PRODUCT_NAME, "356V5X"), + }, + .callback = atkbd_setup_forced_release, + .driver_data = atkbd_samsung_forced_release_keys, + }, + { + /* Samsung 3445VC */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."), + DMI_MATCH(DMI_PRODUCT_NAME, "3445VC"), + }, + .callback = atkbd_setup_forced_release, + .driver_data = atkbd_samsung_forced_release_keys, + }, + { + /* Samsung 3445VX */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."), + DMI_MATCH(DMI_PRODUCT_NAME, "3445VX"), + }, + .callback = atkbd_setup_forced_release, + .driver_data = atkbd_samsung_forced_release_keys, + }, + { + /* Samsung 3545VC */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."), + DMI_MATCH(DMI_PRODUCT_NAME, "3545VC"), + }, + .callback = atkbd_setup_forced_release, + .driver_data = atkbd_samsung_forced_release_keys, + }, + { + /* Samsung 3545VX */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."), + DMI_MATCH(DMI_PRODUCT_NAME, "3545VX"), + }, + .callback = atkbd_setup_forced_release, + .driver_data = atkbd_samsung_forced_release_keys, }, { /* Fujitsu Amilo PA 1510 */