From patchwork Mon May 13 07:43:57 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chun-Yi Lee X-Patchwork-Id: 2556771 Return-Path: X-Original-To: patchwork-linux-acpi@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 4321A3FD4E for ; Mon, 13 May 2013 07:47:42 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752133Ab3EMHrI (ORCPT ); Mon, 13 May 2013 03:47:08 -0400 Received: from mail-oa0-f48.google.com ([209.85.219.48]:51564 "EHLO mail-oa0-f48.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754349Ab3EMHrG (ORCPT ); Mon, 13 May 2013 03:47:06 -0400 Received: by mail-oa0-f48.google.com with SMTP id i4so7011469oah.7 for ; Mon, 13 May 2013 00:47:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=x-received:from:to:cc:subject:date:message-id:x-mailer:in-reply-to :references; bh=4pyD9/FmeBw/1pEiMKaDcmAb5znZVaRXk2IEfVFLlyE=; b=I7LgPvbNTEXWiq94BUbH31dyI4yZDkhInzd2MBp0Ovhgs3rjKdquCBQdTOJPO4Vho0 UdK8oNUwo7+Ns08ByEfHFGWJTMdiBif/R+A1AvRJd+ZRaOKvo3ZwdsYTN7aLJs0O8UCI 9X99+3hSYldJNpdR4THowBycXFudFtNX35yLdaqnNC9PBcmfknFBE3/s8BHcXqtRwdEF otbq6hGN9rjXdSJQ+lkc5+96HQI4/TA+mfY1zbMVQAbxQ2SVCtYN0gxmWS5UD0/b9aWZ JFD4TTg9OHKohdpmU8h85on4a2j47vQEJvpqX4Y8HUPbefzZ8kWgCrCYnvo99Bbn9h7N L5TQ== X-Received: by 10.182.33.40 with SMTP id o8mr12196266obi.39.1368431226165; Mon, 13 May 2013 00:47:06 -0700 (PDT) Received: from localhost.localdomain ([130.57.30.250]) by mx.google.com with ESMTPSA id ku7sm15238094obc.6.2013.05.13.00.46.59 for (version=TLSv1 cipher=RC4-SHA bits=128/128); Mon, 13 May 2013 00:47:05 -0700 (PDT) From: "Lee, Chun-Yi" To: mjg@redhat.com, rjw@sisk.pl Cc: platform-driver-x86@vger.kernel.org, linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org, "Lee, Chun-Yi" , Carlos Corbacho , Dmitry Torokhov , Corentin Chary , Aaron Lu , Thomas Renninger Subject: [PATCH 2/2 v2] acer-wmi: add Acer Aspire 5750G to video vendor list but keep acpi video driver Date: Mon, 13 May 2013 15:43:57 +0800 Message-Id: <1368431037-21105-2-git-send-email-jlee@suse.com> X-Mailer: git-send-email 1.6.0.2 In-Reply-To: <1368431037-21105-1-git-send-email-jlee@suse.com> References: <1368431037-21105-1-git-send-email-jlee@suse.com> Sender: linux-acpi-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-acpi@vger.kernel.org After Andrzej's testing, we found the acpi backlight methods broken on Acer Aspire 5750G but the i915 backlight control works when we set to vendor mode. And, we still want to keep the acpi/video driver for transfer acpi event to key event but not unregister whole acpi/video driver. This patch introduced a new capability flag is ACER_CAP_KEEP_VIDEO_KEY, it indicates the machine works fine with acpi/video driver for key event but want to unregister the backlight interface of acpi/video. Reference: bko#35622 https://bugzilla.kernel.org/show_bug.cgi?id=35622 v2: changed the information statement of keeping acpi video driver. Tested-by: Andrzej Krentosz Cc: Carlos Corbacho Cc: Matthew Garrett Cc: Dmitry Torokhov Cc: Corentin Chary Cc: Rafael J. Wysocki Cc: Aaron Lu Cc: Thomas Renninger Signed-off-by: Lee, Chun-Yi --- drivers/platform/x86/acer-wmi.c | 20 ++++++++++++++++++++ 1 files changed, 20 insertions(+), 0 deletions(-) diff --git a/drivers/platform/x86/acer-wmi.c b/drivers/platform/x86/acer-wmi.c index c9076bd..a81c9ed 100644 --- a/drivers/platform/x86/acer-wmi.c +++ b/drivers/platform/x86/acer-wmi.c @@ -207,6 +207,7 @@ struct hotkey_function_type_aa { #define ACER_CAP_BRIGHTNESS (1<<3) #define ACER_CAP_THREEG (1<<4) #define ACER_CAP_ACCEL (1<<5) +#define ACER_CAP_KEEP_VIDEO_KEY (1<<6) #define ACER_CAP_ANY (0xFFFFFFFF) /* @@ -539,6 +540,15 @@ static int video_set_backlight_video_vendor(const struct dmi_system_id *d) return 0; } +static int video_set_backlight_video_vendor_keep_acpi_video( + const struct dmi_system_id *d) +{ + video_set_backlight_video_vendor(d); + interface->capability |= ACER_CAP_KEEP_VIDEO_KEY; + pr_info("Keeping acpi video driver active to emit backlight brightness change key events\n"); + return 0; +} + static const struct dmi_system_id video_vendor_dmi_table[] = { { .callback = video_set_backlight_video_vendor, @@ -572,6 +582,14 @@ static const struct dmi_system_id video_vendor_dmi_table[] = { DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 5750"), }, }, + { + .callback = video_set_backlight_video_vendor_keep_acpi_video, + .ident = "Acer Aspire 5750G", + .matches = { + DMI_MATCH(DMI_BOARD_VENDOR, "Acer"), + DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 5750G"), + }, + }, {} }; @@ -2228,6 +2246,8 @@ static int __init acer_wmi_init(void) if (acpi_video_backlight_support()) { interface->capability &= ~ACER_CAP_BRIGHTNESS; pr_info("Brightness must be controlled by acpi video driver\n"); + } else if (interface->capability & ACER_CAP_KEEP_VIDEO_KEY) { + acpi_video_backlight_unregister(); } else { pr_info("Disabling ACPI video driver\n"); acpi_video_unregister();