From patchwork Tue Jan 12 14:03:00 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?b?TWljaGHFgiBLxJlwaWXFhA==?= X-Patchwork-Id: 8017571 Return-Path: X-Original-To: patchwork-platform-driver-x86@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 370E0BEEE5 for ; Tue, 12 Jan 2016 14:04:09 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 1EA25203B4 for ; Tue, 12 Jan 2016 14:04:05 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id A4607203E6 for ; Tue, 12 Jan 2016 14:04:00 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S965471AbcALODn (ORCPT ); Tue, 12 Jan 2016 09:03:43 -0500 Received: from mail-lf0-f65.google.com ([209.85.215.65]:34072 "EHLO mail-lf0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S965483AbcALODh (ORCPT ); Tue, 12 Jan 2016 09:03:37 -0500 Received: by mail-lf0-f65.google.com with SMTP id n70so21069309lfn.1 for ; Tue, 12 Jan 2016 06:03:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kempniu.pl; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-type:content-transfer-encoding; bh=FzPZMnccELinMs7xmyazP6LKdJ7b9GF6oAg+6c3MXIA=; b=RgxRnWsj1eLjH6PVrvHqIZZla10ag6HwwS0CMaK5IeZWgkUjLjsxztVomaricSvdqQ Kce+pe5zfhNnV2w129JOQYXjdOgJVWWViEq6qAnJMfKFDmC/F+kBcH/+4yHacOE13V4l yvDRoZHhj5aZOcVQsbP2cJ79YR/k7D5aEhG8U= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-type:content-transfer-encoding; bh=FzPZMnccELinMs7xmyazP6LKdJ7b9GF6oAg+6c3MXIA=; b=Y7Q4c8gAG4mG2LqeOTfR+BBoEqDWmETtcIBC9oCw0O8VMhVlGq2grw/N58RYfktQmy FrWXmjTslQD7BaWbT7ZQ4Kha1Sjb++jvIo9afPqRQWfxfMScQu26EkTDygEhIYdqLEnQ AAkMDlRYwLDsykRYUqG+BsSSv9aWUpVQJz+c+03O5KC4pWUtgOFnsqyUgtel9Cn7tBke qecsoNDlMjPwlEoarg918+WKOGq5/TBL9EgRZ/GzkW6JIUtPMNOhJofBWuvxochlCpzB P5F34hsm7sAUj/PSnwGFfUN0McxU56qz3Sb2V9E5MHycvbUjuXzXbAuWue8yOXk/r8Da zV/w== X-Gm-Message-State: ALoCoQmr5+kSXtpXhoZH3olem6J1yabWBlRE3mQOe/lsHOBJKQMKMvQf/DUIbMfobsFpfzZXkPuC9Y20Rs/9glLq6aFdEjUYWQ== X-Received: by 10.25.143.3 with SMTP id r3mr4061565lfd.59.1452607415670; Tue, 12 Jan 2016 06:03:35 -0800 (PST) Received: from eudyptula.hq.kempniu.pl. (eudyptula.hq.kempniu.pl. [2001:6a0:200:83b0::fd5a]) by smtp.googlemail.com with ESMTPSA id wu10sm21513794lbb.44.2016.01.12.06.03.34 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 12 Jan 2016 06:03:34 -0800 (PST) From: =?UTF-8?q?Micha=C5=82=20K=C4=99pie=C5=84?= To: Darren Hart , Matthew Garrett , =?UTF-8?q?Pali=20Roh=C3=A1r?= , Richard Purdie , Jacek Anaszewski Cc: Alex Hung , platform-driver-x86@vger.kernel.org, linux-leds@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 14/14] dell-led: use dell_smbios_send_request() for SMBIOS requests Date: Tue, 12 Jan 2016 15:03:00 +0100 Message-Id: <1452607380-20861-15-git-send-email-kernel@kempniu.pl> X-Mailer: git-send-email 1.7.10.4 In-Reply-To: <1452607380-20861-1-git-send-email-kernel@kempniu.pl> References: <1452607380-20861-1-git-send-email-kernel@kempniu.pl> MIME-Version: 1.0 Sender: platform-driver-x86-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: platform-driver-x86@vger.kernel.org X-Spam-Status: No, score=-6.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI,RP_MATCHES_RCVD,T_DKIM_INVALID,UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Instead of performing SMBIOS calls using the WMI wrapper, dell-led can take advantage of dell_smbios_send_request() for performing the SMI calls required to change the state of the microphone LED. Signed-off-by: Micha? K?pie? --- drivers/leds/dell-led.c | 64 ++++------------------------------------------- 1 file changed, 5 insertions(+), 59 deletions(-) diff --git a/drivers/leds/dell-led.c b/drivers/leds/dell-led.c index bfa7511..a9c04bf 100644 --- a/drivers/leds/dell-led.c +++ b/drivers/leds/dell-led.c @@ -43,64 +43,12 @@ MODULE_ALIAS("wmi:" DELL_LED_BIOS_GUID); #define CMD_LED_OFF 17 #define CMD_LED_BLINK 18 -struct app_wmi_args { - u16 class; - u16 selector; - u32 arg1; - u32 arg2; - u32 arg3; - u32 arg4; - u32 res1; - u32 res2; - u32 res3; - u32 res4; - char dummy[92]; -}; - #define GLOBAL_MIC_MUTE_ENABLE 0x364 #define GLOBAL_MIC_MUTE_DISABLE 0x365 -static int dell_wmi_perform_query(struct app_wmi_args *args) -{ - struct app_wmi_args *bios_return; - union acpi_object *obj; - struct acpi_buffer input; - struct acpi_buffer output = { ACPI_ALLOCATE_BUFFER, NULL }; - acpi_status status; - u32 rc = -EINVAL; - - input.length = 128; - input.pointer = args; - - status = wmi_evaluate_method(DELL_APP_GUID, 0, 1, &input, &output); - if (!ACPI_SUCCESS(status)) - goto err_out0; - - obj = output.pointer; - if (!obj) - goto err_out0; - - if (obj->type != ACPI_TYPE_BUFFER) - goto err_out1; - - bios_return = (struct app_wmi_args *)obj->buffer.pointer; - rc = bios_return->res1; - if (rc) - goto err_out1; - - memcpy(args, bios_return, sizeof(struct app_wmi_args)); - rc = 0; - - err_out1: - kfree(obj); - err_out0: - return rc; -} - static int dell_micmute_led_set(int state) { struct calling_interface_token *token; - struct app_wmi_args args; if (!wmi_has_guid(DELL_APP_GUID)) return -ENODEV; @@ -115,13 +63,11 @@ static int dell_micmute_led_set(int state) if (!token) return -ENODEV; - memset(&args, 0, sizeof(struct app_wmi_args)); - - args.class = 1; - args.arg1 = token->location; - args.arg2 = token->value; - - dell_wmi_perform_query(&args); + dell_smbios_get_buffer(); + dell_smbios_buffer->input[0] = token->location; + dell_smbios_buffer->input[1] = token->value; + dell_smbios_send_request(1, 0); + dell_smbios_release_buffer(); return state; }