From patchwork Sat Feb 8 21:13:19 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Aren X-Patchwork-Id: 13966525 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 2B901C02198 for ; Sat, 8 Feb 2025 21:20:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From: Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=5yaZnhLbJDYzxUuUS1CTmE6SRmYxieOewJarS/4KATs=; b=Quo4Y3Ilo61koUvYRxrKUXSGE6 x00D3vnHyzCXHZOn3C+WK1MURdB3TQPXiy5qeomqs28trus54wfjQedt7F2VeCZ8cptVYLY2sH+kQ conEr0io0rXZXJXEaJYFNN7GoI7cS5kTGnEcK35tQifO74Tw0Bffss4VWwWmwHjKIrWcVyYpAl56A 637bPb5C+APvbbbvREhgTyca986K43maqbpqszbsvstrr/R1LlgQPQnSffeOPHZyktIucvDE+UyD6 Cl1CifHBB9SQC0ojRldddWqRTQCJ0PLtWkfum5zAJyqtVbqqxMWimla0amKPstjRskbNgyjKVmKOt BNCnErQw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tgsFo-0000000DZ1X-3cRH; Sat, 08 Feb 2025 21:20:44 +0000 Received: from a.peacevolution.org ([206.189.193.133]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tgsBo-0000000DYU8-0MJJ for linux-arm-kernel@lists.infradead.org; Sat, 08 Feb 2025 21:16:38 +0000 Received: from authenticated-user (PRIMARY_HOSTNAME [PUBLIC_IP]) by a.peacevolution.org (Postfix) with ESMTPA id 7843541B55; Sat, 8 Feb 2025 21:16:32 +0000 (UTC) From: Aren Moynihan To: Jonathan Cameron , Lars-Peter Clausen , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Chen-Yu Tsai , Jernej Skrabec , Samuel Holland Cc: Aren Moynihan , Kaustabh Chakraborty , =?utf-8?b?QmFybmFiw6FzIEN6?= =?utf-8?b?w6ltw6Fu?= , Julien Stephan , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, Ondrej Jirman , Dragan Simic , phone-devel@vger.kernel.org, Krzysztof Kozlowski Subject: [PATCH v5 1/8] dt-bindings: iio: light: stk33xx: add vdd and leda regulators Date: Sat, 8 Feb 2025 16:13:19 -0500 Message-ID: <20250208211325.992280-3-aren@peacevolution.org> In-Reply-To: <20250208211325.992280-2-aren@peacevolution.org> References: <20250208211325.992280-2-aren@peacevolution.org> MIME-Version: 1.0 Authentication-Results: auth=pass smtp.auth=aren@peacevolution.org smtp.mailfrom=aren@peacevolution.org X-Spamd-Bar: ++++++ DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=peacevolution.org; s=dkim; t=1739049393; h=from:subject:date:message-id:to:cc:mime-version:content-transfer-encoding:in-reply-to:references; bh=5yaZnhLbJDYzxUuUS1CTmE6SRmYxieOewJarS/4KATs=; b=dm6Vvw24T+EkZZZWOvulzhEhaUCWTi/vG6PFpZtwIaR1X4siFgN8khNXjmV8mZWhekoRPS hCcH+G1iWplrqCbloeF69NmZP+j1E3djNOrUkLuUoukTamlWGh3mqYgoy9D65xgQ+1fCVq R4pZ9ZRmXfKNxANvP7qtAqgLPdI8wIE= X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250208_131636_192735_1E626E48 X-CRM114-Status: UNSURE ( 7.28 ) X-CRM114-Notice: Please train this message. X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org stk3310 and stk3311 are typically connected to power supplies for the chip (vdd) and the infrared LED (leda). Add properties so we can power these up / down appropriately. Signed-off-by: Aren Moynihan Reviewed-by: Krzysztof Kozlowski --- Notes: Changes in v2: - add leda-supply - add supplies to examples Documentation/devicetree/bindings/iio/light/stk33xx.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Documentation/devicetree/bindings/iio/light/stk33xx.yaml b/Documentation/devicetree/bindings/iio/light/stk33xx.yaml index e4341fdced98c..96ee8ec16463d 100644 --- a/Documentation/devicetree/bindings/iio/light/stk33xx.yaml +++ b/Documentation/devicetree/bindings/iio/light/stk33xx.yaml @@ -34,6 +34,8 @@ properties: interrupts: maxItems: 1 + vdd-supply: true + leda-supply: true proximity-near-level: true required: @@ -57,6 +59,8 @@ examples: proximity-near-level = <25>; interrupt-parent = <&gpio1>; interrupts = <5 IRQ_TYPE_LEVEL_LOW>; + vdd-supply = <&vdd_regulator>; + leda-supply = <&led_regulator>; }; }; ... From patchwork Sat Feb 8 21:13:20 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Aren X-Patchwork-Id: 13966526 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id ACE47C02198 for ; Sat, 8 Feb 2025 21:22:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From: Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=LK3jemsDqV0sI5vp6vEaRz8iaDF3x6LJJQtbIKnsO3Q=; b=H28LThqmsiEuO3xVkl0lIohcr5 wHrOGEeaahJfnmw0tHLSXzxqAl1RHlP/sPANFVWcUSV2QsQ2lZpOl4QLpcX94ONNs7mP0WS/L+JCw 6vkJ0648i2Exxncg3hHnP+uuoLQoPoUQtz1RKeASNDJMPXJkpEaGXeW2KaPGsvA0hoHSg15Ay0Qff SIcH1coIS2aCErWbxJ6lBQimxFfOS1815se8qlCa4qGlntMWtKqocQygOoYT9La1qApSWC4OfvCWW Fx9Xtomp1niOhTR6VeQOtRzhbjFgV+J5C5BH+ufpfCpLykNhET6hKMb9Ol/MRVjoWskWSbyyR3fFH 2zxqSDyQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tgsHB-0000000DZ9q-2Drd; Sat, 08 Feb 2025 21:22:09 +0000 Received: from a.peacevolution.org ([206.189.193.133]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tgsBo-0000000DYUb-3D9p for linux-arm-kernel@lists.infradead.org; Sat, 08 Feb 2025 21:16:39 +0000 Received: from authenticated-user (PRIMARY_HOSTNAME [PUBLIC_IP]) by a.peacevolution.org (Postfix) with ESMTPA id C55B741B58; Sat, 8 Feb 2025 21:16:34 +0000 (UTC) From: Aren Moynihan To: Jonathan Cameron , Lars-Peter Clausen , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Chen-Yu Tsai , Jernej Skrabec , Samuel Holland Cc: Aren Moynihan , Kaustabh Chakraborty , =?utf-8?b?QmFybmFiw6FzIEN6?= =?utf-8?b?w6ltw6Fu?= , Julien Stephan , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, Ondrej Jirman , Dragan Simic , phone-devel@vger.kernel.org Subject: [PATCH v5 2/8] iio: light: stk3310: handle all remove logic with devm callbacks Date: Sat, 8 Feb 2025 16:13:20 -0500 Message-ID: <20250208211325.992280-4-aren@peacevolution.org> In-Reply-To: <20250208211325.992280-2-aren@peacevolution.org> References: <20250208211325.992280-2-aren@peacevolution.org> MIME-Version: 1.0 Authentication-Results: auth=pass smtp.auth=aren@peacevolution.org smtp.mailfrom=aren@peacevolution.org X-Spamd-Bar: +++++ DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=peacevolution.org; s=dkim; t=1739049396; h=from:subject:date:message-id:to:cc:mime-version:content-transfer-encoding:in-reply-to:references; bh=LK3jemsDqV0sI5vp6vEaRz8iaDF3x6LJJQtbIKnsO3Q=; b=SxsuCYALuYawrH+McBMsT9cPn+MWX7JE7zYcQN7LbqqBevblVT10OP4u1jBlCGiNMaU54X MccDuTCMTMEnQsPfrOJ0jRblxrOE3L7HO0M3ZPAgrj7iV4zxJkigHUilMLW/MvnbwKYG/I hFrsW+IpFGNR6FKBkNOTK/3lyNJBG1g= X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250208_131638_230535_DA26AD6F X-CRM114-Status: GOOD ( 12.43 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Using devm callbacks helps to make the ordering of probe / remove operations easier to reason about and removes some duplicate code between the probe error path and driver remove. Signed-off-by: Aren Moynihan --- Notes: Changes in v4: - also replace mutex_init with devm_mutex_init Added in v3 drivers/iio/light/stk3310.c | 40 +++++++++++++++++++++---------------- 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/drivers/iio/light/stk3310.c b/drivers/iio/light/stk3310.c index b81cc44db43c3..73ea36fa3acec 100644 --- a/drivers/iio/light/stk3310.c +++ b/drivers/iio/light/stk3310.c @@ -481,6 +481,17 @@ static int stk3310_set_state(struct stk3310_data *data, u8 state) return ret; } +static void stk3310_set_state_disable(void *private) +{ + int ret; + struct stk3310_data *data = private; + struct device *dev = &data->client->dev; + + ret = stk3310_set_state(data, STK3310_STATE_STANDBY); + if (ret) + dev_err(dev, "failed to set state to standby: %d\n", ret); +} + static int stk3310_init(struct iio_dev *indio_dev) { int ret; @@ -488,6 +499,7 @@ static int stk3310_init(struct iio_dev *indio_dev) u8 state; struct stk3310_data *data = iio_priv(indio_dev); struct i2c_client *client = data->client; + struct device *dev = &client->dev; ret = regmap_read(data->regmap, STK3310_REG_ID, &chipid); if (ret < 0) @@ -504,6 +516,10 @@ static int stk3310_init(struct iio_dev *indio_dev) return ret; } + ret = devm_add_action_or_reset(dev, stk3310_set_state_disable, data); + if (ret) + return dev_err_probe(dev, ret, "failed to register cleanup function\n"); + /* Enable PS interrupts */ ret = regmap_field_write(data->reg_int_ps, STK3310_PSINT_EN); if (ret < 0) @@ -607,6 +623,7 @@ static int stk3310_probe(struct i2c_client *client) int ret; struct iio_dev *indio_dev; struct stk3310_data *data; + struct device *dev = &client->dev; indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*data)); if (!indio_dev) { @@ -621,7 +638,9 @@ static int stk3310_probe(struct i2c_client *client) device_property_read_u32(&client->dev, "proximity-near-level", &data->ps_near_level); - mutex_init(&data->lock); + ret = devm_mutex_init(dev, &data->lock); + if (ret) + return ret; ret = stk3310_regmap_init(data); if (ret < 0) @@ -647,29 +666,17 @@ static int stk3310_probe(struct i2c_client *client) if (ret < 0) { dev_err(&client->dev, "request irq %d failed\n", client->irq); - goto err_standby; + return ret; } } - ret = iio_device_register(indio_dev); + ret = devm_iio_device_register(dev, indio_dev); if (ret < 0) { dev_err(&client->dev, "device_register failed\n"); - goto err_standby; + return ret; } return 0; - -err_standby: - stk3310_set_state(data, STK3310_STATE_STANDBY); - return ret; -} - -static void stk3310_remove(struct i2c_client *client) -{ - struct iio_dev *indio_dev = i2c_get_clientdata(client); - - iio_device_unregister(indio_dev); - stk3310_set_state(iio_priv(indio_dev), STK3310_STATE_STANDBY); } static int stk3310_suspend(struct device *dev) @@ -733,7 +740,6 @@ static struct i2c_driver stk3310_driver = { .acpi_match_table = stk3310_acpi_id, }, .probe = stk3310_probe, - .remove = stk3310_remove, .id_table = stk3310_i2c_id, }; From patchwork Sat Feb 8 21:13:21 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Aren X-Patchwork-Id: 13966527 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 2C3C3C02198 for ; Sat, 8 Feb 2025 21:23:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From: Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=ntyJSBJfrG72XmoeXkVO4Qlom9oNlP0IrTSTWLoR4vU=; b=BFJb0I2dj8e3ekbkHAoT5n3y+2 L46t4RYLhPq6A41xYMnuTiytc5+IUViLhNSOrxJmNGC6teqaoG/JBwdL5cqd5KQPTgdA2eWARLMwo 7t+xcliCbeWGAc3w/rHaF1CSoPwHMh5BCQym3UpTqmsWdl2cqDNqZh+eLhvUVB/WniccLswN/yA0u pdMElXUHnsAGx121OnEJof5KskWHcDQjxeVX412YFFJsRsr+Vm1HCCthuTR1UqITqwCooqPp94J4S UEjocsx3cFhfd+yJvBPS/HnZ24sK4ds35R+0+H7VK10lky6ibjJ8i+QG0Iw9wHj7TA4Z1SXMNE8d0 vUEROkhg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tgsIY-0000000DZGk-0eQB; Sat, 08 Feb 2025 21:23:34 +0000 Received: from a.peacevolution.org ([206.189.193.133]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tgsBq-0000000DYUw-3CU1 for linux-arm-kernel@lists.infradead.org; Sat, 08 Feb 2025 21:16:40 +0000 Received: from authenticated-user (PRIMARY_HOSTNAME [PUBLIC_IP]) by a.peacevolution.org (Postfix) with ESMTPA id DB3AB41B5C; Sat, 8 Feb 2025 21:16:36 +0000 (UTC) From: Aren Moynihan To: Jonathan Cameron , Lars-Peter Clausen , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Chen-Yu Tsai , Jernej Skrabec , Samuel Holland Cc: Aren Moynihan , Kaustabh Chakraborty , =?utf-8?b?QmFybmFiw6FzIEN6?= =?utf-8?b?w6ltw6Fu?= , Julien Stephan , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, Ondrej Jirman , Dragan Simic , phone-devel@vger.kernel.org Subject: [PATCH v5 3/8] iio: light: stk3310: implement vdd and leda supplies Date: Sat, 8 Feb 2025 16:13:21 -0500 Message-ID: <20250208211325.992280-5-aren@peacevolution.org> In-Reply-To: <20250208211325.992280-2-aren@peacevolution.org> References: <20250208211325.992280-2-aren@peacevolution.org> MIME-Version: 1.0 Authentication-Results: auth=pass smtp.auth=aren@peacevolution.org smtp.mailfrom=aren@peacevolution.org X-Spamd-Bar: ++++++ DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=peacevolution.org; s=dkim; t=1739049398; h=from:subject:date:message-id:to:cc:mime-version:content-transfer-encoding:in-reply-to:references; bh=ntyJSBJfrG72XmoeXkVO4Qlom9oNlP0IrTSTWLoR4vU=; b=I3LnkCzfPUy+GdccLFWWcf0WyW5X015DA1Kz9Du2vHznVZxboQC1SM2FNhmwpnJZh0bhGx ERiS5NwZwJzCd7dCy3a7/tBVLLUJ5/woBkKg7MejpSgovuGLo8i90Z/fFRPMhJ/p5WHzQ2 8g0YA5dCF/toruqEIwGew0+e/+iYeMk= X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250208_131639_034328_80C8521C X-CRM114-Status: GOOD ( 20.08 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org The vdd and leda supplies must be powered on for the chip to function and can be powered off during system suspend. This is originally based on a patch by Ondrej Jirman, but has been rewritten since. Link: https://codeberg.org/megi/linux/commit/a933aff8b7a0e6e3c9cf1d832dcba07022bbfa82 Signed-off-by: Aren Moynihan --- Notes: Changes in v5: - explicitely include array_size.h Changes in v4: - fix variable declaration order in stk3310_resume to match the rest of the driver Changes in v3: - use bulk regulators instead of two individual ones - handle cleanup using devm callbacks instead of the remove function Changes in v2: - always enable / disable regulators and rely on a dummy regulator if one isn't specified - replace usleep_range with fsleep - reorder includes so iio headers are last - add missing error handling to resume drivers/iio/light/stk3310.c | 76 ++++++++++++++++++++++++++++++++++++- 1 file changed, 74 insertions(+), 2 deletions(-) diff --git a/drivers/iio/light/stk3310.c b/drivers/iio/light/stk3310.c index 73ea36fa3acec..9c38ff01fdf0f 100644 --- a/drivers/iio/light/stk3310.c +++ b/drivers/iio/light/stk3310.c @@ -7,12 +7,15 @@ * IIO driver for STK3310/STK3311. 7-bit I2C address: 0x48. */ +#include #include #include #include #include #include #include +#include + #include #include #include @@ -130,6 +133,7 @@ struct stk3310_data { struct regmap_field *reg_int_ps; struct regmap_field *reg_flag_psint; struct regmap_field *reg_flag_nf; + struct regulator_bulk_data supplies[2]; }; static const struct iio_event_spec stk3310_events[] = { @@ -618,6 +622,31 @@ static irqreturn_t stk3310_irq_event_handler(int irq, void *private) return IRQ_HANDLED; } +static int stk3310_regulators_enable(struct stk3310_data *data) +{ + int ret; + + ret = regulator_bulk_enable(ARRAY_SIZE(data->supplies), data->supplies); + if (ret) + return ret; + + /* we need a short delay to allow the chip time to power on */ + fsleep(1000); + + return 0; +} + +static void stk3310_regulators_disable(void *private) +{ + int ret; + struct stk3310_data *data = private; + struct device *dev = &data->client->dev; + + ret = regulator_bulk_disable(ARRAY_SIZE(data->supplies), data->supplies); + if (ret) + dev_err(dev, "failed to disable regulators: %d\n", ret); +} + static int stk3310_probe(struct i2c_client *client) { int ret; @@ -642,6 +671,13 @@ static int stk3310_probe(struct i2c_client *client) if (ret) return ret; + data->supplies[0].supply = "vdd"; + data->supplies[1].supply = "leda"; + ret = devm_regulator_bulk_get(dev, ARRAY_SIZE(data->supplies), + data->supplies); + if (ret) + return dev_err_probe(dev, ret, "get regulators failed\n"); + ret = stk3310_regmap_init(data); if (ret < 0) return ret; @@ -652,6 +688,15 @@ static int stk3310_probe(struct i2c_client *client) indio_dev->channels = stk3310_channels; indio_dev->num_channels = ARRAY_SIZE(stk3310_channels); + ret = stk3310_regulators_enable(data); + if (ret) + return dev_err_probe(dev, ret, "regulator enable failed\n"); + + ret = devm_add_action_or_reset(dev, stk3310_regulators_disable, data); + if (ret) + return dev_err_probe(dev, ret, + "failed to register regulator cleanup\n"); + ret = stk3310_init(indio_dev); if (ret < 0) return ret; @@ -681,19 +726,46 @@ static int stk3310_probe(struct i2c_client *client) static int stk3310_suspend(struct device *dev) { + int ret; struct stk3310_data *data; data = iio_priv(i2c_get_clientdata(to_i2c_client(dev))); - return stk3310_set_state(data, STK3310_STATE_STANDBY); + ret = stk3310_set_state(data, STK3310_STATE_STANDBY); + if (ret) + return ret; + + regcache_mark_dirty(data->regmap); + + ret = regulator_bulk_disable(ARRAY_SIZE(data->supplies), data->supplies); + if (ret) { + dev_err(dev, "failed to disable regulators: %d\n", ret); + return ret; + } + + return 0; } static int stk3310_resume(struct device *dev) { - u8 state = 0; + int ret; struct stk3310_data *data; + u8 state = 0; data = iio_priv(i2c_get_clientdata(to_i2c_client(dev))); + + ret = stk3310_regulators_enable(data); + if (ret) { + dev_err(dev, "Failed to re-enable regulators: %d\n", ret); + return ret; + } + + ret = regcache_sync(data->regmap); + if (ret) { + dev_err(dev, "Failed to restore registers: %d\n", ret); + return ret; + } + if (data->ps_enabled) state |= STK3310_STATE_EN_PS; if (data->als_enabled) From patchwork Sat Feb 8 21:13:22 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Aren X-Patchwork-Id: 13966531 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 0BA86C02198 for ; Sat, 8 Feb 2025 21:25:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From: Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=Mx7GsGGiN8qI/cnEK3cRpdvpl4cmkBeU5/Nkgf8DQFw=; b=Tqd7aw1IhQ4bm9/j8pciumdwr+ DQcazQshx9YQ5auw64Krm0MRmyhqXt0ND/oSDTEsG3DbAppN5+utDdp74u7R1EvBOvC7FwKDfw7sT cC73u1u8NxTgG7h8hg/UOKVJc3diGggvEEuaqjL/vuM1EptZ8owVmAl+emSzprj8rCFq0L6Dg2qJI yDggzfdhDNy2rspQO2Lo82yTImoM5MkAk7lthsd+FBCMt/flbbzvG/nczJMn6ysbgQbz7uuzZ4zQ8 t5EsOtv0UF3tKMH/OzNZGjHguIr+R0xRhZtKav9UPkqkC48Jmr6nu/eJHVM0ljb6N600T4wVj+88R 5nqpBJcw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tgsJu-0000000DZPI-0VWm; Sat, 08 Feb 2025 21:24:58 +0000 Received: from a.peacevolution.org ([206.189.193.133]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tgsBt-0000000DYWE-0MbD for linux-arm-kernel@lists.infradead.org; Sat, 08 Feb 2025 21:16:42 +0000 Received: from authenticated-user (PRIMARY_HOSTNAME [PUBLIC_IP]) by a.peacevolution.org (Postfix) with ESMTPA id 3045941B62; Sat, 8 Feb 2025 21:16:39 +0000 (UTC) From: Aren Moynihan To: Jonathan Cameron , Lars-Peter Clausen , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Chen-Yu Tsai , Jernej Skrabec , Samuel Holland Cc: Aren Moynihan , Kaustabh Chakraborty , =?utf-8?b?QmFybmFiw6FzIEN6?= =?utf-8?b?w6ltw6Fu?= , Julien Stephan , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, Ondrej Jirman , Dragan Simic , phone-devel@vger.kernel.org Subject: [PATCH v5 4/8] iio: light: stk3310: simplify and inline STK3310_REGFIELD macro Date: Sat, 8 Feb 2025 16:13:22 -0500 Message-ID: <20250208211325.992280-6-aren@peacevolution.org> In-Reply-To: <20250208211325.992280-2-aren@peacevolution.org> References: <20250208211325.992280-2-aren@peacevolution.org> MIME-Version: 1.0 Authentication-Results: auth=pass smtp.auth=aren@peacevolution.org smtp.mailfrom=aren@peacevolution.org X-Spamd-Bar: ++ DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=peacevolution.org; s=dkim; t=1739049400; h=from:subject:date:message-id:to:cc:mime-version:content-transfer-encoding:in-reply-to:references; bh=Mx7GsGGiN8qI/cnEK3cRpdvpl4cmkBeU5/Nkgf8DQFw=; b=e3cTbml3prtzCmxHCRYg0uCtzSSdKwUHWsADXg8UBkwdCD/d2zABsDeKwSi0A98k2pyaOb BgoyVJgFwfO3GBvxhKhBg/CEwRT/Ib/7pYpAsO5SD8uPWRc/RuDRzniMpnNr+DEruN/iLa g6OSGRkUZ79xBVXcdsKELaG7qF953YE= X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250208_131641_263291_731CB44B X-CRM114-Status: UNSURE ( 9.37 ) X-CRM114-Notice: Please train this message. X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org This macro has a conditional return statement, which obfuscates control flow. Inlining makes the control flow more clear. This also switches to using dev_err_probe for error reporting, which is a shorter way of expressing the same logic as before. Signed-off-by: Aren Moynihan --- Notes: Added in v5 drivers/iio/light/stk3310.c | 58 +++++++++++++++++++++++++------------ 1 file changed, 39 insertions(+), 19 deletions(-) diff --git a/drivers/iio/light/stk3310.c b/drivers/iio/light/stk3310.c index 9c38ff01fdf0f..2e883e24dc4b2 100644 --- a/drivers/iio/light/stk3310.c +++ b/drivers/iio/light/stk3310.c @@ -59,17 +59,6 @@ "0.023680 0.047360 0.094720 0.189440 0.378880 0.757760 1.515520 " \ "3.031040 6.062080" -#define STK3310_REGFIELD(name) \ - do { \ - data->reg_##name = \ - devm_regmap_field_alloc(&client->dev, regmap, \ - stk3310_reg_field_##name); \ - if (IS_ERR(data->reg_##name)) { \ - dev_err(&client->dev, "reg field alloc failed.\n"); \ - return PTR_ERR(data->reg_##name); \ - } \ - } while (0) - static const struct reg_field stk3310_reg_field_state = REG_FIELD(STK3310_REG_STATE, 0, 2); static const struct reg_field stk3310_reg_field_als_gain = @@ -568,14 +557,45 @@ static int stk3310_regmap_init(struct stk3310_data *data) } data->regmap = regmap; - STK3310_REGFIELD(state); - STK3310_REGFIELD(als_gain); - STK3310_REGFIELD(ps_gain); - STK3310_REGFIELD(als_it); - STK3310_REGFIELD(ps_it); - STK3310_REGFIELD(int_ps); - STK3310_REGFIELD(flag_psint); - STK3310_REGFIELD(flag_nf); + data->reg_state = devm_regmap_field_alloc(dev, regmap, stk3310_reg_field_state); + if (IS_ERR(data->reg_state)) + return dev_err_probe(dev, PTR_ERR(data->reg_state), + "reg_state alloc failed\n"); + + data->reg_als_gain = devm_regmap_field_alloc(dev, regmap, stk3310_reg_field_als_gain); + if (IS_ERR(data->reg_als_gain)) + return dev_err_probe(dev, PTR_ERR(data->reg_als_gain), + "reg_als_gain alloc failed\n"); + + data->reg_ps_gain = devm_regmap_field_alloc(dev, regmap, stk3310_reg_field_ps_gain); + if (IS_ERR(data->reg_ps_gain)) + return dev_err_probe(dev, PTR_ERR(data->reg_ps_gain), + "reg_ps_gain alloc failed\n"); + + data->reg_als_it = devm_regmap_field_alloc(dev, regmap, stk3310_reg_field_als_it); + if (IS_ERR(data->reg_als_it)) + return dev_err_probe(dev, PTR_ERR(data->reg_als_it), + "reg_als_it alloc failed\n"); + + data->reg_ps_it = devm_regmap_field_alloc(dev, regmap, stk3310_reg_field_ps_it); + if (IS_ERR(data->reg_ps_it)) + return dev_err_probe(dev, PTR_ERR(data->reg_ps_it), + "reg_ps_it alloc failed\n"); + + data->reg_int_ps = devm_regmap_field_alloc(dev, regmap, stk3310_reg_field_int_ps); + if (IS_ERR(data->reg_int_ps)) + return dev_err_probe(dev, PTR_ERR(data->reg_int_ps), + "reg_int_ps alloc failed\n"); + + data->reg_flag_psint = devm_regmap_field_alloc(dev, regmap, stk3310_reg_field_flag_psint); + if (IS_ERR(data->reg_flag_psint)) + return dev_err_probe(dev, PTR_ERR(data->reg_flag_psint), + "reg_flag_psint alloc failed\n"); + + data->reg_flag_nf = devm_regmap_field_alloc(dev, regmap, stk3310_reg_field_flag_nf); + if (IS_ERR(data->reg_flag_nf)) + return dev_err_probe(dev, PTR_ERR(data->reg_flag_nf), + "reg_flag_nf alloc failed\n"); return 0; } From patchwork Sat Feb 8 21:13:23 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Aren X-Patchwork-Id: 13966532 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id D481EC0219B for ; Sat, 8 Feb 2025 21:26:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From: Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=Sh7wQrLZxDOxMjvtRdMEMxgWKn7Sh557t7kPahOEyMI=; b=fqIW/w+cuYN1KYZi0LNAggn1CL q6k0xoY2R8Z9Qvvmk49iy90j8pj80hKawtyWUSMLPIyTOwZ1MzWkj8KF+0LWn/tBmZuuI2QKSqUXb 1CRymD0C8THWaKTTQFKozzs5TN0qATPX0yzzR7EyJRln6kBZawU55FqGliajrQqKZ/BB5gEbFUqdj vSJBM1ROvZvFS2TJJjw6OZaLN+12L3n1arrOKE4qAVyBe4tUTpcAiplbUcxHrqdcs4MCEkml/u6xM ltU4+NDuAauO+UnDZ5bgA+H2hSNMWFWZ2L6He0JTGoQIxr/1E3X7PI/TYuu4JOx+PWnNtPzmJuJBs YY8ycwsA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tgsLF-0000000DZX8-3Br6; Sat, 08 Feb 2025 21:26:21 +0000 Received: from a.peacevolution.org ([206.189.193.133]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tgsBv-0000000DYXD-2YWH for linux-arm-kernel@lists.infradead.org; Sat, 08 Feb 2025 21:16:45 +0000 Received: from authenticated-user (PRIMARY_HOSTNAME [PUBLIC_IP]) by a.peacevolution.org (Postfix) with ESMTPA id 90EC741B67; Sat, 8 Feb 2025 21:16:41 +0000 (UTC) From: Aren Moynihan To: Jonathan Cameron , Lars-Peter Clausen , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Chen-Yu Tsai , Jernej Skrabec , Samuel Holland Cc: Aren Moynihan , Kaustabh Chakraborty , =?utf-8?b?QmFybmFiw6FzIEN6?= =?utf-8?b?w6ltw6Fu?= , Julien Stephan , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, Ondrej Jirman , Dragan Simic , phone-devel@vger.kernel.org Subject: [PATCH v5 5/8] iio: light: stk3310: refactor to always make dev a variable Date: Sat, 8 Feb 2025 16:13:23 -0500 Message-ID: <20250208211325.992280-7-aren@peacevolution.org> In-Reply-To: <20250208211325.992280-2-aren@peacevolution.org> References: <20250208211325.992280-2-aren@peacevolution.org> MIME-Version: 1.0 Authentication-Results: auth=pass smtp.auth=aren@peacevolution.org smtp.mailfrom=aren@peacevolution.org X-Spamd-Bar: +++ DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=peacevolution.org; s=dkim; t=1739049402; h=from:subject:date:message-id:to:cc:mime-version:content-transfer-encoding:in-reply-to:references; bh=Sh7wQrLZxDOxMjvtRdMEMxgWKn7Sh557t7kPahOEyMI=; b=Gu1chLssn9M/DwHkcpE3lBPErZZ2kSARpXYc7RdIMQQiSeAQX3vGgq6zX75y90xNTujuk0 EShh6UGm7HgyAgNWBHziTweEQEmUYsaXCqOj6019iXb2eQwfVUau6Mq/G6pIBf/6+yyH0j EGLET+Frop/AqwvDCUaeKv02Ll5jcuQ= X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250208_131643_789556_6371AB38 X-CRM114-Status: GOOD ( 13.47 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org This reduces syntactic noise where the dev variable is used, which should help improve readability. Signed-off-by: Aren Moynihan --- Notes: Added in v5 drivers/iio/light/stk3310.c | 40 ++++++++++++++++++------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/drivers/iio/light/stk3310.c b/drivers/iio/light/stk3310.c index 2e883e24dc4b2..2233eab63b7aa 100644 --- a/drivers/iio/light/stk3310.c +++ b/drivers/iio/light/stk3310.c @@ -237,6 +237,7 @@ static int stk3310_read_event(struct iio_dev *indio_dev, __be16 buf; int ret; struct stk3310_data *data = iio_priv(indio_dev); + struct device *dev = &data->client->dev; if (info != IIO_EV_INFO_VALUE) return -EINVAL; @@ -253,7 +254,7 @@ static int stk3310_read_event(struct iio_dev *indio_dev, ret = regmap_bulk_read(data->regmap, reg, &buf, 2); mutex_unlock(&data->lock); if (ret < 0) { - dev_err(&data->client->dev, "register read failed\n"); + dev_err(dev, "register read failed\n"); return ret; } *val = be16_to_cpu(buf); @@ -273,7 +274,7 @@ static int stk3310_write_event(struct iio_dev *indio_dev, int ret; unsigned int index; struct stk3310_data *data = iio_priv(indio_dev); - struct i2c_client *client = data->client; + struct device *dev = &data->client->dev; ret = regmap_field_read(data->reg_ps_gain, &index); if (ret < 0) @@ -292,7 +293,7 @@ static int stk3310_write_event(struct iio_dev *indio_dev, buf = cpu_to_be16(val); ret = regmap_bulk_write(data->regmap, reg, &buf, 2); if (ret < 0) - dev_err(&client->dev, "failed to set PS threshold!\n"); + dev_err(dev, "failed to set PS threshold!\n"); return ret; } @@ -321,13 +322,13 @@ static int stk3310_write_event_config(struct iio_dev *indio_dev, { int ret; struct stk3310_data *data = iio_priv(indio_dev); - struct i2c_client *client = data->client; + struct device *dev = &data->client->dev; /* Set INT_PS value */ mutex_lock(&data->lock); ret = regmap_field_write(data->reg_int_ps, state); if (ret < 0) - dev_err(&client->dev, "failed to set interrupt mode\n"); + dev_err(dev, "failed to set interrupt mode\n"); mutex_unlock(&data->lock); return ret; @@ -342,7 +343,7 @@ static int stk3310_read_raw(struct iio_dev *indio_dev, int ret; unsigned int index; struct stk3310_data *data = iio_priv(indio_dev); - struct i2c_client *client = data->client; + struct device *dev = &data->client->dev; if (chan->type != IIO_LIGHT && chan->type != IIO_PROXIMITY) return -EINVAL; @@ -357,7 +358,7 @@ static int stk3310_read_raw(struct iio_dev *indio_dev, mutex_lock(&data->lock); ret = regmap_bulk_read(data->regmap, reg, &buf, 2); if (ret < 0) { - dev_err(&client->dev, "register read failed\n"); + dev_err(dev, "register read failed\n"); mutex_unlock(&data->lock); return ret; } @@ -398,6 +399,7 @@ static int stk3310_write_raw(struct iio_dev *indio_dev, int ret; int index; struct stk3310_data *data = iio_priv(indio_dev); + struct device *dev = &data->client->dev; if (chan->type != IIO_LIGHT && chan->type != IIO_PROXIMITY) return -EINVAL; @@ -415,8 +417,7 @@ static int stk3310_write_raw(struct iio_dev *indio_dev, else ret = regmap_field_write(data->reg_ps_it, index); if (ret < 0) - dev_err(&data->client->dev, - "sensor configuration failed\n"); + dev_err(dev, "sensor configuration failed\n"); mutex_unlock(&data->lock); return ret; @@ -432,8 +433,7 @@ static int stk3310_write_raw(struct iio_dev *indio_dev, else ret = regmap_field_write(data->reg_ps_gain, index); if (ret < 0) - dev_err(&data->client->dev, - "sensor configuration failed\n"); + dev_err(dev, "sensor configuration failed\n"); mutex_unlock(&data->lock); return ret; } @@ -454,7 +454,7 @@ static const struct iio_info stk3310_info = { static int stk3310_set_state(struct stk3310_data *data, u8 state) { int ret; - struct i2c_client *client = data->client; + struct device *dev = &data->client->dev; /* 3-bit state; 0b100 is not supported. */ if (state > 7 || state == 4) @@ -463,7 +463,7 @@ static int stk3310_set_state(struct stk3310_data *data, u8 state) mutex_lock(&data->lock); ret = regmap_field_write(data->reg_state, state); if (ret < 0) { - dev_err(&client->dev, "failed to change sensor state\n"); + dev_err(dev, "failed to change sensor state\n"); } else if (state != STK3310_STATE_STANDBY) { /* Don't reset the 'enabled' flags if we're going in standby */ data->ps_enabled = !!(state & STK3310_STATE_EN_PS); @@ -500,7 +500,7 @@ static int stk3310_init(struct iio_dev *indio_dev) ret = stk3310_check_chip_id(chipid); if (ret < 0) - dev_info(&client->dev, "new unknown chip id: 0x%x\n", chipid); + dev_info(dev, "new unknown chip id: 0x%x\n", chipid); state = STK3310_STATE_EN_ALS | STK3310_STATE_EN_PS; ret = stk3310_set_state(data, state); @@ -618,12 +618,13 @@ static irqreturn_t stk3310_irq_event_handler(int irq, void *private) struct iio_dev *indio_dev = private; struct stk3310_data *data = iio_priv(indio_dev); + struct device *dev = &data->client->dev; /* Read FLAG_NF to figure out what threshold has been met. */ mutex_lock(&data->lock); ret = regmap_field_read(data->reg_flag_nf, &dir); if (ret < 0) { - dev_err(&data->client->dev, "register read failed: %d\n", ret); + dev_err(dev, "register read failed: %d\n", ret); goto out; } event = IIO_UNMOD_EVENT_CODE(IIO_PROXIMITY, 1, @@ -635,7 +636,7 @@ static irqreturn_t stk3310_irq_event_handler(int irq, void *private) /* Reset the interrupt flag */ ret = regmap_field_write(data->reg_flag_psint, 0); if (ret < 0) - dev_err(&data->client->dev, "failed to reset interrupts\n"); + dev_err(dev, "failed to reset interrupts\n"); out: mutex_unlock(&data->lock); @@ -674,7 +675,7 @@ static int stk3310_probe(struct i2c_client *client) struct stk3310_data *data; struct device *dev = &client->dev; - indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*data)); + indio_dev = devm_iio_device_alloc(dev, sizeof(*data)); if (!indio_dev) { dev_err(&client->dev, "iio allocation failed!\n"); return -ENOMEM; @@ -684,8 +685,7 @@ static int stk3310_probe(struct i2c_client *client) data->client = client; i2c_set_clientdata(client, indio_dev); - device_property_read_u32(&client->dev, "proximity-near-level", - &data->ps_near_level); + device_property_read_u32(dev, "proximity-near-level", &data->ps_near_level); ret = devm_mutex_init(dev, &data->lock); if (ret) @@ -722,7 +722,7 @@ static int stk3310_probe(struct i2c_client *client) return ret; if (client->irq > 0) { - ret = devm_request_threaded_irq(&client->dev, client->irq, + ret = devm_request_threaded_irq(dev, client->irq, stk3310_irq_handler, stk3310_irq_event_handler, IRQF_TRIGGER_FALLING | From patchwork Sat Feb 8 21:13:24 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Aren X-Patchwork-Id: 13966533 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 6DA40C02198 for ; Sat, 8 Feb 2025 21:27:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From: Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=KC0X8lgQOTNNFYjC1MhZEeQLG9S5MuH28VUYqdOhE+o=; b=3WGVh46vll3rG01kGevJ199D+e b3IZIDVl7Pg0dvfjh6auY7fPcszJh8/S7z6fBExDecnqm9XNuTGEz9hnBQgN3hAbMNbf70OFMMwFO icKzxSLMRLadOWxgSUto8VLNik8ZD81mWD+QddMpDdX9zH2x+kPCi27tGp08STOuo7HpXYp7l/W4D NElsjJZhFCXLYD9cAHWUITeYs8Qk5pAyZvwt7j2WURfpSjsm3WlN2aQghFIgYwhs74L5+Y70YlUQP DIeCE70mkp4h63+m0AwetFLnpSL4bFjrbgSpbwsQQI63NQ8yf/3fJF4VnTvqryzbybuKFw2A7d/5w Ufr6iqqw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tgsMc-0000000DZqP-1fQl; Sat, 08 Feb 2025 21:27:46 +0000 Received: from a.peacevolution.org ([206.189.193.133]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tgsBx-0000000DYYR-3aqS for linux-arm-kernel@lists.infradead.org; Sat, 08 Feb 2025 21:16:47 +0000 Received: from authenticated-user (PRIMARY_HOSTNAME [PUBLIC_IP]) by a.peacevolution.org (Postfix) with ESMTPA id E6BC641B6B; Sat, 8 Feb 2025 21:16:43 +0000 (UTC) From: Aren Moynihan To: Jonathan Cameron , Lars-Peter Clausen , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Chen-Yu Tsai , Jernej Skrabec , Samuel Holland Cc: Aren Moynihan , Kaustabh Chakraborty , =?utf-8?b?QmFybmFiw6FzIEN6?= =?utf-8?b?w6ltw6Fu?= , Julien Stephan , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, Ondrej Jirman , Dragan Simic , phone-devel@vger.kernel.org Subject: [PATCH v5 6/8] iio: light: stk3310: use dev_err_probe where possible Date: Sat, 8 Feb 2025 16:13:24 -0500 Message-ID: <20250208211325.992280-8-aren@peacevolution.org> In-Reply-To: <20250208211325.992280-2-aren@peacevolution.org> References: <20250208211325.992280-2-aren@peacevolution.org> MIME-Version: 1.0 Authentication-Results: auth=pass smtp.auth=aren@peacevolution.org smtp.mailfrom=aren@peacevolution.org X-Spamd-Bar: +++ DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=peacevolution.org; s=dkim; t=1739049405; h=from:subject:date:message-id:to:cc:mime-version:content-transfer-encoding:in-reply-to:references; bh=KC0X8lgQOTNNFYjC1MhZEeQLG9S5MuH28VUYqdOhE+o=; b=J4Okbg3QnG7lEL3C4iRk+5TnFawAvUuqzePAkBusC1qhBoBrBXjERbpxiTmT9RwEzzLlG9 EJzFAmh608wYtGQs83y92RJX7nTkrOwdYQDT4RVANdHF9bLM1p/4QYI4GDAEuIfKr1uwG8 TRUU2x9wGGKx0XmOKucnyfEdIiWifFM= X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250208_131646_034703_3505D814 X-CRM114-Status: GOOD ( 13.26 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Using dev_err_probe instead of dev_err and return makes the errors easier to understand by including the error name, and saves a little code. Signed-off-by: Aren Moynihan --- Notes: Changes in v4: - Get a struct device ahead of time so it can be passed as "dev" instead of "&client->dev" No changes in v3 Added in v2 drivers/iio/light/stk3310.c | 42 +++++++++++++++---------------------- 1 file changed, 17 insertions(+), 25 deletions(-) diff --git a/drivers/iio/light/stk3310.c b/drivers/iio/light/stk3310.c index 2233eab63b7aa..9d517d51f6bae 100644 --- a/drivers/iio/light/stk3310.c +++ b/drivers/iio/light/stk3310.c @@ -504,10 +504,8 @@ static int stk3310_init(struct iio_dev *indio_dev) state = STK3310_STATE_EN_ALS | STK3310_STATE_EN_PS; ret = stk3310_set_state(data, state); - if (ret < 0) { - dev_err(&client->dev, "failed to enable sensor"); - return ret; - } + if (ret < 0) + return dev_err_probe(dev, ret, "failed to enable sensor\n"); ret = devm_add_action_or_reset(dev, stk3310_set_state_disable, data); if (ret) @@ -516,9 +514,9 @@ static int stk3310_init(struct iio_dev *indio_dev) /* Enable PS interrupts */ ret = regmap_field_write(data->reg_int_ps, STK3310_PSINT_EN); if (ret < 0) - dev_err(&client->dev, "failed to enable interrupts!\n"); + return dev_err_probe(dev, ret, "failed to enable interrupts!\n"); - return ret; + return 0; } static bool stk3310_is_volatile_reg(struct device *dev, unsigned int reg) @@ -547,14 +545,14 @@ static const struct regmap_config stk3310_regmap_config = { static int stk3310_regmap_init(struct stk3310_data *data) { struct regmap *regmap; - struct i2c_client *client; + struct i2c_client *client = data->client; + struct device *dev = &client->dev; - client = data->client; regmap = devm_regmap_init_i2c(client, &stk3310_regmap_config); - if (IS_ERR(regmap)) { - dev_err(&client->dev, "regmap initialization failed.\n"); - return PTR_ERR(regmap); - } + if (IS_ERR(regmap)) + return dev_err_probe(dev, PTR_ERR(regmap), + "regmap initialization failed\n"); + data->regmap = regmap; data->reg_state = devm_regmap_field_alloc(dev, regmap, stk3310_reg_field_state); @@ -676,10 +674,8 @@ static int stk3310_probe(struct i2c_client *client) struct device *dev = &client->dev; indio_dev = devm_iio_device_alloc(dev, sizeof(*data)); - if (!indio_dev) { - dev_err(&client->dev, "iio allocation failed!\n"); - return -ENOMEM; - } + if (!indio_dev) + return dev_err_probe(dev, -ENOMEM, "iio allocation failed!\n"); data = iio_priv(indio_dev); data->client = client; @@ -728,18 +724,14 @@ static int stk3310_probe(struct i2c_client *client) IRQF_TRIGGER_FALLING | IRQF_ONESHOT, STK3310_EVENT, indio_dev); - if (ret < 0) { - dev_err(&client->dev, "request irq %d failed\n", - client->irq); - return ret; - } + if (ret < 0) + return dev_err_probe(dev, ret, "request irq %d failed\n", + client->irq); } ret = devm_iio_device_register(dev, indio_dev); - if (ret < 0) { - dev_err(&client->dev, "device_register failed\n"); - return ret; - } + if (ret < 0) + return dev_err_probe(dev, ret, "device_register failed\n"); return 0; } From patchwork Sat Feb 8 21:13:25 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Aren X-Patchwork-Id: 13966534 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 2FDC9C02198 for ; Sat, 8 Feb 2025 21:29:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From: Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=45gtTJDlNvmrcpI0uTOgi/HT7BpeWEr5O9jUnaiYis4=; b=Fk4Q68udAjZbtraGj9JrGCman9 DkS/U22ex9Ik/QJjwGNRC/QwIp2s+pb1rTeRh4OyCnbObP061QRnOEBsgzujjnpS5qIGFW1l5JP0/ JZSW5kKHAo16Nx9o2lahsmV4L0Lk/S9r1Qgli/ZcfKvV4rXkQxWmWfBLYwsae0TFALCbTlDcSwmWL qPuoaWf1Em3l/GUiyLRRU6oZ36mn3Y8MCc1C6PLiAe3zgqzpqwZPHvdqm4pCNt0QsH4yNPKVQDKJ7 apxogPIfWCtrl9Nk6qx7WbOBdI0XOTnYE8OehQN42g6adyDAZcRHrjXHPgqe+dQlZ07AD4NGLMLhE v22tXu4g==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tgsNz-0000000DZzS-07tV; Sat, 08 Feb 2025 21:29:11 +0000 Received: from a.peacevolution.org ([206.189.193.133]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tgsC0-0000000DYZM-0uqu for linux-arm-kernel@lists.infradead.org; Sat, 08 Feb 2025 21:16:49 +0000 Received: from authenticated-user (PRIMARY_HOSTNAME [PUBLIC_IP]) by a.peacevolution.org (Postfix) with ESMTPA id 41DA541B6C; Sat, 8 Feb 2025 21:16:46 +0000 (UTC) From: Aren Moynihan To: Jonathan Cameron , Lars-Peter Clausen , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Chen-Yu Tsai , Jernej Skrabec , Samuel Holland Cc: Aren Moynihan , Kaustabh Chakraborty , =?utf-8?b?QmFybmFiw6FzIEN6?= =?utf-8?b?w6ltw6Fu?= , Julien Stephan , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, Ondrej Jirman , Dragan Simic , phone-devel@vger.kernel.org Subject: [PATCH v5 7/8] iio: light: stk3310: log error if reading the chip id fails Date: Sat, 8 Feb 2025 16:13:25 -0500 Message-ID: <20250208211325.992280-9-aren@peacevolution.org> In-Reply-To: <20250208211325.992280-2-aren@peacevolution.org> References: <20250208211325.992280-2-aren@peacevolution.org> MIME-Version: 1.0 Authentication-Results: auth=pass smtp.auth=aren@peacevolution.org smtp.mailfrom=aren@peacevolution.org X-Spamd-Bar: ++ DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=peacevolution.org; s=dkim; t=1739049407; h=from:subject:date:message-id:to:cc:mime-version:content-transfer-encoding:in-reply-to:references; bh=45gtTJDlNvmrcpI0uTOgi/HT7BpeWEr5O9jUnaiYis4=; b=PvowEm3KOzHYGeXxZ6TEv1hgvVo7/DZGuF81b1qlWtKuhbR6twW2IE1oZFpkLIpFA2cDND t5f1OOGcLx33hz5tshto7afJxdWsUZzSmGfd6HfMDN2W96YVOqDdXQ1MedZA71+a6M6umR hRSwSZQmo9f1vJxcqXr8Bi0c6t+hHXs= X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250208_131648_323685_A5246698 X-CRM114-Status: GOOD ( 12.22 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org If the chip isn't powered, this call is likely to return an error. Without a log here the driver will silently fail to probe. Potential errors include ENXIO (when the chip isn't powered) and ETIMEDOUT (when the i2c bus isn't powered). This function is only called from stk3310_probe, and this condition should return an error, which fits what dev_err_probe is designed for. Signed-off-by: Aren Moynihan --- Notes: Changes in v4: - get a struct device ahead of time so it can be passed as "dev" instead of "&client->dev" Changes in v2: - use dev_err_probe drivers/iio/light/stk3310.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/iio/light/stk3310.c b/drivers/iio/light/stk3310.c index 9d517d51f6bae..3a06852cb0ab4 100644 --- a/drivers/iio/light/stk3310.c +++ b/drivers/iio/light/stk3310.c @@ -496,7 +496,7 @@ static int stk3310_init(struct iio_dev *indio_dev) ret = regmap_read(data->regmap, STK3310_REG_ID, &chipid); if (ret < 0) - return ret; + return dev_err_probe(dev, ret, "failed to read chip id\n"); ret = stk3310_check_chip_id(chipid); if (ret < 0) From patchwork Sat Feb 8 21:13:26 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Aren X-Patchwork-Id: 13966535 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 65264C02198 for ; Sat, 8 Feb 2025 21:30:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From: Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=I6BlN6EJ3tr8v9Bkl3osVeEnBo4ZKpH0ucFgYQMPJag=; b=Ply/V2YYOfbm+MOHgoTDZxWnRi F4aWd4tY1CEUyNTAlM2PudtkbWCUCPjgy9hIdTbDlECOqZeNjoXlLyFzfa5d2yNF8uyJ8BI7CGJA6 X+gSwDyNlOoHcMXpDjiNLdWYDxRRoSK1UvmEeAaHn/5lk5At6PBGN9erXAnitu04uJI0SWitq02Pv onqZuZZlJfJ4Vte3tENKTbdWf5hI13dt0AmcoRKmLyLoisuwmYNif5SqulsAZ1wISWvNBIe5K3g90 DrUakWYqylPBaqBeAGfIOgwcqPSBoSMW1oEjhAGzUrC5rsV0M3g+a76YBV5lt67FuaZuqJt8xCdUj p2hU2M6Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tgsPL-0000000Da8C-3AVT; Sat, 08 Feb 2025 21:30:35 +0000 Received: from a.peacevolution.org ([206.189.193.133]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tgsC2-0000000DYZh-1Rod for linux-arm-kernel@lists.infradead.org; Sat, 08 Feb 2025 21:16:51 +0000 Received: from authenticated-user (PRIMARY_HOSTNAME [PUBLIC_IP]) by a.peacevolution.org (Postfix) with ESMTPA id 68D9841B6E; Sat, 8 Feb 2025 21:16:48 +0000 (UTC) From: Aren Moynihan To: Jonathan Cameron , Lars-Peter Clausen , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Chen-Yu Tsai , Jernej Skrabec , Samuel Holland Cc: Aren Moynihan , Kaustabh Chakraborty , =?utf-8?b?QmFybmFiw6FzIEN6?= =?utf-8?b?w6ltw6Fu?= , Julien Stephan , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, Ondrej Jirman , Dragan Simic , phone-devel@vger.kernel.org Subject: [PATCH v5 8/8] arm64: dts: allwinner: pinephone: add power supplies to stk3311 Date: Sat, 8 Feb 2025 16:13:26 -0500 Message-ID: <20250208211325.992280-10-aren@peacevolution.org> In-Reply-To: <20250208211325.992280-2-aren@peacevolution.org> References: <20250208211325.992280-2-aren@peacevolution.org> MIME-Version: 1.0 Authentication-Results: auth=pass smtp.auth=aren@peacevolution.org smtp.mailfrom=aren@peacevolution.org X-Spamd-Bar: ++ DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=peacevolution.org; s=dkim; t=1739049409; h=from:subject:date:message-id:to:cc:mime-version:content-transfer-encoding:in-reply-to:references; bh=I6BlN6EJ3tr8v9Bkl3osVeEnBo4ZKpH0ucFgYQMPJag=; b=dg7Nqf7Akrsc0TvG+ztOY/9QZ6wccJ6QE7qJRpYGOMcGJPPS7Y5JaoJMf1fAuFpSteeaOq arynTZbN1Idv+KM0sP0slzwJwemq+0i0I8mj/ZCqgWVIAiJlki7KXnv4sFhtrK3t0+ZnzP WUh6z1s7yRZN4jbah+9X5ULbSKhNR/Q= X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250208_131650_454389_8350ADA6 X-CRM114-Status: UNSURE ( 7.49 ) X-CRM114-Notice: Please train this message. X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org From: Ondrej Jirman This allows the driver to properly handle powering this device, and disable power during suspend. Signed-off-by: Ondrej Jirman Signed-off-by: Aren Moynihan --- Notes: Changes in v2: - add leda-supply arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone.dtsi | 2 ++ 1 file changed, 2 insertions(+) diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone.dtsi index a2ceb08a91950..d70fbc06b8d23 100644 --- a/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone.dtsi +++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone.dtsi @@ -278,6 +278,8 @@ light-sensor@48 { reg = <0x48>; interrupt-parent = <&pio>; interrupts = <1 0 IRQ_TYPE_EDGE_FALLING>; /* PB0 */ + vdd-supply = <®_ldo_io0>; + leda-supply = <®_dldo1>; }; /* Accelerometer/gyroscope */