From patchwork Mon Jul 24 05:13:39 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Torokhov X-Patchwork-Id: 124608 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9010:0:b0:3e4:2afc:c1 with SMTP id l16csp1580836vqg; Sun, 23 Jul 2023 22:18:56 -0700 (PDT) X-Google-Smtp-Source: APBJJlGIyyyNvMOEsYs0jS/kv6ViTWulr2a60aeIj1i1XflOY5Vs764JY3R+MN0x35tC0l4Xa8+M X-Received: by 2002:a05:6808:292:b0:3a4:24ac:30dd with SMTP id z18-20020a056808029200b003a424ac30ddmr8791718oic.23.1690175936389; Sun, 23 Jul 2023 22:18:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1690175936; cv=none; d=google.com; s=arc-20160816; b=0UAzmGPvQ97gYtGY0DlLYnOlvdnMF7U11oW+EGBCEEVhIU1tS+wbVLpDcY6Q7saf/z BOPfh+ix/KQCv0HErIucGh+YyGlqnE0CBhG7u4BK9mW9WH9kQuawVcUPU299xVnEWOC0 5mSeWXpkU/YMqw4ujKjQ/MC1y0lyhP7mjmmjykJtRU8UxXrmm1U+OxMbhKC9SzaeQym6 k5hwJdH5WB3H84JI1L1Ezs51Sqh3hoL165hQ9JYNJGMoqYp/OrT6Kk+nAOYQNgpWm3rX lcEE9xQ4EC4bQbbYxxRyevhIoau1nJFJnF9U5lspyeA6su8a8XSCg1LA55TR2LUn3mKH RIrg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=caoeUxdk/bY/30hShXkM8xzsEfv9tOC0PQvdZObEqiY=; fh=DmyxT1XhBCB2c1tEAGaI0aB42r3JLlEff0XJ0UBgbjc=; b=ei0kkCYfGvWg5zU9Euu7Jq2LRPg/vKfJATjakqkMZI1ETSEFilKHCvci7xoLpWiOUG G4kQ6Zr1DBHbj22k0MwXwIJz9fccHVQljqc3546Z65337NqIJ3XvH4H8BWnzkzAoDrxa LxU7/1ehBV0pW7jNDvs8qVeqbdzUbEA2N22CwL8QrJuH28GT2ghYZfHGrJJEtVqRdSGc uHmHkP4RenmPV9nULYQ8n4EKyqk5ALw4Y0yjJsSHRD1/El7UVUXOx2aTX91f0Fp0R7My wmB3a9T7jm/jAoUn4C9hB0L5zsPTXq7bvgFLxF3LJqauHz2yyuTMDgCNHPM9t4WRK6i4 lezw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=KYD9a4lj; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id me11-20020a17090b17cb00b00268278c51e3si83777pjb.49.2023.07.23.22.18.41; Sun, 23 Jul 2023 22:18:56 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=KYD9a4lj; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229772AbjGXFN6 (ORCPT + 99 others); Mon, 24 Jul 2023 01:13:58 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58694 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229456AbjGXFN4 (ORCPT ); Mon, 24 Jul 2023 01:13:56 -0400 Received: from mail-oi1-x229.google.com (mail-oi1-x229.google.com [IPv6:2607:f8b0:4864:20::229]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 78D4DE40; Sun, 23 Jul 2023 22:13:50 -0700 (PDT) Received: by mail-oi1-x229.google.com with SMTP id 5614622812f47-3a3373211a1so2373547b6e.0; Sun, 23 Jul 2023 22:13:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1690175629; x=1690780429; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=caoeUxdk/bY/30hShXkM8xzsEfv9tOC0PQvdZObEqiY=; b=KYD9a4ljlBeWIzDK9kSM+wtkeKt3bOrazkF5Xp838g3RE1NG9jTSHD/pFsqgGvB8pH SKWeeBfl2HV2aMTyoGX3ingxOXm0C3fabo5d1/NoM8vpoxGQr/4ZPHz9e/BmSd4mRqPm u2EMUUmFr3TfhsDfhyRQTnJm2V6Lx2LsKP9XaX+yuzg463Im6sZRUnULiXsV7cdG7JYc v9Twr8zm/d9pxtQeIwPnqSO1O1c73aJZCaWwVZmb115l8Wg1lzsWQMkmvOxqnR1IxXw8 HhzI0MYiHSmvisooFrdUvjvs6Md5ffI0KQiupCqjboAphXLLFOP7F8X294iRF0eFLzsr Jt8Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1690175629; x=1690780429; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=caoeUxdk/bY/30hShXkM8xzsEfv9tOC0PQvdZObEqiY=; b=OWcxKub/2T78QX4qcQty/6vxk9yvx38alH7g0uQAIdfITfhUlcdK30sN5Oxwi2Cw+I AAaRj0Hvq9b9dPQso6SP41rkK1yc2G0WjfWV67ahyIsMVNTQ/tpd9gm9yScP9pilU195 kluVqHLgxC98MVKDdj71PozXC807n9kQ7tDscdcORS2P9OpuoPvBFbrVx6w4SBdLX35U 7C6sKeWcrvTh6o7tfxUvrDxSCu7u/YsnyGWH6MoSgvHnbzN38a2TSBTWviALKrRoCk1A SAmoofEPzzpL/36ni3VehooizIqq7liYo6V3Idi8GYoHIxREW7XPPCgq44TaezxRMOc3 3SEQ== X-Gm-Message-State: ABy/qLa8akFiO0BQsXvMpj1EnNKfdxpCpAQOXirVJLK0/i5Hu7slchvQ ABb3p25etODX+vTP6Bk25lltsH/+jow= X-Received: by 2002:a05:6808:a97:b0:3a4:947:c97b with SMTP id q23-20020a0568080a9700b003a40947c97bmr9726446oij.0.1690175629481; Sun, 23 Jul 2023 22:13:49 -0700 (PDT) Received: from dtor-ws.mtv.corp.google.com ([2620:15c:9d:2:b8db:3c3:1ff4:2ae3]) by smtp.gmail.com with ESMTPSA id gv17-20020a17090b11d100b00265dc26d8dfsm7501106pjb.27.2023.07.23.22.13.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 23 Jul 2023 22:13:49 -0700 (PDT) From: Dmitry Torokhov To: linux-input@vger.kernel.org Cc: Yangtao Li , linux-kernel@vger.kernel.org Subject: [PATCH 1/4] Input: qt2160 - tweak check for i2c adapter functionality Date: Sun, 23 Jul 2023 22:13:39 -0700 Message-ID: <20230724051345.335219-1-dmitry.torokhov@gmail.com> X-Mailer: git-send-email 2.41.0.487.g6d72f3e995-goog MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1772277922417561033 X-GMAIL-MSGID: 1772277922417561033 i2c_check_functionality() returns essentially a boolean and not an error code, so treat it as such. Signed-off-by: Dmitry Torokhov --- drivers/input/keyboard/qt2160.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/drivers/input/keyboard/qt2160.c b/drivers/input/keyboard/qt2160.c index 599ea85cfd30..b0b9d7a2691e 100644 --- a/drivers/input/keyboard/qt2160.c +++ b/drivers/input/keyboard/qt2160.c @@ -345,12 +345,9 @@ static int qt2160_probe(struct i2c_client *client) int i; int error; - /* Check functionality */ - error = i2c_check_functionality(client->adapter, - I2C_FUNC_SMBUS_BYTE); - if (!error) { + if (!i2c_check_functionality(client->adapter, I2C_FUNC_SMBUS_BYTE)) { dev_err(&client->dev, "%s adapter not supported\n", - dev_driver_string(&client->adapter->dev)); + dev_driver_string(&client->adapter->dev)); return -ENODEV; } From patchwork Mon Jul 24 05:13:40 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Torokhov X-Patchwork-Id: 124609 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9010:0:b0:3e4:2afc:c1 with SMTP id l16csp1581033vqg; Sun, 23 Jul 2023 22:19:27 -0700 (PDT) X-Google-Smtp-Source: APBJJlGOibijlIOYMREUfHcH5YDnxPx8PVAVGKWSqXgU+l6Hps38GzPgHKPSppCB5YVFumwuks5i X-Received: by 2002:a17:90a:5b01:b0:265:780e:5edc with SMTP id o1-20020a17090a5b0100b00265780e5edcmr13712922pji.10.1690175967396; Sun, 23 Jul 2023 22:19:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1690175967; cv=none; d=google.com; s=arc-20160816; b=opXCC4koy59xFBDdc/RZXzVhsdC72rGyAy1DH8JBsGws9VMJVDUIJASOCsI0zeEZpj +PvMpZNTgSp9pUVuTdfStx7KepvNETYs+IUTiEH3wH5zBc9ssjiB6DuehjaSSp6BV5T9 G16BSo2kdoIWuo3EygoAdsEX4m9xXufyzOAaH4J8noJ/X9LbVQtv/6rKhFtEDxbSRs59 zXTNyeaaWxPxCe7MLIpcrQ6eRglDeMQGNLvXkO7IpkmiyG9ucgdpigp2tC4dB0JPwSED 4QmWOESQxNOuYujdtvJYtiUdIYCdJdfQugAR+Hir2SUE6BeQTZc1SGVn2FZb+4b1JkeZ Wgtg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=T97tcTSFQGPc6gGcVYrEPjC13qxr2ex/c8Suwj0RBNk=; fh=DmyxT1XhBCB2c1tEAGaI0aB42r3JLlEff0XJ0UBgbjc=; b=0PQc8u08mX5Wy7OA0cM5q3k5uOa40npm8U9IxaRUBXe67Lg8RK/6drZvJMNxJD1lmn zXiRkw65GtEl7W80H7tP+ON7UNEu2Mcuq3/oMj252Q33uvx01B/D7kAnqGMl1U7MK+mi LRs/QBeyCHveNNlv8JtDQrVsDGQcivpJGVOozA3QoJnv+EgkR2538fn9ZIjH+ueE5qOY nHrd0RtVeQIxSjF/B6on+86oj2JJzkb80HSbvj0Sv+2T5abV5hlSTePb3W1Udmf6ocll OPRjFP9BUfeCP7t5tIg8vS6XYZM3c7GEDCizw/nJCeQ4TjmZuCR2pm2qvKObOV6si/Oi pIhw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=aUmHYkdf; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id me11-20020a17090b17cb00b00268278c51e3si83777pjb.49.2023.07.23.22.19.14; Sun, 23 Jul 2023 22:19:27 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=aUmHYkdf; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229826AbjGXFOA (ORCPT + 99 others); Mon, 24 Jul 2023 01:14:00 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58704 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229582AbjGXFN5 (ORCPT ); Mon, 24 Jul 2023 01:13:57 -0400 Received: from mail-pg1-x52e.google.com (mail-pg1-x52e.google.com [IPv6:2607:f8b0:4864:20::52e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 16874E4A; Sun, 23 Jul 2023 22:13:51 -0700 (PDT) Received: by mail-pg1-x52e.google.com with SMTP id 41be03b00d2f7-55ba5bb0bf3so2498470a12.1; Sun, 23 Jul 2023 22:13:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1690175630; x=1690780430; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=T97tcTSFQGPc6gGcVYrEPjC13qxr2ex/c8Suwj0RBNk=; b=aUmHYkdfM+iydYeE6Cq29eEtlaaS1Jqy+mInIVnTPDsJt2AGhMsr2uOgoB1totUJkW nb6hL+jZbZh0hkvLKsPX4i4V9UhW7cfLK+nXCbajn9hlpIGOoG6Z4jzi1TB4Hylqvqtb TTRfJDiURxaQVL8wZR6gXkoHZNqY6CvN3f+X/EklP/SO60y1ExP2EJVChdnMw1i/LtJE IZZ7BWt1JvTlUz//D/4PtHCQnU9dxpSGUlVFxv9zRizq2lCVPudhTPl2uYSdVJnzmeXi lpPh9JJxVM71d04+7rgjr0x5CF7SAn2CKdmAzdaZBtmySboL9qJaO7+7vJ4K//avvV+V EuzA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1690175630; x=1690780430; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=T97tcTSFQGPc6gGcVYrEPjC13qxr2ex/c8Suwj0RBNk=; b=X4qwkQJ+ozcsRZkSyrNF3RtBADN21riaUxTsu+p8BflWqN4vk4tOIFlIDrzkpKPT/O hFPfHbEKnVY41gUAhRhTGRiSrzKtNeipeKw8fvknBbook6LfHrwNj8Aj/61EV/MxeKO1 e16DMzEJrLKlPFMfd7bh+Iv/WbxQ5OK2juFSGdas6n/1JGQOF2gk+f5c8au/NoAnZE5b tN7yeaIEi1srmWftPFMzJkSb2YUHu4iBS37mbqnbv1P4Pl8aY7VuTKB20pu0EaGmaziB nTCRNgmOOIP9sBLyZlVsYWGm+2HHCXgLGjKOQGzqm5mn2tF+z8nFz5zHz+mRkI87UIIy 7sSg== X-Gm-Message-State: ABy/qLbvgRHtKhEPiZ6hX0kh9A/rN7moT3eujOCi5DV9QxS8RnTmwIrV YKF/fw0RBUCeZT57ZHDMSswGgmygqYA= X-Received: by 2002:a17:90b:4d83:b0:263:eb0e:5681 with SMTP id oj3-20020a17090b4d8300b00263eb0e5681mr12020167pjb.3.1690175630233; Sun, 23 Jul 2023 22:13:50 -0700 (PDT) Received: from dtor-ws.mtv.corp.google.com ([2620:15c:9d:2:b8db:3c3:1ff4:2ae3]) by smtp.gmail.com with ESMTPSA id gv17-20020a17090b11d100b00265dc26d8dfsm7501106pjb.27.2023.07.23.22.13.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 23 Jul 2023 22:13:49 -0700 (PDT) From: Dmitry Torokhov To: linux-input@vger.kernel.org Cc: Yangtao Li , linux-kernel@vger.kernel.org Subject: [PATCH 2/4] Input: qt2160 - switch to using threaded interrupt handler Date: Sun, 23 Jul 2023 22:13:40 -0700 Message-ID: <20230724051345.335219-2-dmitry.torokhov@gmail.com> X-Mailer: git-send-email 2.41.0.487.g6d72f3e995-goog In-Reply-To: <20230724051345.335219-1-dmitry.torokhov@gmail.com> References: <20230724051345.335219-1-dmitry.torokhov@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1772277955378807138 X-GMAIL-MSGID: 1772277955378807138 Instead of using combination of normal IRQ and work item which required careful handling on device teardown, use standard threaded interrupt that allows communication wityh the chip over slow (I2C) bus directly in the interrupt handler. To support polling mode switch to standard polling support implemented by the input core. Signed-off-by: Dmitry Torokhov --- drivers/input/keyboard/qt2160.c | 53 ++++++++++++--------------------- 1 file changed, 19 insertions(+), 34 deletions(-) diff --git a/drivers/input/keyboard/qt2160.c b/drivers/input/keyboard/qt2160.c index b0b9d7a2691e..b8c0f0ebf604 100644 --- a/drivers/input/keyboard/qt2160.c +++ b/drivers/input/keyboard/qt2160.c @@ -32,7 +32,7 @@ #define QT2160_NUM_LEDS_X 8 -#define QT2160_CYCLE_INTERVAL (2*HZ) +#define QT2160_CYCLE_INTERVAL 2000 /* msec - 2 sec */ static unsigned char qt2160_key2code[] = { KEY_0, KEY_1, KEY_2, KEY_3, @@ -54,7 +54,6 @@ struct qt2160_led { struct qt2160_data { struct i2c_client *client; struct input_dev *input; - struct delayed_work dwork; unsigned short keycodes[ARRAY_SIZE(qt2160_key2code)]; u16 key_matrix; #ifdef CONFIG_LEDS_CLASS @@ -155,10 +154,10 @@ static int qt2160_read_block(struct i2c_client *client, return 0; } -static int qt2160_get_key_matrix(struct qt2160_data *qt2160) +static void qt2160_get_key_matrix(struct input_dev *input) { + struct qt2160_data *qt2160 = input_get_drvdata(input); struct i2c_client *client = qt2160->client; - struct input_dev *input = qt2160->input; u8 regs[6]; u16 old_matrix, new_matrix; int ret, i, mask; @@ -173,7 +172,7 @@ static int qt2160_get_key_matrix(struct qt2160_data *qt2160) if (ret) { dev_err(&client->dev, "could not perform chip read.\n"); - return ret; + return; } old_matrix = qt2160->key_matrix; @@ -191,37 +190,17 @@ static int qt2160_get_key_matrix(struct qt2160_data *qt2160) } input_sync(input); - - return 0; } -static irqreturn_t qt2160_irq(int irq, void *_qt2160) +static irqreturn_t qt2160_irq(int irq, void *data) { - struct qt2160_data *qt2160 = _qt2160; + struct input_dev *input = data; - mod_delayed_work(system_wq, &qt2160->dwork, 0); + qt2160_get_key_matrix(input); return IRQ_HANDLED; } -static void qt2160_schedule_read(struct qt2160_data *qt2160) -{ - schedule_delayed_work(&qt2160->dwork, QT2160_CYCLE_INTERVAL); -} - -static void qt2160_worker(struct work_struct *work) -{ - struct qt2160_data *qt2160 = - container_of(work, struct qt2160_data, dwork.work); - - dev_dbg(&qt2160->client->dev, "worker\n"); - - qt2160_get_key_matrix(qt2160); - - /* Avoid device lock up by checking every so often */ - qt2160_schedule_read(qt2160); -} - static int qt2160_read(struct i2c_client *client, u8 reg) { int ret; @@ -365,7 +344,6 @@ static int qt2160_probe(struct i2c_client *client) qt2160->client = client; qt2160->input = input; - INIT_DELAYED_WORK(&qt2160->dwork, qt2160_worker); input->name = "AT42QT2160 Touch Sense Keyboard"; input->id.bustype = BUS_I2C; @@ -382,6 +360,8 @@ static int qt2160_probe(struct i2c_client *client) } __clear_bit(KEY_RESERVED, input->keybit); + input_set_drvdata(input, qt2160); + /* Calibrate device */ error = qt2160_write(client, QT2160_CMD_CALIBRATE, 1); if (error) { @@ -390,13 +370,21 @@ static int qt2160_probe(struct i2c_client *client) } if (client->irq) { - error = request_irq(client->irq, qt2160_irq, - IRQF_TRIGGER_FALLING, "qt2160", qt2160); + error = request_threaded_irq(client->irq, NULL, qt2160_irq, + IRQF_TRIGGER_LOW | IRQF_ONESHOT, + "qt2160", input); if (error) { dev_err(&client->dev, "failed to allocate irq %d\n", client->irq); goto err_free_mem; } + } else { + error = input_setup_polling(input, qt2160_get_key_matrix); + if (error) { + dev_err(&client->dev, "Failed to setup polling\n"); + goto err_free_mem; + } + input_set_poll_interval(input, QT2160_CYCLE_INTERVAL); } error = qt2160_register_leds(qt2160); @@ -413,7 +401,6 @@ static int qt2160_probe(struct i2c_client *client) } i2c_set_clientdata(client, qt2160); - qt2160_schedule_read(qt2160); return 0; @@ -438,8 +425,6 @@ static void qt2160_remove(struct i2c_client *client) if (client->irq) free_irq(client->irq, qt2160); - cancel_delayed_work_sync(&qt2160->dwork); - input_unregister_device(qt2160->input); kfree(qt2160); } From patchwork Mon Jul 24 05:13:41 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Torokhov X-Patchwork-Id: 124612 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9010:0:b0:3e4:2afc:c1 with SMTP id l16csp1583607vqg; Sun, 23 Jul 2023 22:27:20 -0700 (PDT) X-Google-Smtp-Source: APBJJlHn0GaRwr6K/bzoVDb81Piz8xlyLmtXTeNxv+GTLQVM8pNjw0EJWsbg1K04dbzVTAA13qMN X-Received: by 2002:a05:6402:1514:b0:521:7ab6:b954 with SMTP id f20-20020a056402151400b005217ab6b954mr7581801edw.1.1690176439981; Sun, 23 Jul 2023 22:27:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1690176439; cv=none; d=google.com; s=arc-20160816; b=Q5gUCA1pfziKcjXYuX3khNqM1F3I5Ef1GcCs4MF6jbHYv0cEUbnI5RNVDQKLEtVoUt gNp5+jbZQXEsTBq0MvKLBvKEKvbSYu/J8Gj9O8mq3t1eO79OnoLal29eONUbdD+7wjg5 A5BUni6bOuKC6wozt9ZjSY7RnkfLLeT7SdvRDUKUj8SivBnPkDH166LGBXfmvG+Zkycm lx3bW8T4Hf+m5yvIVHZEpKMJvzICzQtcDg7ymqxmV3P033dx+rW3nOzxjfW6ppBzen1n 8SQOZZg/d8ypjeY4Aoqs64DGDKeSbtEb6uTm5JVv8PY8dCdzZHSZuf9/9SfQDX1w3ssG qxoQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=TqW8DfZ6fP+85CmTsJVzjeFdh5CJjlffb6mkzwyRRAA=; fh=DmyxT1XhBCB2c1tEAGaI0aB42r3JLlEff0XJ0UBgbjc=; b=m0j4G5xAmLNx5yY2k6QG6u+0Vrr290FE4nZpE5VTGHPkgXwxXy/AipJF3O2pBlFZ0Z 683/qiv15fEgDjxeApOVwywFvFzesnscDVOi4GDcMGKb45NL6jUCEITByZ56uUGE/pq2 xOKvQoGjqtjjGtxcYlhubTE2FjJVfk6QowW/WputXVIQDAzuodsnZEFwPVspIOJ/GagQ WuNn/yMuKOjIOwcIH9FAXJshT0NzFyaUH+y6fPal6i49V9FEFnplk/5DsBK5dLRh76VK kCiUVejpk7QthlyZgFP1YVCVE/4NjFtyu4GJ0IMgxmp6OLwmIosNHMWBP1jJQR4aulXI UblQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=Tlc1Mlav; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id c12-20020aa7df0c000000b005222a620750si1349569edy.326.2023.07.23.22.26.54; Sun, 23 Jul 2023 22:27:19 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=Tlc1Mlav; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229877AbjGXFOD (ORCPT + 99 others); Mon, 24 Jul 2023 01:14:03 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58710 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229770AbjGXFN6 (ORCPT ); Mon, 24 Jul 2023 01:13:58 -0400 Received: from mail-pj1-x1033.google.com (mail-pj1-x1033.google.com [IPv6:2607:f8b0:4864:20::1033]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 193BDE54; Sun, 23 Jul 2023 22:13:52 -0700 (PDT) Received: by mail-pj1-x1033.google.com with SMTP id 98e67ed59e1d1-2632336f75fso2496906a91.3; Sun, 23 Jul 2023 22:13:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1690175631; x=1690780431; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=TqW8DfZ6fP+85CmTsJVzjeFdh5CJjlffb6mkzwyRRAA=; b=Tlc1MlavR+Wldxpwq4X5o+8CWM7f7kxeQC4dmahGNQQetc8PON7FoURC6vPsEYZvJB 7+OOHFLM6NASIqpsBr8SBXN/6zacIwRGDzy2k5A4/D6oJYBUPgheH39SaP0fFEeY2xrG gDQWXHzjhlC0pK7dQOUh1ghuZzHL1k5JkBKx9J+5vrRjZNrA9rnIz8qXBazD6NyerZLK UpcK9GXTEqLCXQHQ9SQCUqbNfopRqoKYcuU5lDIOmW/mldOqYuLb4zr7v6wfXO6tJAbC AvAJRdYPPz0ehJFhxnskvKKIdLyAR718xeKz/TSCz78vN67ZFV421Hh/ZjK6as5gXdSc cV5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1690175631; x=1690780431; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=TqW8DfZ6fP+85CmTsJVzjeFdh5CJjlffb6mkzwyRRAA=; b=AGRVCNcW9hNeOVXCqq6PPe2azXZ8BbFxB4d8mwy2u6xseFEnZzK3wbdSCzBtbv4QEA BgX1ObXEC8ie5w4PnRPDEJOtZfk4F1xFf/SV35Lx6bM65ke44FEDmC8rZ8YyvZGaumDj TzxLtsIElJAv1QVnPaUJAndANONvx7L3Asn+hFiEOrq0i37qR4Hw88+VHza/hC89PxBc DlCDt5YXx+yPk/LbxL8eo7WbRB/kBZDLdCZBTs14W9GtXdOl31iW2KNnf2DkGNgwTJw6 GyCfL5fE8ylURIRtfSPu/A+sfqI8SITFCfjkOC1l0kyF3Aex3XtUO8qk2HJt3QZ1gIPk hGaw== X-Gm-Message-State: ABy/qLbGBg4OwUpRL0kTy1oWGYTi98k1HNXeCkiBwKztsDVtIE0+B9Su btceiAZBF+n9sPLxcCDipIFGc7Dw7FA= X-Received: by 2002:a17:90b:3711:b0:268:13c4:b800 with SMTP id mg17-20020a17090b371100b0026813c4b800mr2499791pjb.21.1690175631102; Sun, 23 Jul 2023 22:13:51 -0700 (PDT) Received: from dtor-ws.mtv.corp.google.com ([2620:15c:9d:2:b8db:3c3:1ff4:2ae3]) by smtp.gmail.com with ESMTPSA id gv17-20020a17090b11d100b00265dc26d8dfsm7501106pjb.27.2023.07.23.22.13.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 23 Jul 2023 22:13:50 -0700 (PDT) From: Dmitry Torokhov To: linux-input@vger.kernel.org Cc: Yangtao Li , linux-kernel@vger.kernel.org Subject: [PATCH 3/4] Input: qt2160 - do not hard code interrupt trigger Date: Sun, 23 Jul 2023 22:13:41 -0700 Message-ID: <20230724051345.335219-3-dmitry.torokhov@gmail.com> X-Mailer: git-send-email 2.41.0.487.g6d72f3e995-goog In-Reply-To: <20230724051345.335219-1-dmitry.torokhov@gmail.com> References: <20230724051345.335219-1-dmitry.torokhov@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1772278450784505177 X-GMAIL-MSGID: 1772278450784505177 Rely on the platform and ACPI/DT to set up the interrupt trigger. Signed-off-by: Dmitry Torokhov --- drivers/input/keyboard/qt2160.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/input/keyboard/qt2160.c b/drivers/input/keyboard/qt2160.c index b8c0f0ebf604..6cfaabd10482 100644 --- a/drivers/input/keyboard/qt2160.c +++ b/drivers/input/keyboard/qt2160.c @@ -371,8 +371,7 @@ static int qt2160_probe(struct i2c_client *client) if (client->irq) { error = request_threaded_irq(client->irq, NULL, qt2160_irq, - IRQF_TRIGGER_LOW | IRQF_ONESHOT, - "qt2160", input); + IRQF_ONESHOT, "qt2160", input); if (error) { dev_err(&client->dev, "failed to allocate irq %d\n", client->irq); From patchwork Mon Jul 24 05:13:42 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Torokhov X-Patchwork-Id: 124610 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9010:0:b0:3e4:2afc:c1 with SMTP id l16csp1581259vqg; Sun, 23 Jul 2023 22:20:16 -0700 (PDT) X-Google-Smtp-Source: APBJJlFdQ1qVpg2wXctnSlLY8jmbnfrIyHxqmBgIOJ/eZc7pGqvrrUHh9N5GxqQCFgBV02IsqTML X-Received: by 2002:a17:90a:aa0b:b0:268:15da:44fe with SMTP id k11-20020a17090aaa0b00b0026815da44femr1491229pjq.14.1690176016585; Sun, 23 Jul 2023 22:20:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1690176016; cv=none; d=google.com; s=arc-20160816; b=LrgEeytXEzzACGUwQH4mTJY6qT3z+/i9onUL2PMuuw+kyFKAZUHtfPR0800DGkL0hL uSkg4KnbeLeziAOAKAMNf1411CmwSSYH1ls1XBkp2kmdfSsJ3zp0YabU85Yp/3GdQH/w irC9k7tSPeGp8zKIiqRRTYLavy8EX9pZwJk84Yehyi9FiM9B2cmN5yWFJhUqBpIilq0Y b745CIHCP+gJIHHlIicLJ44DNl2QjHnmAhv02woH1JnCf27zVC4Tr6wuwpk8Wn7k/TBp P9HnB8UQtBQGm0GvzH2DR0PfgsdvdDRALE5qkB0HVtCwzd05goefXxyXsR45mR4W2VvS bDmQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=03EJWrFuVnN7Ttag8T1UjPvKeFWGUuTA0IYhmoMhgg0=; fh=DmyxT1XhBCB2c1tEAGaI0aB42r3JLlEff0XJ0UBgbjc=; b=mm14S66yihTI/2WZw5H0nowkthuVrfiK6D+WTGbB0n4Q6nxsKFOff75TR/VLA6bAAY X7LMko9fSmbXzACEv9zmGXyxPn9X1luj6IxYofqy3GgaZr/O9m1LRq3AMsiQYyAnlg6I 5FQZ4M5jbJk3fGIDC9Pi4zNhU1hrylvFBcHVAX+d0xtnfvFV/bMzxXjqU31Wd88euFjo 4oBIJugEo79lXADRempDuGh+O0+xmQJnWrT7h6yuzGpEtllc5yxE/sCwuhkrY98JFEr2 zgy/TK/qB0hQIJYRaCMJz4p+lm2uPdx1qhHpwks8GZ3rkFM0+WdLBeu73Hzv46Bn0Mun NjCw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b="FiusPs/h"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id me11-20020a17090b17cb00b00268278c51e3si83777pjb.49.2023.07.23.22.20.04; Sun, 23 Jul 2023 22:20:16 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b="FiusPs/h"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229898AbjGXFOJ (ORCPT + 99 others); Mon, 24 Jul 2023 01:14:09 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58720 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229456AbjGXFN7 (ORCPT ); Mon, 24 Jul 2023 01:13:59 -0400 Received: from mail-pg1-x531.google.com (mail-pg1-x531.google.com [IPv6:2607:f8b0:4864:20::531]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DCB13E47; Sun, 23 Jul 2023 22:13:52 -0700 (PDT) Received: by mail-pg1-x531.google.com with SMTP id 41be03b00d2f7-55ae51a45deso1863465a12.3; Sun, 23 Jul 2023 22:13:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1690175632; x=1690780432; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=03EJWrFuVnN7Ttag8T1UjPvKeFWGUuTA0IYhmoMhgg0=; b=FiusPs/hFTgSo1KubGOMb8AhhcHl9uCi6O38VK/7Hy02JOrKsymMaqBf/LtSrmhy79 Sie/LjQYh76DqR5hMBW53/9jh58c1Fts+6s9hgCwJ4O4WoAZTLhhUnCq8lVF4Zl8K9AD BNE8yrHpqhIOzQTUBanNCVTMi7TZ/RIBGxvSitsaQdkkpojKaQJ8ONLfVgJBrYb5juSx sPd0ZfEFG/FqDhA9cTIkoj5+qJTVXelxjhixuDacyuoOSaga+LmIXkfl7IIexfE8I0l9 ZuyGKL9vlH+gFX+7YalSMX4Tas40z9XlnLm/AQ5LxcjebTi3GiishznjFcL2dwJ6wYET XMRQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1690175632; x=1690780432; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=03EJWrFuVnN7Ttag8T1UjPvKeFWGUuTA0IYhmoMhgg0=; b=BjEXachNGXAoskfRP/PMg9XM7T9sAt9kMZuxrTEib3bV91x9uGH16opnXkHb2nyc1l 4iwGGD/A9iwrq4mzgaVc9NSysvdFo9umfT0opQEO3tzbulIjFgJySbsjmOJ+4DNQ2aHi 74eL3MVhc30+fkODbyKEnimLZ4FQKFvwrF+lQKJKTQLlKcxVrDYVjFMCXTIF67JKPdZb 2INBaU/U7+tyPEeT/gocA0Bk9QS6JWh8F0rmfBfrcJcrd4KWDLFYpx3MZ7m00y5YCBKs 6tt22flfwLq1HhjyU+pgH3jN1QvLGPAxgTWLiBF4wjvViK4G6BZm7DoKCTb8VfzmU1zs qP8g== X-Gm-Message-State: ABy/qLY1LlzKYxCzCDnT20JXr2wWmsep9sWkVTwN2McvE0PE8hsYLyuk MmDnUbcDcvaVhZmmDExfBxhcqafDQpg= X-Received: by 2002:a17:90a:66c6:b0:262:ce8f:a3e with SMTP id z6-20020a17090a66c600b00262ce8f0a3emr5539310pjl.42.1690175631957; Sun, 23 Jul 2023 22:13:51 -0700 (PDT) Received: from dtor-ws.mtv.corp.google.com ([2620:15c:9d:2:b8db:3c3:1ff4:2ae3]) by smtp.gmail.com with ESMTPSA id gv17-20020a17090b11d100b00265dc26d8dfsm7501106pjb.27.2023.07.23.22.13.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 23 Jul 2023 22:13:51 -0700 (PDT) From: Dmitry Torokhov To: linux-input@vger.kernel.org Cc: Yangtao Li , linux-kernel@vger.kernel.org Subject: [PATCH 4/4] Input: qt2160 - convert to use devm_* api Date: Sun, 23 Jul 2023 22:13:42 -0700 Message-ID: <20230724051345.335219-4-dmitry.torokhov@gmail.com> X-Mailer: git-send-email 2.41.0.487.g6d72f3e995-goog In-Reply-To: <20230724051345.335219-1-dmitry.torokhov@gmail.com> References: <20230724051345.335219-1-dmitry.torokhov@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1772278006653248940 X-GMAIL-MSGID: 1772278006653248940 From: Yangtao Li Use devm_* api to simplify code, this makes it unnecessary to explicitly release resources. Signed-off-by: Yangtao Li Link: https://lore.kernel.org/r/20230714080611.81302-7-frank.li@vivo.com Signed-off-by: Dmitry Torokhov --- drivers/input/keyboard/qt2160.c | 77 +++++++++------------------------ 1 file changed, 20 insertions(+), 57 deletions(-) diff --git a/drivers/input/keyboard/qt2160.c b/drivers/input/keyboard/qt2160.c index 6cfaabd10482..7e3b09642ab7 100644 --- a/drivers/input/keyboard/qt2160.c +++ b/drivers/input/keyboard/qt2160.c @@ -239,7 +239,7 @@ static int qt2160_write(struct i2c_client *client, u8 reg, u8 data) static int qt2160_register_leds(struct qt2160_data *qt2160) { struct i2c_client *client = qt2160->client; - int ret; + int error; int i; for (i = 0; i < QT2160_NUM_LEDS_X; i++) { @@ -252,9 +252,9 @@ static int qt2160_register_leds(struct qt2160_data *qt2160) led->id = i; led->qt2160 = qt2160; - ret = led_classdev_register(&client->dev, &led->cdev); - if (ret < 0) - return ret; + error = devm_led_classdev_register(&client->dev, &led->cdev); + if (error) + return error; } /* Tur off LEDs */ @@ -265,14 +265,6 @@ static int qt2160_register_leds(struct qt2160_data *qt2160) return 0; } -static void qt2160_unregister_leds(struct qt2160_data *qt2160) -{ - int i; - - for (i = 0; i < QT2160_NUM_LEDS_X; i++) - led_classdev_unregister(&qt2160->leds[i].cdev); -} - #else static inline int qt2160_register_leds(struct qt2160_data *qt2160) @@ -280,10 +272,6 @@ static inline int qt2160_register_leds(struct qt2160_data *qt2160) return 0; } -static inline void qt2160_unregister_leds(struct qt2160_data *qt2160) -{ -} - #endif static bool qt2160_identify(struct i2c_client *client) @@ -334,13 +322,13 @@ static int qt2160_probe(struct i2c_client *client) return -ENODEV; /* Chip is valid and active. Allocate structure */ - qt2160 = kzalloc(sizeof(struct qt2160_data), GFP_KERNEL); - input = input_allocate_device(); - if (!qt2160 || !input) { - dev_err(&client->dev, "insufficient memory\n"); - error = -ENOMEM; - goto err_free_mem; - } + qt2160 = devm_kzalloc(&client->dev, sizeof(*qt2160), GFP_KERNEL); + if (!qt2160) + return -ENOMEM; + + input = devm_input_allocate_device(&client->dev); + if (!input) + return -ENOMEM; qt2160->client = client; qt2160->input = input; @@ -366,22 +354,24 @@ static int qt2160_probe(struct i2c_client *client) error = qt2160_write(client, QT2160_CMD_CALIBRATE, 1); if (error) { dev_err(&client->dev, "failed to calibrate device\n"); - goto err_free_mem; + return error; } if (client->irq) { - error = request_threaded_irq(client->irq, NULL, qt2160_irq, - IRQF_ONESHOT, "qt2160", input); + error = devm_request_threaded_irq(&client->dev, client->irq, + NULL, qt2160_irq, + IRQF_ONESHOT, + "qt2160", input); if (error) { dev_err(&client->dev, "failed to allocate irq %d\n", client->irq); - goto err_free_mem; + return error; } } else { error = input_setup_polling(input, qt2160_get_key_matrix); if (error) { dev_err(&client->dev, "Failed to setup polling\n"); - goto err_free_mem; + return error; } input_set_poll_interval(input, QT2160_CYCLE_INTERVAL); } @@ -389,43 +379,17 @@ static int qt2160_probe(struct i2c_client *client) error = qt2160_register_leds(qt2160); if (error) { dev_err(&client->dev, "Failed to register leds\n"); - goto err_free_irq; + return error; } error = input_register_device(qt2160->input); if (error) { dev_err(&client->dev, "Failed to register input device\n"); - goto err_unregister_leds; + return error; } - i2c_set_clientdata(client, qt2160); - return 0; - -err_unregister_leds: - qt2160_unregister_leds(qt2160); -err_free_irq: - if (client->irq) - free_irq(client->irq, qt2160); -err_free_mem: - input_free_device(input); - kfree(qt2160); - return error; -} - -static void qt2160_remove(struct i2c_client *client) -{ - struct qt2160_data *qt2160 = i2c_get_clientdata(client); - - qt2160_unregister_leds(qt2160); - - /* Release IRQ so no queue will be scheduled */ - if (client->irq) - free_irq(client->irq, qt2160); - - input_unregister_device(qt2160->input); - kfree(qt2160); } static const struct i2c_device_id qt2160_idtable[] = { @@ -442,7 +406,6 @@ static struct i2c_driver qt2160_driver = { .id_table = qt2160_idtable, .probe = qt2160_probe, - .remove = qt2160_remove, }; module_i2c_driver(qt2160_driver);