From patchwork Wed Nov 8 15:56:46 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Valek - 2N X-Patchwork-Id: 742376 Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net [23.128.96.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 1AF0630654 for ; Wed, 8 Nov 2023 15:57:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=axis.com header.i=@axis.com header.b="BnFJ8Avg" Received: from EUR02-AM0-obe.outbound.protection.outlook.com (mail-am0eur02on2088.outbound.protection.outlook.com [40.107.247.88]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 347E2172E; Wed, 8 Nov 2023 07:57:11 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mBkiSZxpgrlKwvkwmpz9EM5OKLRzA+p2ffAprcrKhaAqhRtpSqEG41RDewQxNB1j+wFlNUNDGrt5fTyVTio7DbV3GdUVdnaD95OVOFu5KVZIU1a8kzFbbi6151gAr0uCviLdUqNT/o3dAVN478L080ExwLgtl3KQGZQDk2v+D3MSrIn/A3cMx0LqRexOHMQQ5+xHb07PUeNvPhUtieMn2mwWjqp9aszEh73bbjtk2kxmVClUWF9VfbzcHTiOx7y1WUBg6nA3gu47DE3PnuOYDrO5evCogPbSoIJWqQiLwiRW07lWX6e/uWypvIVsk6yh5C4cHo6meMT0l2H7PedSpA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=PfeqEQQMUyX063aD7bQtdefaNe3lhR9MsuX+3sapWZc=; b=lAECoFmsylrm6lB7jOT4AU3La3UJaX5hiXH9w7qqo5s3hhsuXzU1WVkc6/6hz7MQ19r4Wd1J2VuBm7+eCGo+Lg3seSGA/3hhAHzW8XwdE30AFWxEe3/Q7QowizaS4o14pObTj9OXuxDc5zqrlYbI6BNk9ry6YkKgU+X9JwphVZMfzX1q6ou6C/fwXf22sXiQ8oewyGLqEeYPmuIYRq9yF8xayB+Q04UVCp36dw6aPNoS+lAnNenNwpjiSgCZj6MQMwxDS0Xvu8Yn463UzdwscuJA8z/fUwrqDbb+6dv4+qBQj9EeT2QbtNhkseRH0HyqUm0oYu6eZGpnhkcnESLTYw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=fail (sender ip is 195.60.68.100) smtp.rcpttodomain=linaro.org smtp.mailfrom=2n.com; dmarc=fail (p=none sp=none pct=100) action=none header.from=axis.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=axis.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=PfeqEQQMUyX063aD7bQtdefaNe3lhR9MsuX+3sapWZc=; b=BnFJ8Avg6m9SvF1pqnyQpcuf9lBF4EIFSkHtRf7AygYwwiTiPi/rLUsXIDDwR8L7WYAN08ssjHEnlOBLYUSGPlL8vyAabUG4v+kZblCUO+OCeD4DAtywtnXsuD4KpLwQWXin8mTczw+BXUokk8uMXmiiuFXflaDurov43S2NYAM= Received: from AS9PR01CA0004.eurprd01.prod.exchangelabs.com (2603:10a6:20b:540::13) by DU0PR02MB9444.eurprd02.prod.outlook.com (2603:10a6:10:41c::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6954.28; Wed, 8 Nov 2023 15:57:08 +0000 Received: from AM2PEPF0001C714.eurprd05.prod.outlook.com (2603:10a6:20b:540:cafe::13) by AS9PR01CA0004.outlook.office365.com (2603:10a6:20b:540::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6977.18 via Frontend Transport; Wed, 8 Nov 2023 15:57:08 +0000 X-MS-Exchange-Authentication-Results: spf=fail (sender IP is 195.60.68.100) smtp.mailfrom=2n.com; dkim=none (message not signed) header.d=none; dmarc=fail action=none header.from=axis.com; Received-SPF: Fail (protection.outlook.com: domain of 2n.com does not designate 195.60.68.100 as permitted sender) receiver=protection.outlook.com; client-ip=195.60.68.100; helo=mail.axis.com; Received: from mail.axis.com (195.60.68.100) by AM2PEPF0001C714.mail.protection.outlook.com (10.167.16.184) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.6977.17 via Frontend Transport; Wed, 8 Nov 2023 15:57:08 +0000 Received: from lap5cg227217h.axis.com (10.0.5.60) by se-mail01w.axis.com (10.20.40.7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Wed, 8 Nov 2023 16:57:06 +0100 From: Jiri Valek - 2N To: , CC: , , , , , Subject: [PATCH v5 2/3] Input: cap11xx - add advanced sensitivity settings Date: Wed, 8 Nov 2023 16:56:46 +0100 Message-ID: <20231108155647.1812835-3-jiriv@axis.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20231108155647.1812835-1-jiriv@axis.com> References: <20231108155647.1812835-1-jiriv@axis.com> Precedence: bulk X-Mailing-List: devicetree@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Originating-IP: [10.0.5.60] X-ClientProxiedBy: se-mail02w.axis.com (10.20.40.8) To se-mail01w.axis.com (10.20.40.7) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM2PEPF0001C714:EE_|DU0PR02MB9444:EE_ X-MS-Office365-Filtering-Correlation-Id: 60e1ff79-49bf-408e-dbda-08dbe0735c85 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: IGfYoVI1hFAJsY6tx5a7sHDhBTK4p6ykuPsUzMHF9mgeYdxOWSLJWqPKq9yAN77y81pRU40wOnhLsf/o3XaIL/BWE+LN80Q5auBEQqymdckEcfh6a4SgX2K5Fc2AO7NNY59cHmbpz+WGcn/CYWvGLkOl8Y/zbNSN4mmVPwXOedtkOaxys7rU5ojd4ujV1/8XIxmDzkzIwdEYWNFFqaS/Xsxoe21kRDB0Qy+ekTfq4FFJI+CMIDGhsZqhAE0VBaM1j5Ie3iEztWVIVfFGOC1WhtordYV0EgzWa+PWkbkLbPzr/k+Mxvoxw85RZvR9h0no3gpAT1RXyQl0mj2Bqss2ZSeLYpdiE+IhGnwTTogtHZqsg6nm0G2c1vyXPGZLx9SXeIdxAv02ZyszawQtJHS6uV/+yPxinozePBjHKKC7Oup4EGUrRKwq2y2R+XOWj7MB8p9sAikDXQQOXexlUor7SkTZJSsBEC2ZVrFc/3bXYMJdBOcOsSQBovQF+hfkJT+SMzbdO6vEP1oHsck9MvegvQo2ll+3OgWUJt94h5ZSDwO4Q/x4SSjbgMRxgIg9e6IGYi2EdJoAkwN50MEwyzAAE++KB3qsJgwcAAAvWCRxNwG2xJv6kjWc6mg7VoEeu9o6j7aUNPyIhKpTk3m1nR55/3l+RgM6QvyRJhjUguy+LcD/7paF61e5rzwSIvMeFHFTkooSZ9rkhvbpNzfNf9Y99tC0T1OVPE8el++o7IbstknlB7iMhLWbNBU/PaUqzGQXuKsfV/2wMLTYTVn0LAB0XA== X-Forefront-Antispam-Report: CIP:195.60.68.100; CTRY:SE; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.axis.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230031)(4636009)(39860400002)(136003)(376002)(396003)(346002)(230922051799003)(451199024)(64100799003)(82310400011)(1800799009)(186009)(40470700004)(46966006)(36840700001)(2906002)(40460700003)(40480700001)(16526019)(426003)(7696005)(336012)(26005)(41300700001)(47076005)(42882007)(2616005)(1076003)(6666004)(36860700001)(81166007)(83170400001)(356005)(36756003)(82740400003)(478600001)(5660300002)(8676002)(8936002)(4326008)(70586007)(83380400001)(70206006)(316002)(54906003)(110136005)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: axis.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Nov 2023 15:57:08.0881 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 60e1ff79-49bf-408e-dbda-08dbe0735c85 X-MS-Exchange-CrossTenant-Id: 78703d3c-b907-432f-b066-88f7af9ca3af X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=78703d3c-b907-432f-b066-88f7af9ca3af; Ip=[195.60.68.100]; Helo=[mail.axis.com] X-MS-Exchange-CrossTenant-AuthSource: AM2PEPF0001C714.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR02MB9444 Add support for advanced sensitivity settings that allows more precise tunig of touch buttons. Input-treshold allows to set the sensitivity for each channel separately. Also add signal guard feature for CAP129x chips. Signed-off-by: Jiri Valek - 2N --- drivers/input/keyboard/cap11xx.c | 242 +++++++++++++++++++++++++------ 1 file changed, 196 insertions(+), 46 deletions(-) diff --git a/drivers/input/keyboard/cap11xx.c b/drivers/input/keyboard/cap11xx.c index 1b4937dce672..4711ea985627 100644 --- a/drivers/input/keyboard/cap11xx.c +++ b/drivers/input/keyboard/cap11xx.c @@ -14,6 +14,7 @@ #include #include #include +#include #define CAP11XX_REG_MAIN_CONTROL 0x00 #define CAP11XX_REG_MAIN_CONTROL_GAIN_SHIFT (6) @@ -24,6 +25,7 @@ #define CAP11XX_REG_NOISE_FLAG_STATUS 0x0a #define CAP11XX_REG_SENOR_DELTA(X) (0x10 + (X)) #define CAP11XX_REG_SENSITIVITY_CONTROL 0x1f +#define CAP11XX_REG_SENSITIVITY_CONTROL_DELTA_SENSE_MASK 0x70 #define CAP11XX_REG_CONFIG 0x20 #define CAP11XX_REG_SENSOR_ENABLE 0x21 #define CAP11XX_REG_SENSOR_CONFIG 0x22 @@ -32,6 +34,7 @@ #define CAP11XX_REG_CALIBRATION 0x26 #define CAP11XX_REG_INT_ENABLE 0x27 #define CAP11XX_REG_REPEAT_RATE 0x28 +#define CAP11XX_REG_SIGNAL_GUARD_ENABLE 0x29 #define CAP11XX_REG_MT_CONFIG 0x2a #define CAP11XX_REG_MT_PATTERN_CONFIG 0x2b #define CAP11XX_REG_MT_PATTERN 0x2d @@ -47,6 +50,8 @@ #define CAP11XX_REG_SENSOR_BASE_CNT(X) (0x50 + (X)) #define CAP11XX_REG_LED_POLARITY 0x73 #define CAP11XX_REG_LED_OUTPUT_CONTROL 0x74 +#define CAP11XX_REG_CALIB_SENSITIVITY_CONFIG 0x80 +#define CAP11XX_REG_CALIB_SENSITIVITY_CONFIG2 0x81 #define CAP11XX_REG_LED_DUTY_CYCLE_1 0x90 #define CAP11XX_REG_LED_DUTY_CYCLE_2 0x91 @@ -78,12 +83,20 @@ struct cap11xx_led { struct cap11xx_priv { struct regmap *regmap; + struct device *dev; struct input_dev *idev; + const struct cap11xx_hw_model *model; + u8 id; struct cap11xx_led *leds; int num_leds; /* config */ + u8 analog_gain; + u8 sensitivity_delta_sense; + u8 signal_guard_inputs_mask; + u32 thresholds[8]; + u32 calib_sensitivities[8]; u32 keycodes[]; }; @@ -181,6 +194,178 @@ static const struct regmap_config cap11xx_regmap_config = { .volatile_reg = cap11xx_volatile_reg, }; +static int +cap11xx_write_calib_sens_config_1(struct cap11xx_priv *priv) +{ + return regmap_write(priv->regmap, + CAP11XX_REG_CALIB_SENSITIVITY_CONFIG, + (priv->calib_sensitivities[3] << 6) | + (priv->calib_sensitivities[2] << 4) | + (priv->calib_sensitivities[1] << 2) | + priv->calib_sensitivities[0]); +} + +static int +cap11xx_write_calib_sens_config_2(struct cap11xx_priv *priv) +{ + return regmap_write(priv->regmap, + CAP11XX_REG_CALIB_SENSITIVITY_CONFIG2, + (priv->calib_sensitivities[7] << 6) | + (priv->calib_sensitivities[6] << 4) | + (priv->calib_sensitivities[5] << 2) | + priv->calib_sensitivities[4]); +} + +static int +cap11xx_init_keys(struct cap11xx_priv *priv) +{ + struct device_node *node = priv->dev->of_node; + struct device *dev = priv->dev; + int i, error; + u32 u32_val; + + if (!node) { + dev_err(dev, "Corresponding DT entry is not available\n"); + return -ENODEV; + } + + if (!of_property_read_u32(node, "microchip,sensor-gain", &u32_val)) { + if (priv->model->no_gain) { + dev_warn(dev, + "This model doesn't support 'sensor-gain'\n"); + } else if (is_power_of_2(u32_val) && u32_val <= 8) { + priv->analog_gain = (u8)ilog2(u32_val); + + error = regmap_update_bits(priv->regmap, + CAP11XX_REG_MAIN_CONTROL, + CAP11XX_REG_MAIN_CONTROL_GAIN_MASK, + priv->analog_gain << CAP11XX_REG_MAIN_CONTROL_GAIN_SHIFT); + if (error) + return error; + } else { + dev_err(dev, "Invalid sensor-gain value %u\n", u32_val); + return -EINVAL; + } + } + + if (of_property_read_bool(node, "microchip,irq-active-high")) { + if (priv->id == CAP1106 || + priv->id == CAP1126 || + priv->id == CAP1188) { + error = regmap_update_bits(priv->regmap, + CAP11XX_REG_CONFIG2, + CAP11XX_REG_CONFIG2_ALT_POL, + 0); + if (error) + return error; + } else { + dev_warn(dev, + "This model doesn't support 'irq-active-high'\n"); + } + } + + if (!of_property_read_u32(node, + "microchip,sensitivity-delta-sense", &u32_val)) { + if (!is_power_of_2(u32_val) || u32_val > 128) { + dev_err(dev, "Invalid sensitivity-delta-sense value %u\n", u32_val); + return -EINVAL; + } + + priv->sensitivity_delta_sense = (u8)ilog2(u32_val); + u32_val = ~(FIELD_PREP(CAP11XX_REG_SENSITIVITY_CONTROL_DELTA_SENSE_MASK, + priv->sensitivity_delta_sense)); + + error = regmap_update_bits(priv->regmap, + CAP11XX_REG_SENSITIVITY_CONTROL, + CAP11XX_REG_SENSITIVITY_CONTROL_DELTA_SENSE_MASK, + u32_val); + if (error) + return error; + } + + if (!of_property_read_u32_array(node, "microchip,input-treshold", + priv->thresholds, priv->model->num_channels)) { + for (i = 0; i < priv->model->num_channels; i++) { + if (priv->thresholds[i] > 127) { + dev_err(dev, "Invalid input-treshold value %u\n", + priv->thresholds[i]); + return -EINVAL; + } + + error = regmap_write(priv->regmap, + CAP11XX_REG_SENSOR_THRESH(i), + priv->thresholds[i]); + if (error) + return error; + } + } + + if (!of_property_read_u32_array(node, "microchip,calib-sensitivity", + priv->calib_sensitivities, priv->model->num_channels)) { + if (priv->id == CAP1293 || priv->id == CAP1298) { + for (i = 0; i < priv->model->num_channels; i++) { + if (!is_power_of_2(priv->calib_sensitivities[i]) || + priv->calib_sensitivities[i] > 4) { + dev_err(dev, "Invalid calib-sensitivity value %u\n", + priv->calib_sensitivities[i]); + return -EINVAL; + } + priv->calib_sensitivities[i] = ilog2(priv->calib_sensitivities[i]); + } + + error = cap11xx_write_calib_sens_config_1(priv); + if (error) + return error; + + if (priv->id == CAP1298) { + error = cap11xx_write_calib_sens_config_2(priv); + if (error) + return error; + } + } else { + dev_warn(dev, + "This model doesn't support 'calib-sensitivity'\n"); + } + } + + for (i = 0; i < priv->model->num_channels; i++) { + if (!of_property_read_u32_index(node, "microchip,signal-guard", + i, &u32_val)) { + if (u32_val > 1) + return -EINVAL; + if (u32_val) + priv->signal_guard_inputs_mask |= 0x01 << i; + } + } + + if (priv->signal_guard_inputs_mask) { + if (priv->id == CAP1293 || priv->id == CAP1298) { + error = regmap_write(priv->regmap, + CAP11XX_REG_SIGNAL_GUARD_ENABLE, + priv->signal_guard_inputs_mask); + if (error) + return error; + } else { + dev_warn(dev, + "This model doesn't support 'signal-guard'\n"); + } + } + + /* Provide some useful defaults */ + for (i = 0; i < priv->model->num_channels; i++) + priv->keycodes[i] = KEY_A + i; + + of_property_read_u32_array(node, "linux,keycodes", + priv->keycodes, priv->model->num_channels); + + /* Disable autorepeat. The Linux input system has its own handling. */ + error = regmap_write(priv->regmap, CAP11XX_REG_REPEAT_RATE, 0); + if (error) + return error; + + return 0; +} + static irqreturn_t cap11xx_thread_func(int irq_num, void *data) { struct cap11xx_priv *priv = data; @@ -332,11 +517,9 @@ static int cap11xx_i2c_probe(struct i2c_client *i2c_client) const struct i2c_device_id *id = i2c_client_get_device_id(i2c_client); struct device *dev = &i2c_client->dev; struct cap11xx_priv *priv; - struct device_node *node; const struct cap11xx_hw_model *cap; - int i, error, irq, gain = 0; + int i, error, irq; unsigned int val, rev; - u32 gain32; if (id->driver_data >= ARRAY_SIZE(cap11xx_devices)) { dev_err(dev, "Invalid device ID %lu\n", id->driver_data); @@ -355,6 +538,8 @@ static int cap11xx_i2c_probe(struct i2c_client *i2c_client) if (!priv) return -ENOMEM; + priv->dev = dev; + priv->regmap = devm_regmap_init_i2c(i2c_client, &cap11xx_regmap_config); if (IS_ERR(priv->regmap)) return PTR_ERR(priv->regmap); @@ -384,50 +569,15 @@ static int cap11xx_i2c_probe(struct i2c_client *i2c_client) return error; dev_info(dev, "CAP11XX detected, model %s, revision 0x%02x\n", - id->name, rev); - node = dev->of_node; - - if (!of_property_read_u32(node, "microchip,sensor-gain", &gain32)) { - if (cap->no_gain) - dev_warn(dev, - "This version doesn't support sensor gain\n"); - else if (is_power_of_2(gain32) && gain32 <= 8) - gain = ilog2(gain32); - else - dev_err(dev, "Invalid sensor-gain value %d\n", gain32); - } + id->name, rev); - if (id->driver_data == CAP1106 || - id->driver_data == CAP1126 || - id->driver_data == CAP1188) { - if (of_property_read_bool(node, "microchip,irq-active-high")) { - error = regmap_update_bits(priv->regmap, - CAP11XX_REG_CONFIG2, - CAP11XX_REG_CONFIG2_ALT_POL, - 0); - if (error) - return error; - } - } + priv->model = cap; + priv->id = id->driver_data; - /* Provide some useful defaults */ - for (i = 0; i < cap->num_channels; i++) - priv->keycodes[i] = KEY_A + i; - - of_property_read_u32_array(node, "linux,keycodes", - priv->keycodes, cap->num_channels); - - if (!cap->no_gain) { - error = regmap_update_bits(priv->regmap, - CAP11XX_REG_MAIN_CONTROL, - CAP11XX_REG_MAIN_CONTROL_GAIN_MASK, - gain << CAP11XX_REG_MAIN_CONTROL_GAIN_SHIFT); - if (error) - return error; - } + dev_info(dev, "CAP11XX device detected, model %s, revision 0x%02x\n", + id->name, rev); - /* Disable autorepeat. The Linux input system has its own handling. */ - error = regmap_write(priv->regmap, CAP11XX_REG_REPEAT_RATE, 0); + error = cap11xx_init_keys(priv); if (error) return error; @@ -439,7 +589,7 @@ static int cap11xx_i2c_probe(struct i2c_client *i2c_client) priv->idev->id.bustype = BUS_I2C; priv->idev->evbit[0] = BIT_MASK(EV_KEY); - if (of_property_read_bool(node, "autorepeat")) + if (of_property_read_bool(dev->of_node, "autorepeat")) __set_bit(EV_REP, priv->idev->evbit); for (i = 0; i < cap->num_channels; i++) @@ -474,7 +624,7 @@ static int cap11xx_i2c_probe(struct i2c_client *i2c_client) if (error) return error; - irq = irq_of_parse_and_map(node, 0); + irq = irq_of_parse_and_map(dev->of_node, 0); if (!irq) { dev_err(dev, "Unable to parse or map IRQ\n"); return -ENXIO; From patchwork Wed Nov 8 15:56:47 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Valek - 2N X-Patchwork-Id: 742377 Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net [23.128.96.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 6B20D3064E for ; Wed, 8 Nov 2023 15:57:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=axis.com header.i=@axis.com header.b="sEVZOFn3" Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on2046.outbound.protection.outlook.com [40.107.20.46]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E08171FE1; Wed, 8 Nov 2023 07:57:10 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kA+c/9332IRcA9pgeJWeWW+P5SJC0TwT5Ek+T79syp6XuPnBRs11lEDkGy8TXda93Ou9Qw0xV7+NjDnO84T+lb1lbrYl0oJSmH+V0lYpbOTtVuOZ626dIiKyFFXpwgx6v+tcJkQigi7q5bKirhQiXXPM5a267ognzS+Cq2z7NuSmMlGr93ybRfpYoaeeVoNJAOqZv7Lap/0oQ2jtLOLHmX05IE+y+amTCYaD3tmh+fuFizLuvCtNqirPuvRaZJqxzPAIzcUNl50qQvBhB4IgXqM/BRBb9TI6fPnqZ8AkZWfhk/sBuVbeJDo9TBFGwx/d3vE2V/2Bbb4MqJYhKurqig== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=g/TXOXVEhWUf4cxEo/jB8TMyttY35vqVR0XLwmU4afE=; b=fRpjCLONCDIYeNHn7nr9qKAtHgKjFUDxY7qthfH8WYYV0W0AT1tV0FEXXALZmFoHKPs0b3ufpd9tZbfzBvsNqF5d43F126ajOJuTCqpjBjx7otoVKgypaTYd4N3QI0pWBs652tM3gLBJLCLvhZQtvrAf7vC3gUKduuIcjy89od3h6LY3y+OcfhtU2zEQ+gxVhPcT/megbZH7WMLlKl6DR5xLd1Fmk4qYsMydmGpFRf/dnrnBMvM7pyE0H3R//Ar8Pksk5z77fLRy80ZBMPf7rID9p3BGbgMJ7yODDNQe5AEwnoCpmuKScfhjIH/RzO5om9WYO6b3xf2eAUyCHPuhWg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=fail (sender ip is 195.60.68.100) smtp.rcpttodomain=linaro.org smtp.mailfrom=2n.com; dmarc=fail (p=none sp=none pct=100) action=none header.from=axis.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=axis.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=g/TXOXVEhWUf4cxEo/jB8TMyttY35vqVR0XLwmU4afE=; b=sEVZOFn3MacTe86bdwRKg1+bJ0YxcatnBB6OBki9xPs+nS+r2JBC6A0MdBJE8c+BnMXy4DtF5O/d8JTBGlrkeyWYW6OzDoBnqJuRe+jyxXPYHRrQGOWcRSahDSzdcXpmNDxEbIR4xJecELAkgGePxCHrkL0UyBDeyztAKKzc7zA= Received: from AS9PR01CA0015.eurprd01.prod.exchangelabs.com (2603:10a6:20b:540::28) by AM7PR02MB5781.eurprd02.prod.outlook.com (2603:10a6:20b:108::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6954.28; Wed, 8 Nov 2023 15:57:08 +0000 Received: from AM2PEPF0001C714.eurprd05.prod.outlook.com (2603:10a6:20b:540:cafe::c2) by AS9PR01CA0015.outlook.office365.com (2603:10a6:20b:540::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6977.18 via Frontend Transport; Wed, 8 Nov 2023 15:57:08 +0000 X-MS-Exchange-Authentication-Results: spf=fail (sender IP is 195.60.68.100) smtp.mailfrom=2n.com; dkim=none (message not signed) header.d=none; dmarc=fail action=none header.from=axis.com; Received-SPF: Fail (protection.outlook.com: domain of 2n.com does not designate 195.60.68.100 as permitted sender) receiver=protection.outlook.com; client-ip=195.60.68.100; helo=mail.axis.com; Received: from mail.axis.com (195.60.68.100) by AM2PEPF0001C714.mail.protection.outlook.com (10.167.16.184) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.6977.17 via Frontend Transport; Wed, 8 Nov 2023 15:57:08 +0000 Received: from lap5cg227217h.axis.com (10.0.5.60) by se-mail01w.axis.com (10.20.40.7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Wed, 8 Nov 2023 16:57:07 +0100 From: Jiri Valek - 2N To: , CC: , , , , , Subject: [PATCH v5 3/3] Input: cap11xx - remove unnecessary IRQ parsing Date: Wed, 8 Nov 2023 16:56:47 +0100 Message-ID: <20231108155647.1812835-4-jiriv@axis.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20231108155647.1812835-1-jiriv@axis.com> References: <20231108155647.1812835-1-jiriv@axis.com> Precedence: bulk X-Mailing-List: devicetree@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Originating-IP: [10.0.5.60] X-ClientProxiedBy: se-mail02w.axis.com (10.20.40.8) To se-mail01w.axis.com (10.20.40.7) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM2PEPF0001C714:EE_|AM7PR02MB5781:EE_ X-MS-Office365-Filtering-Correlation-Id: f96db592-e659-4fa6-c4e2-08dbe0735ccf X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: W1kYN0do9e+I81AxKs5UxQ6t2Q2XlcPCXazSL0ILxJZAOhrwnRLzczzOSuhF9oU4fwvZUIVC4eomX9n+UDq1pN1LbEvKefwvRMb7h/AcHyOZC7mSyOde+ekE6cPj8cZd8DyPuNYQRXojnPta9xCM1lS6qg+K5xwRAm4yl4HJ0BiXiuOv9hkfOCrOgrXYExNPUfRgq8L6qyEZ/BsprMulqqGU6Uqe1naB5zM1KeicK/arrsSI90Yc5yIwpA2euaiX9I7ovqxQBatbcX0fECXlIwGpew4PwvwLH+I/TNdm7brl6Y5eAsU6sKoMXdr794EznWNx+x01RYE3cRSkO7vL96w2k6KpktpgaxyrykleZIP25FAByE2FJ8MGkJLlHY1VNepuNgYsdSL98AbFxVDOBbSzTYEvMGmhW24jAAhktxxEcGFuhvqu4kKoQvWQhGyKJCPz0lpD5Ltok8mVaBnZk5exgHmgx9917cuEO7+2l4Tl1zODOW7hEYlo7KGJm1QrKYIuiYlZQctneH/cmlmxBRiQQt6RJLL+So7YXvZZVrGfs8jcm1Dx6GHbadVUt9GAEYSb1G6z4u6XissBMHUGBOJ4LyoLiUyYZXDVyBv6AwmLc6mfEgHybiYU3kD3DdxMxz02fz1DSrm88HASM1UBc7k9GCWlj0Ib/xE7euRFSFluztq/2w2xyCDF2VGPG7vqu+hbo7Xo1gHoPVpMjHYfCdmx/q3RvJrN8ZxFtxC7qnWMY1rFlQgjf6SsqtrT53P0nIcK4zskzUfa3uPGuonsDw== X-Forefront-Antispam-Report: CIP:195.60.68.100; CTRY:SE; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.axis.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230031)(4636009)(346002)(39850400004)(376002)(136003)(396003)(230922051799003)(1800799009)(186009)(82310400011)(64100799003)(451199024)(46966006)(36840700001)(40470700004)(16526019)(7696005)(6666004)(2616005)(478600001)(82740400003)(83380400001)(426003)(1076003)(70206006)(336012)(26005)(42882007)(54906003)(47076005)(2906002)(110136005)(70586007)(4326008)(41300700001)(316002)(8936002)(8676002)(5660300002)(83170400001)(36756003)(36860700001)(356005)(81166007)(40480700001)(40460700003)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: axis.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Nov 2023 15:57:08.5725 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: f96db592-e659-4fa6-c4e2-08dbe0735ccf X-MS-Exchange-CrossTenant-Id: 78703d3c-b907-432f-b066-88f7af9ca3af X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=78703d3c-b907-432f-b066-88f7af9ca3af; Ip=[195.60.68.100]; Helo=[mail.axis.com] X-MS-Exchange-CrossTenant-AuthSource: AM2PEPF0001C714.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM7PR02MB5781 Separate IRQ parsing is not necessary, I2C core do the job. Signed-off-by: Jiri Valek - 2N --- drivers/input/keyboard/cap11xx.c | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/drivers/input/keyboard/cap11xx.c b/drivers/input/keyboard/cap11xx.c index 4711ea985627..ccca9936ef25 100644 --- a/drivers/input/keyboard/cap11xx.c +++ b/drivers/input/keyboard/cap11xx.c @@ -518,7 +518,7 @@ static int cap11xx_i2c_probe(struct i2c_client *i2c_client) struct device *dev = &i2c_client->dev; struct cap11xx_priv *priv; const struct cap11xx_hw_model *cap; - int i, error, irq; + int i, error; unsigned int val, rev; if (id->driver_data >= ARRAY_SIZE(cap11xx_devices)) { @@ -624,13 +624,7 @@ static int cap11xx_i2c_probe(struct i2c_client *i2c_client) if (error) return error; - irq = irq_of_parse_and_map(dev->of_node, 0); - if (!irq) { - dev_err(dev, "Unable to parse or map IRQ\n"); - return -ENXIO; - } - - error = devm_request_threaded_irq(dev, irq, NULL, cap11xx_thread_func, + error = devm_request_threaded_irq(dev, i2c_client->irq, NULL, cap11xx_thread_func, IRQF_ONESHOT, dev_name(dev), priv); if (error) return error;