Received: by 2002:ab2:f03:0:b0:1ef:ffd0:ce49 with SMTP id i3csp61310lqf; Tue, 26 Mar 2024 14:28:23 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCUHz/Tz75mjbX9i1/X0o8fTgixxBLvK3U8D2PDHvSu+sUQLlgah9qXx8wjoBmYeDv/yK028eDdndmFaBkgEL1eHgTNmc9i9nQIf/FB9xQ== X-Google-Smtp-Source: AGHT+IGs66fL5VJsyzUbkJ4O3fS2aH/VJ7ytJBIseCqtPjiCLFWz3+OEH/v+qstiaEtycbMJoT/S X-Received: by 2002:a17:902:c18a:b0:1e0:9122:abc4 with SMTP id d10-20020a170902c18a00b001e09122abc4mr824454pld.21.1711488503152; Tue, 26 Mar 2024 14:28:23 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1711488503; cv=pass; d=google.com; s=arc-20160816; b=eZUHnQ8bF1MFpjHI2hxmQyhoaPruAytv0UuN4JhrO20xq2bKuQpqKyGPU1jcrlJVgC mJmvZG/ROa4UQrZcz0XGXecj+C3honZUcworkj/23Qkuzz1entk3XijbASguLLzj1hlo WCsd10EBqfOzrnm2vcpcpwuz8TQhr+Dhwt/24zuXo2tKIcAXGfmBBO+ErzNED7qDQ+lS RkrAgNm8gxlKovPMVSg2B5ZAKT8s/g1dX09dQn/P9JuoNQGg3aQHYMDPoCchHrDNQNwE Tv4icgKaEZAk309BT+qQ8DcgypP3tsmBIed+UbphJqec9e8FtF9vnO5dW48A9C/z1kre Q/xA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=ui-outboundreport:content-transfer-encoding:in-reply-to:from :content-language:references:cc:to:subject:user-agent:mime-version :list-unsubscribe:list-subscribe:list-id:precedence:date:message-id :dkim-signature; bh=oovH05l1sLDvE4OHaXaGFv4SRMSBo6EJ3rcguRC/AfU=; fh=ZJWMmnvIXG6SQAlfg5+V7+3yGQcm3QoSBsno/q/9bmk=; b=qaxdU4vIr1rioDnKGYe4R8CQAusho2D6WTH9K7shP7xgOqXCJzffgTyfeRfH+fj6fm XCstr+DWwSbkKweG8X4pQ6i2/UbnXxwrLdC7F/vagGYTwEhyFh67TZjVuuNm9qNXl7vO QUX2hnDEIXZvkLrCLlgHwXA39m9hAyrV8AnDf+HyJHl2/k+O6j+FGr6XpUdJ4gQeJVD7 twdpNACkqIsLt2PvUjdmipu6WKHtKdPjznoJj4yiN9pFai9lN5LGLZYXRDAM9iJpcexZ OZ+JqsqMmv0nxc3Rj/JD7tir9WBBRHCWhepsQam1g1/ZB2ibhjaQ9S+vq04QSAAbxRLZ OmxA==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@gmx.de header.s=s31663417 header.b=dZldq+m4; arc=pass (i=1 spf=pass spfdomain=gmx.de dkim=pass dkdomain=gmx.de dmarc=pass fromdomain=gmx.de); spf=pass (google.com: domain of linux-kernel+bounces-119969-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:40f1:3f00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-119969-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=gmx.de Return-Path: Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org. [2604:1380:40f1:3f00::1]) by mx.google.com with ESMTPS id lq8-20020a170903144800b001def230864csi8102764plb.82.2024.03.26.14.28.22 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Mar 2024 14:28:23 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-119969-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:40f1:3f00::1 as permitted sender) client-ip=2604:1380:40f1:3f00::1; Authentication-Results: mx.google.com; dkim=pass header.i=@gmx.de header.s=s31663417 header.b=dZldq+m4; arc=pass (i=1 spf=pass spfdomain=gmx.de dkim=pass dkdomain=gmx.de dmarc=pass fromdomain=gmx.de); spf=pass (google.com: domain of linux-kernel+bounces-119969-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:40f1:3f00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-119969-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=gmx.de Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sy.mirrors.kernel.org (Postfix) with ESMTPS id 90A61B28F49 for ; Tue, 26 Mar 2024 21:01:04 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id C4F0113D894; Tue, 26 Mar 2024 21:00:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b="dZldq+m4" Received: from mout.gmx.net (mout.gmx.net [212.227.15.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 353E712B157; Tue, 26 Mar 2024 21:00:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.15.19 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711486831; cv=none; b=gtgRKVtZv/8qWAXgTtyyot9QQXU5fUEZ9CNuFVa6WocJW7ruz684xCIrEb3T1oFzRWr2dzIPJBJ2q2DVibrgG2FpdznlOh7YYJeQsSyQerSBZNOYrdtcMZQI7qXUkByIpin6lSg7PxnYeUZ0gY1630ciOJo1BjSdOrnxWxpCYeE= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711486831; c=relaxed/simple; bh=TACiQ+xeZGqKNmYVboNXIyaA6O8fjKoa8PCXLZZyb0M=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=bdcRCZilHqRGWWkS2y2r6kAPP3l+q8lp/0dfTFSfKtyMPotCl+UcTVbp4WHUvYT2mH5gSLIAbpf37+NgBWjWvzO1B/XYiRteXQzixV7NtNdi7BTKDFpsoaSxPR0dLYFki6/mnnU4krSF98laBWifsPU93wMnAhS4ntwjd9KinFE= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de; spf=pass smtp.mailfrom=gmx.de; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b=dZldq+m4; arc=none smtp.client-ip=212.227.15.19 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmx.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1711486805; x=1712091605; i=w_armin@gmx.de; bh=oovH05l1sLDvE4OHaXaGFv4SRMSBo6EJ3rcguRC/AfU=; h=X-UI-Sender-Class:Date:Subject:To:Cc:References:From: In-Reply-To; b=dZldq+m4Kq7kIFeVzmxRgb1x7V9xohxFoqOF6mk1C4WZNyzkD8mX37rv1n72uxqx TBJxXj4FvW9Zzk3C/lz60hImRz79OfEY+zK9pKZcaXJNvpmF90+p+DElqErnwmpMy FLqhRFijCDE0g/WrnOCoX6rpMulFQY3fzIeatjLBlZwC7HPxbdmeZuH8/1rI2bkGk Rf77DMPMVaNgzajCNLQ2uXK4liQkT05RCLiJMAaZmjJkIhimEC5DqeZCQUPbOWX7n DlflnNdBIq+WOxvBvtwH4szIjReJmuLCTnpSjY2rIs9AQUz+95qaz9IZxbES30lXU x34/OU96JERsOD7IPg== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from [141.30.226.129] ([141.30.226.129]) by mail.gmx.net (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MowGa-1seSUt15B8-00qVsV; Tue, 26 Mar 2024 22:00:05 +0100 Message-ID: <31bc6c0a-c0e7-4055-82ec-33da51368e0f@gmx.de> Date: Tue, 26 Mar 2024 21:59:58 +0100 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v11] platform/x86: add lenovo wmi camera button driver To: Andy Shevchenko , Ai Chao Cc: hdegoede@redhat.com, ilpo.jarvinen@linux.intel.com, linux-kernel@vger.kernel.org, platform-driver-x86@vger.kernel.org References: <20240322064750.267422-1-aichao@kylinos.cn> Content-Language: en-US From: Armin Wolf In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K1:R2mVWzkgRZQf922lzF28ziewK/4/O88EndJrffowiB7qy1QldDT 2UddGvoOLxIwGd5YhkEwa6Cj73O9iaoV29zZSYwJYYD7V2R45DnXdY9RLg3ankulgJYpeFI oadxp3L5KfzUb95mo2VoMBEQUx1mfwuN4gXb7/Wcvnh+Kqtmk3pRucdQen7o+L4VAAFyMyc h1RTiD7pCrNuNlz4ncZ3g== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:6whmCGcjBL4=;WQUegEFlWSWKLFd1WnF7kbFQd5h k/IQesRrup/X+zbEcmwoZPUNAMpl1EWvCiODx7HXYgE5xfF6/lNWiUbTMkLNkcwIQovCzHHbM p2irvQnpMdDSl0AXntwih23Oic/pzZvjg4ev5Ir/2J4DER/tuRNJnkZ6gs5n/3/H1ZhJaX2XR 7UB1AvWhSbhqncDtBY5tVLT16calfxU32z6jhV62eaMwodLBL5Ytl0UUz3V4XM13oROJznAPe d1s+m9Dj1vtDI+O6pHRF1NazzF9e29Z+t/+ix6fXrG2LkE8h8XUGpdhfrpzRc1SGYrAwwUpAB PnDgwcMp8B+StSZ1siGFclMCqNljCpbfQCvyOPiiZrWatukkjgJuNymJs/Lzx+FX8fKloeVaX Rs6PlAddgcq2m2b6AoLy1g+TAQ/YSH6O30b0wVG+GWGICKdQPr0kW/ly0KimOl/p9LMnJAEjA BLPc8VDTckR7noF+SNj/L++Kfn9cIWo7rpkF8ZWPE/0UYQb5jRS0xGQeDIM3P0SBLVpbm/rVz OYKbNsy+E7ZiX604uIfSsscZ/vibD8QM57wKg/oJTbYUyLMHtCleVtBtOmsd2WaBZqF+Dr1ym fzGHoHapqWtRX02F/POcQCpBO/MqJTgQ581ZDOeps2b9/cRT7zu25Od7UM1gfqC5OtKjvP9C/ iHeVGJCeENEfPLGNIA1EaNIpYTWwiIdr3Zx3ZpVFmxTDJM0ZUuzTNrnjtqjxg6Caeeiy8z900 Af4GK2YAzQtkPCIsO0Ta6ONm+K82CspNckbrhM8mm0x8uW7J4WhxyGJMNcdtBM+GHARbsictj ZEJlH/a/UOR471or5JPq2CWVlr8BIBR/6S6jwAxyI0np4= Am 25.03.24 um 17:29 schrieb Andy Shevchenko: > On Fri, Mar 22, 2024 at 02:47:50PM +0800, Ai Chao wrote: >> Add lenovo generic wmi driver to support camera button. > WMI > >> The Camera button is a GPIO device. This driver receives ACPI notifyi >> when the camera button is switched on/off. This driver is used in >> Lenovo A70, it is a Computer integrated machine. >> +config LENOVO_WMI_CAMERA >> + tristate "Lenovo WMI Camera Button driver" >> + depends on ACPI_WMI >> + depends on INPUT > No COMPILE_TEST? > >> + help >> + This driver provides support for Lenovo camera button. The Camera >> + button is a GPIO device. This driver receives ACPI notify when the >> + camera button is switched on/off. >> + >> + To compile this driver as a module, choose M here: the module >> + will be called lenovo-wmi-camera. > ... > >> +#include >> +#include >> +#include >> +#include >> +#include > + types.h > >> +#include > ... > >> +struct lenovo_wmi_priv { >> + struct input_dev *idev; >> + struct mutex notify_lock; /* lenovo wmi camera button notify lock */ > WMI > >> +}; > ... > >> + /* obj->buffer.pointer[0] is camera mode: >> + * 0 camera close >> + * 1 camera open >> + */ > /* > * The correct multi-line comment style > * is depicted here. > */ > > ... > >> + keycode = (camera_mode == SW_CAMERA_ON ? >> + KEY_CAMERA_ACCESS_ENABLE : KEY_CAMERA_ACCESS_DISABLE); > Useless parentheses. > > ... > >> + ret = input_register_device(priv->idev); >> + if (ret) >> + return ret; >> + mutex_init(&priv->notify_lock); > Your mutex should be initialized before use. Have you tested that? Hi, i suggested that the mutex be initialized after calling input_register_device(). The reason for this is that the mutex is only used inside the WMI notify callback, and the WMI driver core will only call it after probe() has returned. So imho it should be safe. Thanks, Armin Wolf > > ... > >> +static struct wmi_driver lenovo_wmi_driver = { >> + .driver = { >> + .name = "lenovo-wmi-camera", >> + .probe_type = PROBE_PREFER_ASYNCHRONOUS, >> + }, >> + .id_table = lenovo_wmi_id_table, >> + .no_singleton = true, >> + .probe = lenovo_wmi_probe, >> + .notify = lenovo_wmi_notify, >> + .remove = lenovo_wmi_remove, >> +}; >> + > Unneeded blank line. > >> +module_wmi_driver(lenovo_wmi_driver); > ... > >> +MODULE_DEVICE_TABLE(wmi, lenovo_wmi_id_table); > Please, move it closer to the respective table. >