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: 13966529 Received: from a.peacevolution.org (a.peacevolution.org [206.189.193.133]) (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 36522244E99; Sat, 8 Feb 2025 21:26:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=206.189.193.133 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739050001; cv=none; b=j2/PviEA8SOvIztSR/ckJDCheBWuWEIUdpKTFUYvo8Qak6h/yMbNY8dUXefVa5sn1dIGUmObshVH0uv+yGK9ywwZ92B6NrGszxnCWGo3XsirBtXuZpv8BKym4aQ2tf0vdXSCLiFNq5Fy8T8PkcpgdkvvEH9QtI8qOkmwx6MlL/o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739050001; c=relaxed/simple; bh=hMAM7CUBGn2KUNz4ahL7cPYMznPAMm670fG0T+OBdoA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Z1qaKCC5Ug4KgQFEpIL95eNeYJdLsKm5jEqylL9q0AXCn4P309toUWH+uSLYBN+XR1x0/dL+U6/H7h8ElF84m+I7zjt6gzZa4cn+/IRMEKfjulHx1Z4U03ojhuplXa2o6b+euYLRlLTOji0MpXLdPQhWzJgyuQqyw0sxRPJyXAM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=peacevolution.org; spf=pass smtp.mailfrom=peacevolution.org; dkim=pass (1024-bit key) header.d=peacevolution.org header.i=@peacevolution.org header.b=dm6Vvw24; arc=none smtp.client-ip=206.189.193.133 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=peacevolution.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=peacevolution.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=peacevolution.org header.i=@peacevolution.org header.b="dm6Vvw24" 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> Precedence: bulk X-Mailing-List: linux-iio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Authentication-Results: auth=pass smtp.auth=aren@peacevolution.org smtp.mailfrom=aren@peacevolution.org X-Spam-Level: ****** 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= 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: 13966528 Received: from a.peacevolution.org (a.peacevolution.org [206.189.193.133]) (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 3B29F244E9D; Sat, 8 Feb 2025 21:26:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=206.189.193.133 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739050000; cv=none; b=mkCu8ams2bVQrInxnKE6wQIBpGX1XggArykG6S8S7sFJ9rX7ckVQQ9GrI7U4K+o7yXScIc7zEr8lyit76ZUcWSIY98AEUe9O73V+MJSbjZyrLpT897Ioa6JoOiMrM8CTmuhG4k0OhVNBGt5mcfcjqRUg95v4NswBvoMTOFK44Q0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739050000; c=relaxed/simple; bh=GZyHLxobtg6JhQ/Epup0iThUafaDOuPr9Nd9awNA71U=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Nk864w57x2eqeyUidP74ysxnNafIvpLHPnrTxTSPcatWFXm6tYRQIfTZYNxDrMm30O1M4/gl6o2j7DZlXMIfcuqWv+LFuWwpWLZF9HbJphC4EYMuOWwIjZThYptqzmRzi6pzmvHdH9Veto0HV0LtlVYopoAa8nGD5VsxZzgWuoQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=peacevolution.org; spf=pass smtp.mailfrom=peacevolution.org; dkim=pass (1024-bit key) header.d=peacevolution.org header.i=@peacevolution.org header.b=SxsuCYAL; arc=none smtp.client-ip=206.189.193.133 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=peacevolution.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=peacevolution.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=peacevolution.org header.i=@peacevolution.org header.b="SxsuCYAL" 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> Precedence: bulk X-Mailing-List: linux-iio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Authentication-Results: auth=pass smtp.auth=aren@peacevolution.org smtp.mailfrom=aren@peacevolution.org X-Spam-Level: ***** 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= 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: 13966518 Received: from a.peacevolution.org (a.peacevolution.org [206.189.193.133]) (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 E9FA01AA1FE; Sat, 8 Feb 2025 21:16:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=206.189.193.133 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739049400; cv=none; b=U+8wgJlFnrTDHeIe7szwMisle3hJX2uUspSDJeubcWYM232j5iHnO6CvA/8sTrw6R8ZHiuxqq8uRdBRYtM1rNLqKQBLfzAShKNuOaFVW/85KkdAIoIfo8vw/4AKKeUe/894Y3L0DQFyq0r+dE5z4pnQ2eznDigc5lqsB5CCwLIA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739049400; c=relaxed/simple; bh=S7TS2dTgXLDKWQ8H4GZRdQ/KgeNs9JFfBdout5LGBKA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=fDXJXCr4jOnV3tZCDY0yuRmsSvChy52oVYduzk9YqtvDZDaF1ih3lwLg4BHhpbyRU6dH0H2Cx1gSTORjGUp70DINY41hB5Vx+NjkgwusyXqfdd0rAcV8pimwDTvJLr9sCTdpFp78kpqw2CHhqqHi9c7dpOrmiFik6SaWWJkjBt8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=peacevolution.org; spf=pass smtp.mailfrom=peacevolution.org; dkim=pass (1024-bit key) header.d=peacevolution.org header.i=@peacevolution.org header.b=I3LnkCzf; arc=none smtp.client-ip=206.189.193.133 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=peacevolution.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=peacevolution.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=peacevolution.org header.i=@peacevolution.org header.b="I3LnkCzf" 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> Precedence: bulk X-Mailing-List: linux-iio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Authentication-Results: auth=pass smtp.auth=aren@peacevolution.org smtp.mailfrom=aren@peacevolution.org X-Spam-Level: ****** 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= 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: 13966519 Received: from a.peacevolution.org (a.peacevolution.org [206.189.193.133]) (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 5ABA423C8B4; Sat, 8 Feb 2025 21:16:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=206.189.193.133 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739049402; cv=none; b=VXdljQkmXogB3Z+QisYP59g2OT2ZEV/xWppC9CzCd4fcFeebdepb/djVbzSY6Kx6MFzTAoBhUNzFTM6yuR9F+HURCc0jihxyVn0LJXnZdN8gwpj/O9jB2TBLWrNNJHkUeZV/ba+LGtRyCxE5w6LYkSIFZsFHDErL7d1H7aFzKkQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739049402; c=relaxed/simple; bh=KkY7pTunLI4B4jihyD/Ec32+iIry3PghYhfM7cW50Hc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=mhj1LJCUdruuvwemeMr9DrJzm65vjJlT+n0XZj3kZhRkeLY2AAfHo5z0pE7GRBT1cBrVN7E6p1QuMYk6z94E8mpVZqElXOCgyraTLqOHoZEFGKq05TjVBsGkFJ/eagJHbzofdJUHB9Ro4dct5jSU8IkujvKs/SXBmnvZDxPIGgg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=peacevolution.org; spf=pass smtp.mailfrom=peacevolution.org; dkim=pass (1024-bit key) header.d=peacevolution.org header.i=@peacevolution.org header.b=e3cTbml3; arc=none smtp.client-ip=206.189.193.133 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=peacevolution.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=peacevolution.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=peacevolution.org header.i=@peacevolution.org header.b="e3cTbml3" 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> Precedence: bulk X-Mailing-List: linux-iio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Authentication-Results: auth=pass smtp.auth=aren@peacevolution.org smtp.mailfrom=aren@peacevolution.org X-Spam-Level: ** 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= 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: 13966520 Received: from a.peacevolution.org (a.peacevolution.org [206.189.193.133]) (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 B725D241C8E; Sat, 8 Feb 2025 21:16:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=206.189.193.133 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739049405; cv=none; b=lTr2pCTPuMHpUPIdB81jgj5lfek53F1i5CkI2fJsO0I0QQCtMpRVi3bBN5ydedYs4XD5AyG14Bx7Ab/QT0Dz0ohfzjf+vudANy9ZN1b4W5Qi1vCQmuNq4PrhAUTOTK7kHxahzJfxCZiI52BPCaROnMGkj84CVOi47tor51jwHzc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739049405; c=relaxed/simple; bh=fHewpfB6i7PRoK0kR4KbuYXEP4dbEZZlAgrsrwQqlLs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=NNBIEdfQXqDH0yk3cHW2S+oyv7AprDoILyffCcdvyreQRk+LnLtFALewZMpbobo7Lkq5gAR9LfWQnj19s0xOEry1GHqviwbXoeFRY38gStAWfHzUPlpi2ALm85vNGEuKufGVSyPBOhcDTDL2Xy4XW7FbjGISr1e0HBnSJAPJaI0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=peacevolution.org; spf=pass smtp.mailfrom=peacevolution.org; dkim=pass (1024-bit key) header.d=peacevolution.org header.i=@peacevolution.org header.b=Gu1chLss; arc=none smtp.client-ip=206.189.193.133 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=peacevolution.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=peacevolution.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=peacevolution.org header.i=@peacevolution.org header.b="Gu1chLss" 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> Precedence: bulk X-Mailing-List: linux-iio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Authentication-Results: auth=pass smtp.auth=aren@peacevolution.org smtp.mailfrom=aren@peacevolution.org X-Spam-Level: *** 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= 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: 13966521 Received: from a.peacevolution.org (a.peacevolution.org [206.189.193.133]) (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 17DE22475C4; Sat, 8 Feb 2025 21:16:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=206.189.193.133 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739049407; cv=none; b=t8fZil1Yw/umDkikFWv+BbBNNV22kVziHLHNTq5ixjlca4EZm8hXfzGhBxmwV4xDMzqLvyIe5UTMpekgN8i9u+kmnZKfdJHLEMysuLqKAe7bRG0hkzPjhJY5ODI0zhzJcrIvPK1S37+Zm3fLCnCZtvCPisScTPSxVoLcUuCj9QA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739049407; c=relaxed/simple; bh=aVKNohCKsQoQ5xomcP8SK+r18BRhXWRwQcT3bJtJEto=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=OgGNFkU6SweYR5GE7KG0if0bqDZdXfwM6rWI3X4EjRvYbv3vcpBTKx2Im1AdJpSzosZ/vCybhuv8atwJrKVKEHQm6EzVabJYcqwyZfpXD/WH2DO4ufdXF/+2e3hU+iPoy7GTKD2cjuXbQWguiBCCIOLgWvGuE7DepJjBRK51iaA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=peacevolution.org; spf=pass smtp.mailfrom=peacevolution.org; dkim=pass (1024-bit key) header.d=peacevolution.org header.i=@peacevolution.org header.b=J4Okbg3Q; arc=none smtp.client-ip=206.189.193.133 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=peacevolution.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=peacevolution.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=peacevolution.org header.i=@peacevolution.org header.b="J4Okbg3Q" 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> Precedence: bulk X-Mailing-List: linux-iio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Authentication-Results: auth=pass smtp.auth=aren@peacevolution.org smtp.mailfrom=aren@peacevolution.org X-Spam-Level: *** 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= 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: 13966522 Received: from a.peacevolution.org (a.peacevolution.org [206.189.193.133]) (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 69E0A259495; Sat, 8 Feb 2025 21:16:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=206.189.193.133 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739049409; cv=none; b=P5vJZul0pyMonAFzrMgemJ2SEg9h6NYkE1Gq5QuBVJgsME3Kk9W8Nb9Ugt8KsPR5moxaSHyP8xuCIg+5qn5t7Clv1rksLkgOKbOL5iJvsr4V3TU3Q8FFR0bFR2UE/vdGz9Hi8DmO1yB0aNroDCppUbdcVI/r3lSLN9zqc9WXsrM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739049409; c=relaxed/simple; bh=1DwIyy54oq3GtrslZGG67YWoUVERHo+OBWEqaKgfwU8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=j3H48VruyKseMLdSrDZaxCnVlE/FTNy+8NRIOXVdHpUo0znyuki8qGRHa4HqBrboa4StZjnMChdtCrObMv3tYhhqPeeSF4na6Ctm+vkmSbhkMFtBzSCjY/shY/PIQcGFG+M87XNag2Hg7A8PFVVBsTXUdW2k4H6xx1B1WYN5YUA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=peacevolution.org; spf=pass smtp.mailfrom=peacevolution.org; dkim=pass (1024-bit key) header.d=peacevolution.org header.i=@peacevolution.org header.b=PvowEm3K; arc=none smtp.client-ip=206.189.193.133 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=peacevolution.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=peacevolution.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=peacevolution.org header.i=@peacevolution.org header.b="PvowEm3K" 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> Precedence: bulk X-Mailing-List: linux-iio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Authentication-Results: auth=pass smtp.auth=aren@peacevolution.org smtp.mailfrom=aren@peacevolution.org X-Spam-Level: ** 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= 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: 13966523 Received: from a.peacevolution.org (a.peacevolution.org [206.189.193.133]) (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 660282441A4; Sat, 8 Feb 2025 21:16:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=206.189.193.133 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739049411; cv=none; b=D6Nugn23da/utv2y988zK8OphDZdTzhrov2GheD2OdAsFpRETFZVYcN3QR3V71HYUt4GsbP9UwLHRYfCgASVe3jTHU+KfoJev7JSj1REbGkVWiQsHvYhu0S7w5UB4ie8SGUdUK/qfOlvelOPw0ZsQ3moMPLU9b6HRxMra7IGuqM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739049411; c=relaxed/simple; bh=vPyN0byjiX1ogFw2gBtCFjfv8lniT3rcPJVsAzn2rcs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=B/pPhtnJBSbhTcMjovsWymXRucRcx7d2FVnYbC+Zj79sB/uO/uMsug08wGdgbHiXjqKpfqWUBBTzCurNM1LjP3I/Nv8D5piWHgmthQbtB4riO3Ida0180Re2RnQ7sE91LbC0K01IVy/h+LHrUMjKxlI7MkSoYMuzZHklWb9MbJI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=peacevolution.org; spf=pass smtp.mailfrom=peacevolution.org; dkim=pass (1024-bit key) header.d=peacevolution.org header.i=@peacevolution.org header.b=dg7Nqf7A; arc=none smtp.client-ip=206.189.193.133 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=peacevolution.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=peacevolution.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=peacevolution.org header.i=@peacevolution.org header.b="dg7Nqf7A" 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> Precedence: bulk X-Mailing-List: linux-iio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Authentication-Results: auth=pass smtp.auth=aren@peacevolution.org smtp.mailfrom=aren@peacevolution.org X-Spam-Level: ** 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= 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 */