From nobody Mon May 25 05:54:40 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 60DA43C5835; Mon, 18 May 2026 07:50:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779090641; cv=none; b=X094iTFwqZCGwXaQ86kPkWge3B03oHVAS3uTAvL8nWGysvpm6+pFh+I5lAMMpROE8c2RVMB0FHkA0741+n7Djvv8x8B++WvKMndSBwctPCFcAN/hexKOcTtVQy68kIYNN6d+Yu0RUZlV2xl22eA5iNAHmjDrow7uJX/GukYWN+o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779090641; c=relaxed/simple; bh=L3SFGcMUzcDzpjakQjdld7MbV/fV98urqNcZ8p9Ct7U=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=q9cIH8VQPIDo1PND9KW5y2Tsll6u61IkY/vZAXCrrTeA380ZjpNBWRomm5/j0UYPr5lnxPuLOGxrpl1l+OsbqvLPb94dyJXiOHFM4bkLRtFpa8Lsna+yap3jAwPZvDTGPF5xk7nrO5TZQZEtO2XFb0IhyEOeUXVd3KiIEdkXUfk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=dgIaGUC2; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="dgIaGUC2" Received: by smtp.kernel.org (Postfix) with ESMTPS id 2293EC2BCF5; Mon, 18 May 2026 07:50:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1779090640; bh=L3SFGcMUzcDzpjakQjdld7MbV/fV98urqNcZ8p9Ct7U=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=dgIaGUC2rggFU1LI4TW1uE8QRp6ZYYz/lP5IqtDghNiQN2RACLDHds3elD1BJQAOA xnRXsGnM9tggnS+HJEcMbFQSr67Mtb1+X460o64MAWlwGcuMLofpLVlnpMjrw9wJJP zVjI+5bQ054KYpG9VRvpAxCa/1RZaIJsSOhcVgRb+SZyHeWyLA82DxGJa440lEi6gN AEMgaftqTTvBHDXw5qLhDhu6oGI3OKMYBsgTd2YHRtNT/42DCVRsi1nWc0VL5Xbw4A a5tRpJbWrPkXmTTB74FyRVIcVpWpcLdfWliinVUtIameT5aFuA1XFANcId45Ej9MlQ HSccOIfBcp3KQ== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 130EBCD4F3C; Mon, 18 May 2026 07:50:40 +0000 (UTC) From: Joshua Crofts via B4 Relay Date: Mon, 18 May 2026 09:50:25 +0200 Subject: [PATCH v8 1/5] iio: magnetometer: ak8975: switch to using managed resources Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260518-magnetometer-fixes-post-pickup-v8-1-088d610108a0@gmail.com> References: <20260518-magnetometer-fixes-post-pickup-v8-0-088d610108a0@gmail.com> In-Reply-To: <20260518-magnetometer-fixes-post-pickup-v8-0-088d610108a0@gmail.com> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko Cc: linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Joshua Crofts , Andy Shevchenko X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1779090640; l=5045; i=joshua.crofts1@gmail.com; s=20260422; h=from:subject:message-id; bh=givHTS5pQ9lRym85HWLXh4HlEe6bie7ypSYk6PAi+Po=; b=ul6qbMTg8niw+bAiPexJiqR8GR3eE7Fot7gNCdyq35CdtfgoMiLTl8ryRN0Zd4tQ4EOgCg7QO fYvEzoHm2aTB77cGUcRI6R09K4oYHzHgOzyWcF/LAxLZYescKOHVr9F X-Developer-Key: i=joshua.crofts1@gmail.com; a=ed25519; pk=Xd+UVoRPiiI0K3LHQ2XIcXmO0jvVuFTv9eTx3lgBphI= X-Endpoint-Received: by B4 Relay for joshua.crofts1@gmail.com/20260422 with auth_id=746 X-Original-From: Joshua Crofts Reply-To: joshua.crofts1@gmail.com From: Andy Shevchenko Switch the driver to use managed resources (devm_*) which simplifier error handling and allows removing ak8975_remove() method from the driver. Note, on error path we now also set mode to POWER_DOWN state which is fine. Even if the device is in that mode, there is no problem to set that mode again, it should be no-op. Additionally, remove any pm_runtime_get/put*() function calls that dummy cycled the counter to autosuspend the device. Signed-off-by: Andy Shevchenko Co-developed-by: Joshua Crofts Signed-off-by: Joshua Crofts --- drivers/iio/magnetometer/ak8975.c | 77 ++++++++++++++++++++++-------------= ---- 1 file changed, 43 insertions(+), 34 deletions(-) diff --git a/drivers/iio/magnetometer/ak8975.c b/drivers/iio/magnetometer/a= k8975.c index bb74abb648f138352576a68c49d3c7dce7cc068e..de4402201783430fc69369f1acc= aab35145e9f0c 100644 --- a/drivers/iio/magnetometer/ak8975.c +++ b/drivers/iio/magnetometer/ak8975.c @@ -935,9 +935,25 @@ static const struct iio_buffer_setup_ops ak8975_buffer= _setup_ops =3D { .preenable =3D ak8975_buffer_preenable, .postdisable =3D ak8975_buffer_postdisable, }; + +static void devm_ak8975_power_off(void *data) +{ + struct ak8975_data *ak =3D data; + struct device *dev =3D &ak->client->dev; + + /* Only power down if currently active */ + if (pm_runtime_suspended(dev)) + return; + + /* Soft-stop the chip before hard-stopping the regulators */ + ak8975_set_mode(data, POWER_DOWN); + ak8975_power_off(data); +} + static int ak8975_probe(struct i2c_client *client) { const struct i2c_device_id *id =3D i2c_client_get_device_id(client); + struct device *dev =3D &client->dev; struct ak8975_data *data; struct iio_dev *indio_dev; struct gpio_desc *eoc_gpiod; @@ -1005,10 +1021,21 @@ static int ak8975_probe(struct i2c_client *client) if (ret) return ret; =20 + /* + * Set device as active early so pm_runtime_status_suspended() works + * correctly if probe fails before pm_runtime is enabled. Do not attempt + * to move this line lower. + */ + pm_runtime_set_active(dev); + + ret =3D devm_add_action_or_reset(dev, devm_ak8975_power_off, data); + if (ret) + return ret; + ret =3D ak8975_who_i_am(data, data->def->type); if (ret) { dev_err(&client->dev, "Unexpected device\n"); - goto power_off; + return ret; } dev_dbg(&client->dev, "Asahi compass chip %s\n", name); =20 @@ -1016,10 +1043,13 @@ static int ak8975_probe(struct i2c_client *client) ret =3D ak8975_setup(data); if (ret) { dev_err(&client->dev, "%s initialization fails\n", name); - goto power_off; + return ret; } =20 - mutex_init(&data->lock); + ret =3D devm_mutex_init(dev, &data->lock); + if (ret) + return ret; + indio_dev->channels =3D ak8975_channels; indio_dev->num_channels =3D ARRAY_SIZE(ak8975_channels); indio_dev->info =3D &ak8975_info; @@ -1027,52 +1057,32 @@ static int ak8975_probe(struct i2c_client *client) indio_dev->modes =3D INDIO_DIRECT_MODE; indio_dev->name =3D name; =20 - ret =3D iio_triggered_buffer_setup(indio_dev, NULL, ak8975_handle_trigger, - &ak8975_buffer_setup_ops); + ret =3D devm_iio_triggered_buffer_setup(dev, indio_dev, NULL, + ak8975_handle_trigger, + &ak8975_buffer_setup_ops); if (ret) { dev_err(&client->dev, "triggered buffer setup failed\n"); - goto power_off; + return ret; } =20 - ret =3D iio_device_register(indio_dev); + ret =3D devm_pm_runtime_enable(dev); + if (ret) + return ret; + + ret =3D devm_iio_device_register(dev, indio_dev); if (ret) { dev_err(&client->dev, "device register failed\n"); - goto cleanup_buffer; + return ret; } =20 - /* Enable runtime PM */ - pm_runtime_get_noresume(&client->dev); - pm_runtime_set_active(&client->dev); - pm_runtime_enable(&client->dev); /* * The device comes online in 500us, so add two orders of magnitude * of delay before autosuspending: 50 ms. */ pm_runtime_set_autosuspend_delay(&client->dev, 50); pm_runtime_use_autosuspend(&client->dev); - pm_runtime_put(&client->dev); =20 return 0; - -cleanup_buffer: - iio_triggered_buffer_cleanup(indio_dev); -power_off: - ak8975_power_off(data); - return ret; -} - -static void ak8975_remove(struct i2c_client *client) -{ - struct iio_dev *indio_dev =3D i2c_get_clientdata(client); - struct ak8975_data *data =3D iio_priv(indio_dev); - - pm_runtime_get_sync(&client->dev); - pm_runtime_put_noidle(&client->dev); - pm_runtime_disable(&client->dev); - iio_device_unregister(indio_dev); - iio_triggered_buffer_cleanup(indio_dev); - ak8975_set_mode(data, POWER_DOWN); - ak8975_power_off(data); } =20 static int ak8975_runtime_suspend(struct device *dev) @@ -1166,7 +1176,6 @@ static struct i2c_driver ak8975_driver =3D { .acpi_match_table =3D ak_acpi_match, }, .probe =3D ak8975_probe, - .remove =3D ak8975_remove, .id_table =3D ak8975_id, }; module_i2c_driver(ak8975_driver); --=20 2.47.3 From nobody Mon May 25 05:54:40 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 7241E3CF661; Mon, 18 May 2026 07:50:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779090641; cv=none; b=BC43JaQ0IjGQNtGhoiTnWia2JmdGr+ntCr9hQ3N7VSl81uMhIZ44DkWFFP1/VxhOXj5fUfhfqgTXUlYoGU8NoXWBYhl9mpS/wrpX/EHTxxlcNPAcZvhe/3HxJ+45EqlB/q9E0chDYPZX0F0R5yzn8OCnJ9pK6UawmpLhW+Xobhc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779090641; c=relaxed/simple; bh=mGXE+EiZgClXKlHPEe60/woCdIm+nCYs9yjo0CMy4PA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=R1Yl4tHs5+umak8XZGOHKxFjStJZKdCXLm3gnxG/zrVjw3d3FniLpcPmI4uh47PjIisqJlAJRqtycKy+KZlnA1O69xfHoYMoQtbaMMNnFQOQOtBfyh+1BrjNWHcyKhHEAjoBq7XrzqhWxvXDAkgrZIrmj9QdZl/CHoabo/+512E= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=JcuBizfE; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="JcuBizfE" Received: by smtp.kernel.org (Postfix) with ESMTPS id 38413C2BCC6; Mon, 18 May 2026 07:50:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1779090640; bh=mGXE+EiZgClXKlHPEe60/woCdIm+nCYs9yjo0CMy4PA=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=JcuBizfEo5vGFkOg4NbHdzGN/DglyFNQusdz5Na2P5RSmoai4ZWRvH7+CnJiSias/ 2UrPJnTHyUGqpKr6+OjlrCJ9f4g9/jRxvt97LYRCNcYuRM9kmr1JOZsz8hU6ewKqS7 mSD57ygid65nzS0PyllxMeuS+GFbNVmjxt3vjq0QmK5J7E+UmX8X0fW4/27wX3BAGK WGeY+sgjkXVb6p21LhumsxWM9GaHoLNid1KgDiTb2Zxf4n+T3J6qYWV+GV8srVg1Sn JLwVX2pGjtwju5+H3B+P2TcirlhlRUeJ7RQJm6zFJeK3pthJyjcG5Us7wYvfYXDTRS ONo0e5hDM39TQ== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2C3FDCD4F52; Mon, 18 May 2026 07:50:40 +0000 (UTC) From: Joshua Crofts via B4 Relay Date: Mon, 18 May 2026 09:50:26 +0200 Subject: [PATCH v8 2/5] iio: magnetometer: ak8975: unify messages with help of dev_err_probe() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260518-magnetometer-fixes-post-pickup-v8-2-088d610108a0@gmail.com> References: <20260518-magnetometer-fixes-post-pickup-v8-0-088d610108a0@gmail.com> In-Reply-To: <20260518-magnetometer-fixes-post-pickup-v8-0-088d610108a0@gmail.com> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko Cc: linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Joshua Crofts , Andy Shevchenko X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1779090640; l=2737; i=joshua.crofts1@gmail.com; s=20260422; h=from:subject:message-id; bh=2kbW615Mv/xUTO+xPzb4dUlB6TkMmy9QpDavmVUaJbY=; b=I4XXT7/pz1eAh0xTKhSW6xAzWYqVEw1N9TltuBLfxUgXME7G+Nlc6wv2zFBXxHxQdv9eVaQ3L kH4+ZFe6zCDD4vGXwLRGpfejH4luAUM+Eds/qtVa8bRkHRqMp+WcerW X-Developer-Key: i=joshua.crofts1@gmail.com; a=ed25519; pk=Xd+UVoRPiiI0K3LHQ2XIcXmO0jvVuFTv9eTx3lgBphI= X-Endpoint-Received: by B4 Relay for joshua.crofts1@gmail.com/20260422 with auth_id=746 X-Original-From: Joshua Crofts Reply-To: joshua.crofts1@gmail.com From: Andy Shevchenko Unify error messages that might appear during probe phase by switching to use dev_err_probe(). Signed-off-by: Andy Shevchenko Reviewed-by: Nuno S=C3=A1 Signed-off-by: Joshua Crofts --- drivers/iio/magnetometer/ak8975.c | 37 +++++++++++++----------------------= -- 1 file changed, 13 insertions(+), 24 deletions(-) diff --git a/drivers/iio/magnetometer/ak8975.c b/drivers/iio/magnetometer/a= k8975.c index de4402201783430fc69369f1accaab35145e9f0c..e7cd28ab37aaeb2b68758a42ba4= 0a87c71bd1e24 100644 --- a/drivers/iio/magnetometer/ak8975.c +++ b/drivers/iio/magnetometer/ak8975.c @@ -495,14 +495,10 @@ static int ak8975_who_i_am(const struct ak8975_data *= data, AK09912_REG_WIA1, sizeof(wia_val), wia_val); - if (ret < 0) { - dev_err(&client->dev, "Error reading WIA\n"); - return ret; - } - if (ret !=3D sizeof(wia_val)) { - dev_err(&client->dev, "Error reading WIA\n"); - return -EIO; - } + if (ret < 0) + return dev_err_probe(&client->dev, ret, "Error reading WIA\n"); + if (ret !=3D sizeof(wia_val)) + return dev_err_probe(&client->dev, -EIO, "Error reading WIA\n"); =20 if (wia_val[0] !=3D AK8975_DEVICE_ID) return -ENODEV; @@ -1033,18 +1029,15 @@ static int ak8975_probe(struct i2c_client *client) return ret; =20 ret =3D ak8975_who_i_am(data, data->def->type); - if (ret) { - dev_err(&client->dev, "Unexpected device\n"); - return ret; - } + if (ret) + return dev_err_probe(dev, ret, "Unexpected device\n"); + dev_dbg(&client->dev, "Asahi compass chip %s\n", name); =20 /* Perform some basic start-of-day setup of the device. */ ret =3D ak8975_setup(data); - if (ret) { - dev_err(&client->dev, "%s initialization fails\n", name); - return ret; - } + if (ret) + return dev_err_probe(dev, ret, "%s initialization fails\n", name); =20 ret =3D devm_mutex_init(dev, &data->lock); if (ret) @@ -1060,20 +1053,16 @@ static int ak8975_probe(struct i2c_client *client) ret =3D devm_iio_triggered_buffer_setup(dev, indio_dev, NULL, ak8975_handle_trigger, &ak8975_buffer_setup_ops); - if (ret) { - dev_err(&client->dev, "triggered buffer setup failed\n"); - return ret; - } + if (ret) + return dev_err_probe(dev, ret, "triggered buffer setup failed\n"); =20 ret =3D devm_pm_runtime_enable(dev); if (ret) return ret; =20 ret =3D devm_iio_device_register(dev, indio_dev); - if (ret) { - dev_err(&client->dev, "device register failed\n"); - return ret; - } + if (ret) + return dev_err_probe(dev, ret, "device register failed\n"); =20 /* * The device comes online in 500us, so add two orders of magnitude --=20 2.47.3 From nobody Mon May 25 05:54:40 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 843553E0090; Mon, 18 May 2026 07:50:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779090641; cv=none; b=s5gaIQIFw55MIjT8/g4EdTO4wl99+CI7LHNG0Z4o4q4chT06CdS4vdmj9facxjxKqoGdHtMhgwCkLNiClxdVawsRFVBFh/y0zKT+W3jqNuodngNv1WpUYY2BSZovGPleZn6DhRsWp1TR8bbezQryyDaqx0nY8ojm3EZ3AlLCOfo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779090641; c=relaxed/simple; bh=LPMMeRotTvJ3x7wTNmob9kcjWns9R95Pq8+qeh9qnxE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Uq91XnxTzmjkb73R4GVm/pGmZopBPZyRKNASNw5Hbu4leCCchKGN61C3HnSV67DUedvwfCS2jlhS7mR1zvnSPVLAD8s2gqlGm0CLedG9e9iYr0Wqv+gEuYxx+RL1jMh+VQSZYYXUEG4lrzmr2gk7fv4Y6eTsAajEdH1tvPdKbUI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=EkgVfLPV; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="EkgVfLPV" Received: by smtp.kernel.org (Postfix) with ESMTPS id 48421C2BCF6; Mon, 18 May 2026 07:50:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1779090640; bh=LPMMeRotTvJ3x7wTNmob9kcjWns9R95Pq8+qeh9qnxE=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=EkgVfLPViYOk3ChlMt+zTTIRY/nQftiP6Cb+i1NpKLKBTYbtu67aItF26IxF8YGT9 bTiajb+fF5XEkU+CEMuJzI4KR+XOsu5zEa7WN/dg4jy4AZWBJ5CVIL1tscXxNWozWe OpDIw+GV1x9YVtT/Cl5N83S+DgjtZLOpHIhyyzcDuu55jzD8YCVTX7yhuqKbGc6shT 3g5ezWZMXEdteyw+6aiGp1f/yW6u6OK4rb4WTZlEEWs2joxK17yfNXbN3eDsaoWubn oQQM891YsVhkcPbOKWa/I7ps8dwh8DQPRVHrczXPE8CxkMh9yhrvNVxNDdi3MIsG36 trZSvQREK+oow== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3FE9ACD4F48; Mon, 18 May 2026 07:50:40 +0000 (UTC) From: Joshua Crofts via B4 Relay Date: Mon, 18 May 2026 09:50:27 +0200 Subject: [PATCH v8 3/5] iio: magnetometer: ak8975: use temporary variable for struct device Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260518-magnetometer-fixes-post-pickup-v8-3-088d610108a0@gmail.com> References: <20260518-magnetometer-fixes-post-pickup-v8-0-088d610108a0@gmail.com> In-Reply-To: <20260518-magnetometer-fixes-post-pickup-v8-0-088d610108a0@gmail.com> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko Cc: linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Joshua Crofts , Andy Shevchenko X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1779090640; l=8351; i=joshua.crofts1@gmail.com; s=20260422; h=from:subject:message-id; bh=fj3a/1mBXtCXzLsk2ujeqiVE658SWCx0SgFuPZgY3/E=; b=rxYyfWt5CsM4ze8bLLpnN/QB8RJjJRvAnez+KNTpJtvUJNqCafos5NLYqv3hTdDy41XTSkbgh WkW9C++Y400DpX8xHeUprfoE1UbUtocCnC590jP+NGs36pV5QgQ0ce3 X-Developer-Key: i=joshua.crofts1@gmail.com; a=ed25519; pk=Xd+UVoRPiiI0K3LHQ2XIcXmO0jvVuFTv9eTx3lgBphI= X-Endpoint-Received: by B4 Relay for joshua.crofts1@gmail.com/20260422 with auth_id=746 X-Original-From: Joshua Crofts Reply-To: joshua.crofts1@gmail.com From: Andy Shevchenko Use temporary variable for struct device to make code neater. Signed-off-by: Andy Shevchenko Reviewed-by: Nuno S=C3=A1 Signed-off-by: Joshua Crofts --- drivers/iio/magnetometer/ak8975.c | 63 +++++++++++++++++++----------------= ---- 1 file changed, 31 insertions(+), 32 deletions(-) diff --git a/drivers/iio/magnetometer/ak8975.c b/drivers/iio/magnetometer/a= k8975.c index e7cd28ab37aaeb2b68758a42ba40a87c71bd1e24..7ab4c4d69d8b73c6f367f6e62fe= e3017d8691b67 100644 --- a/drivers/iio/magnetometer/ak8975.c +++ b/drivers/iio/magnetometer/ak8975.c @@ -433,18 +433,17 @@ struct ak8975_data { /* Enable attached power regulator if any. */ static int ak8975_power_on(const struct ak8975_data *data) { + struct device *dev =3D &data->client->dev; int ret; =20 ret =3D regulator_enable(data->vdd); if (ret) { - dev_warn(&data->client->dev, - "Failed to enable specified Vdd supply\n"); + dev_warn(dev, "Failed to enable specified Vdd supply\n"); return ret; } ret =3D regulator_enable(data->vid); if (ret) { - dev_warn(&data->client->dev, - "Failed to enable specified Vid supply\n"); + dev_warn(dev, "Failed to enable specified Vid supply\n"); regulator_disable(data->vdd); return ret; } @@ -574,6 +573,7 @@ static irqreturn_t ak8975_irq_handler(int irq, void *da= ta) static int ak8975_setup_irq(struct ak8975_data *data) { struct i2c_client *client =3D data->client; + struct device *dev =3D &client->dev; int irq; int ret; =20 @@ -584,9 +584,8 @@ static int ak8975_setup_irq(struct ak8975_data *data) else irq =3D gpiod_to_irq(data->eoc_gpiod); =20 - ret =3D devm_request_irq(&client->dev, irq, ak8975_irq_handler, - IRQF_TRIGGER_RISING, - dev_name(&client->dev), data); + ret =3D devm_request_irq(dev, irq, ak8975_irq_handler, IRQF_TRIGGER_RISIN= G, + dev_name(dev), data); if (ret) return ret; =20 @@ -602,12 +601,13 @@ static int ak8975_setup_irq(struct ak8975_data *data) static int ak8975_setup(struct ak8975_data *data) { struct i2c_client *client =3D data->client; + struct device *dev =3D &client->dev; int ret; =20 /* Write the fused rom access mode. */ ret =3D ak8975_set_mode(data, FUSE_ROM); if (ret < 0) { - dev_err(&client->dev, "Error in setting fuse access mode\n"); + dev_err(dev, "Error in setting fuse access mode\n"); return ret; } =20 @@ -617,7 +617,7 @@ static int ak8975_setup(struct ak8975_data *data) sizeof(data->asa), data->asa); if (ret < 0) { - dev_err(&client->dev, "Not able to read asa data\n"); + dev_err(dev, "Not able to read asa data\n"); return ret; } if (ret !=3D sizeof(data->asa)) { @@ -628,15 +628,14 @@ static int ak8975_setup(struct ak8975_data *data) /* After reading fuse ROM data set power-down mode */ ret =3D ak8975_set_mode(data, POWER_DOWN); if (ret < 0) { - dev_err(&client->dev, "Error in setting power-down mode\n"); + dev_err(dev, "Error in setting power-down mode\n"); return ret; } =20 if (data->eoc_gpiod || client->irq > 0) { ret =3D ak8975_setup_irq(data); if (ret < 0) { - dev_err(&client->dev, - "Error setting data ready interrupt\n"); + dev_err(dev, "Error setting data ready interrupt\n"); return ret; } } @@ -742,10 +741,11 @@ static int ak8975_read_axis(struct iio_dev *indio_dev= , int index, int *val) struct ak8975_data *data =3D iio_priv(indio_dev); const struct i2c_client *client =3D data->client; const struct ak_def *def =3D data->def; + struct device *dev =3D &data->client->dev; __le16 rval; int ret; =20 - pm_runtime_get_sync(&data->client->dev); + pm_runtime_get_sync(dev); =20 mutex_lock(&data->lock); =20 @@ -767,20 +767,20 @@ static int ak8975_read_axis(struct iio_dev *indio_dev= , int index, int *val) /* Read out ST2 for release lock on measurement data. */ ret =3D i2c_smbus_read_byte_data(client, data->def->ctrl_regs[ST2]); if (ret < 0) { - dev_err(&client->dev, "Error in reading ST2\n"); + dev_err(dev, "Error in reading ST2\n"); goto exit; } =20 if (ret & (data->def->ctrl_masks[ST2_DERR] | data->def->ctrl_masks[ST2_HOFL])) { - dev_err(&client->dev, "ST2 status error 0x%x\n", ret); + dev_err(dev, "ST2 status error 0x%x\n", ret); ret =3D -EINVAL; goto exit; } =20 mutex_unlock(&data->lock); =20 - pm_runtime_put_autosuspend(&data->client->dev); + pm_runtime_put_autosuspend(dev); =20 /* Swap bytes and convert to valid range. */ *val =3D clamp_t(s16, le16_to_cpu(rval), -def->range, def->range); @@ -789,8 +789,8 @@ static int ak8975_read_axis(struct iio_dev *indio_dev, = int index, int *val) =20 exit: mutex_unlock(&data->lock); - pm_runtime_put_autosuspend(&data->client->dev); - dev_err(&client->dev, "Error in reading axis\n"); + pm_runtime_put_autosuspend(dev); + dev_err(dev, "Error in reading axis\n"); return ret; } =20 @@ -962,7 +962,7 @@ static int ak8975_probe(struct i2c_client *client) * We may not have a GPIO based IRQ to scan, that is fine, we will * poll if so. */ - eoc_gpiod =3D devm_gpiod_get_optional(&client->dev, NULL, GPIOD_IN); + eoc_gpiod =3D devm_gpiod_get_optional(dev, NULL, GPIOD_IN); if (IS_ERR(eoc_gpiod)) return PTR_ERR(eoc_gpiod); gpiod_set_consumer_name(eoc_gpiod, "ak_8975"); @@ -972,13 +972,12 @@ static int ak8975_probe(struct i2c_client *client) * deassert reset on ak8975_power_on() and assert reset on * ak8975_power_off(). */ - reset_gpiod =3D devm_gpiod_get_optional(&client->dev, - "reset", GPIOD_OUT_HIGH); + reset_gpiod =3D devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_HIGH); if (IS_ERR(reset_gpiod)) return PTR_ERR(reset_gpiod); =20 /* Register with IIO */ - indio_dev =3D devm_iio_device_alloc(&client->dev, sizeof(*data)); + indio_dev =3D devm_iio_device_alloc(dev, sizeof(*data)); if (indio_dev =3D=3D NULL) return -ENOMEM; =20 @@ -990,7 +989,7 @@ static int ak8975_probe(struct i2c_client *client) data->reset_gpiod =3D reset_gpiod; data->eoc_irq =3D 0; =20 - ret =3D iio_read_mount_matrix(&client->dev, &data->orientation); + ret =3D iio_read_mount_matrix(dev, &data->orientation); if (ret) return ret; =20 @@ -1000,16 +999,16 @@ static int ak8975_probe(struct i2c_client *client) return -ENODEV; =20 /* If enumerated via firmware node, fix the ABI */ - if (dev_fwnode(&client->dev)) - name =3D dev_name(&client->dev); + if (dev_fwnode(dev)) + name =3D dev_name(dev); else name =3D id->name; =20 /* Fetch the regulators */ - data->vdd =3D devm_regulator_get(&client->dev, "vdd"); + data->vdd =3D devm_regulator_get(dev, "vdd"); if (IS_ERR(data->vdd)) return PTR_ERR(data->vdd); - data->vid =3D devm_regulator_get(&client->dev, "vid"); + data->vid =3D devm_regulator_get(dev, "vid"); if (IS_ERR(data->vid)) return PTR_ERR(data->vid); =20 @@ -1032,7 +1031,7 @@ static int ak8975_probe(struct i2c_client *client) if (ret) return dev_err_probe(dev, ret, "Unexpected device\n"); =20 - dev_dbg(&client->dev, "Asahi compass chip %s\n", name); + dev_dbg(dev, "Asahi compass chip %s\n", name); =20 /* Perform some basic start-of-day setup of the device. */ ret =3D ak8975_setup(data); @@ -1068,8 +1067,8 @@ static int ak8975_probe(struct i2c_client *client) * The device comes online in 500us, so add two orders of magnitude * of delay before autosuspending: 50 ms. */ - pm_runtime_set_autosuspend_delay(&client->dev, 50); - pm_runtime_use_autosuspend(&client->dev); + pm_runtime_set_autosuspend_delay(dev, 50); + pm_runtime_use_autosuspend(dev); =20 return 0; } @@ -1084,7 +1083,7 @@ static int ak8975_runtime_suspend(struct device *dev) /* Set the device in power down if it wasn't already */ ret =3D ak8975_set_mode(data, POWER_DOWN); if (ret < 0) { - dev_err(&client->dev, "Error in setting power-down mode\n"); + dev_err(dev, "Error in setting power-down mode\n"); return ret; } /* Next cut the regulators */ @@ -1108,7 +1107,7 @@ static int ak8975_runtime_resume(struct device *dev) */ ret =3D ak8975_set_mode(data, POWER_DOWN); if (ret < 0) { - dev_err(&client->dev, "Error in setting power-down mode\n"); + dev_err(dev, "Error in setting power-down mode\n"); return ret; } =20 --=20 2.47.3 From nobody Mon May 25 05:54:40 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 81F313E008F; Mon, 18 May 2026 07:50:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779090641; cv=none; b=h/0ZtAloZ8XHoYSFlLSs8eEsvFHJ7eB9zzdq+V3sEh3SD5656dgR7FqreMhpnRv4qWVGlvYnGaKNmOQXtMyAhcge8grQLEO06sQu6DSQGOXasJbbLWD7vWXoxKV3h+F3qOJN6f0y9mwRrm9O6Su2O8Jn/UDeen0emRqXi8HxE0k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779090641; c=relaxed/simple; bh=Mnmhc1i+rUaMv1WJoCZYdV0Or5n5ypryVDDth/klZIU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=b3eRLO5oneT96zSTu0Ggs9UdsPl4mmoWHg3VhFAsTUEqea0BCONgQ+uuQwGhunGAcKQecqrxX9abVAl3DrdvdAgafqoRMyfSpOb5DW6QbnWM4QWxXj1qiZMGnFWq8qFMytQICpJsczT13RN6it0EPyBQRCPb+Wq6UJkxND2hDh0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=VaTd4Tul; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="VaTd4Tul" Received: by smtp.kernel.org (Postfix) with ESMTPS id 5E361C2BCFA; Mon, 18 May 2026 07:50:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1779090640; bh=Mnmhc1i+rUaMv1WJoCZYdV0Or5n5ypryVDDth/klZIU=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=VaTd4Tulu2iS6Abwqunnq473Xmh3odnqnwaBejJdT3rauy0tbenvsAIGGeF9RBV2/ NYNsksNH4AKEBsXcaliM6mcSztWL0oS7WDs6bJz8KOXELKVHGB4AqTiUhNscMa0fjm gCRy7VnYJ++XpQUTLRZJ9WslXZ7rZutkW66zTgOVNJu0veh91qeIx9rEcXdTkeUZb/ j52mdy2KR57LMoPR4e8yjMccW6fWgzvctK/Vct3zrepsypIRDx/W0KBioMlR5q4DpB RdyWB2+D1fYb4zNvRiyCLPB0V3436zwcey0rh9aHyEefLHTzYKfSEQi/x8nB+se+7v 9u8gm8txsfS+Q== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 527D9CD4F54; Mon, 18 May 2026 07:50:40 +0000 (UTC) From: Joshua Crofts via B4 Relay Date: Mon, 18 May 2026 09:50:28 +0200 Subject: [PATCH v8 4/5] iio: magnetometer: ak8975: add scan mask index enum Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260518-magnetometer-fixes-post-pickup-v8-4-088d610108a0@gmail.com> References: <20260518-magnetometer-fixes-post-pickup-v8-0-088d610108a0@gmail.com> In-Reply-To: <20260518-magnetometer-fixes-post-pickup-v8-0-088d610108a0@gmail.com> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko Cc: linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Joshua Crofts X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1779090641; l=1586; i=joshua.crofts1@gmail.com; s=20260422; h=from:subject:message-id; bh=TmoAemhwd8JQBfZ8GJE0sULb1oyi4FJkAG/PLV6TJTE=; b=AEkn6/f5/FNkApGWmHTJ/oCxFVuAMvlycm/wMbQJOWnfzv/dXZObVasGCSrVy6XfFHPnXjY7t LzsRhZ55wgkD25PxOSIlyqh9dJY6I3ZsNvbC+8d8WviC95b+wbmu+qS X-Developer-Key: i=joshua.crofts1@gmail.com; a=ed25519; pk=Xd+UVoRPiiI0K3LHQ2XIcXmO0jvVuFTv9eTx3lgBphI= X-Endpoint-Received: by B4 Relay for joshua.crofts1@gmail.com/20260422 with auth_id=746 X-Original-From: Joshua Crofts Reply-To: joshua.crofts1@gmail.com From: Joshua Crofts Add an enum to explicitly define scan mask indexes for the X, Y, Z and timestamp channels. Also, update the struct iio_chan_spec to use said enum for the .scan_index parameter. This prevents magic numbers from obscuring the hardware channel mapping and improves code style. No functional change. Suggested-by: Jonathan Cameron Reviewed-by: Nuno S=C3=A1 Signed-off-by: Joshua Crofts --- drivers/iio/magnetometer/ak8975.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/drivers/iio/magnetometer/ak8975.c b/drivers/iio/magnetometer/a= k8975.c index 7ab4c4d69d8b73c6f367f6e62fee3017d8691b67..a140d352bad663a138295dc0c44= 084a9a18a4c24 100644 --- a/drivers/iio/magnetometer/ak8975.c +++ b/drivers/iio/magnetometer/ak8975.c @@ -238,6 +238,13 @@ enum ak_ctrl_mode { MODE_END, }; =20 +enum ak_scan_index { + AK8975_SCAN_X, + AK8975_SCAN_Y, + AK8975_SCAN_Z, + AK8975_SCAN_TS, +}; + struct ak_def { enum asahi_compass_chipset type; long (*raw_to_gauss)(u16 data); @@ -845,8 +852,10 @@ static const struct iio_chan_spec_ext_info ak8975_ext_= info[] =3D { } =20 static const struct iio_chan_spec ak8975_channels[] =3D { - AK8975_CHANNEL(X, 0), AK8975_CHANNEL(Y, 1), AK8975_CHANNEL(Z, 2), - IIO_CHAN_SOFT_TIMESTAMP(3), + AK8975_CHANNEL(X, AK8975_SCAN_X), + AK8975_CHANNEL(Y, AK8975_SCAN_Y), + AK8975_CHANNEL(Z, AK8975_SCAN_Z), + IIO_CHAN_SOFT_TIMESTAMP(AK8975_SCAN_TS), }; =20 static const unsigned long ak8975_scan_masks[] =3D { 0x7, 0 }; --=20 2.47.3 From nobody Mon May 25 05:54:40 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 2491B3D1CB1; Mon, 18 May 2026 07:50:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779090642; cv=none; b=D9i4t4t2NQSIdQaMU8+JZHpxvKpCEh/vZi8DWpOD2EAla8IQqVDGJEizLWdqI6U3CMe2zv29F4pAcvE1hnIey2e3xtGzMFTxWKjdMm2ybsCEd8szZjtFOVn8YtYI+dHnuZcYDykW8ue9QAJJ7eQ1VbbZ8UqhJe6aKddkFBgdH3A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779090642; c=relaxed/simple; bh=zyLcdeqv/avz5A8qPCnkpPBKHA9DDyEAq0acfzNciec=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=YWCj4itXSSJs/pL3R8Pv/euk4+j9UqxhcO585Jx1dLa8nOF2jhrpVmKZ4OAgRhy71XVLKSLsEWDo80GtLDtkjm3ujPCS1tpOguCHnLO+BkmpWxCbjUAY/Dw8FkAYowr76Wv19tZa+m596YNyUpSo5Rbbj3Mo0MB9N31Fonv6v6A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Wyih6Pph; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Wyih6Pph" Received: by smtp.kernel.org (Postfix) with ESMTPS id 737C4C2BCFC; Mon, 18 May 2026 07:50:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1779090640; bh=zyLcdeqv/avz5A8qPCnkpPBKHA9DDyEAq0acfzNciec=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=Wyih6PphyD5YVClou7WM50Wdr8vgEmhfzpTxp/1YcdrNcO2gEcHh2niwNr+YSzq5Z T5aaPRn+vsmadOC5fFBtBQqy39fs4XsL/CPHINueFYPHkVCs92hI4py+dl/lQfytbR P5t9nZrUMmTmDsmL+0/HMZ3rpc2bjt4tASYOI1A5Ph6+H1i0IkbbyGwF5mwKlHNAU9 CGIgk4yccyeINT4oXiwgZI9y5IQJFxWuiMexQlvZG60/AJ92Cvz5l3Tow7NQT+rTNc NapnUf7HRltLSH9HvdMQ3v/k68nkJaTqU67r7/z3oZ/hkNPB5aoVcfzOI7XKWPTFxz 0WJxiEt59PoRg== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 67E55CD4F48; Mon, 18 May 2026 07:50:40 +0000 (UTC) From: Joshua Crofts via B4 Relay Date: Mon, 18 May 2026 09:50:29 +0200 Subject: [PATCH v8 5/5] iio: magnetometer: ak8975: make use of the macros from bits.h Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260518-magnetometer-fixes-post-pickup-v8-5-088d610108a0@gmail.com> References: <20260518-magnetometer-fixes-post-pickup-v8-0-088d610108a0@gmail.com> In-Reply-To: <20260518-magnetometer-fixes-post-pickup-v8-0-088d610108a0@gmail.com> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko Cc: linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Joshua Crofts , Andy Shevchenko X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1779090641; l=3070; i=joshua.crofts1@gmail.com; s=20260422; h=from:subject:message-id; bh=BtLMic4EKbvo/TXyU+z5jFmNKa9TTxTHDNruILvxV+I=; b=0UloWUoGbdrlQwxATeNTnYybF/7f7C+qzSQkpdMzqszHagHBl+kuJKGpmnHXDtAG3Iy+n1zWT e6452MKzYmaCg3dK+fRbFDcCYrXLGtBWzVBPh1DJjAqzrO6PwZxdcKs X-Developer-Key: i=joshua.crofts1@gmail.com; a=ed25519; pk=Xd+UVoRPiiI0K3LHQ2XIcXmO0jvVuFTv9eTx3lgBphI= X-Endpoint-Received: by B4 Relay for joshua.crofts1@gmail.com/20260422 with auth_id=746 X-Original-From: Joshua Crofts Reply-To: joshua.crofts1@gmail.com From: Andy Shevchenko Make use of BIT() and GENMASK() where it makes sense. Signed-off-by: Andy Shevchenko Reviewed-by: Nuno S=C3=A1 Co-developed-by: Joshua Crofts Signed-off-by: Joshua Crofts --- drivers/iio/magnetometer/ak8975.c | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/drivers/iio/magnetometer/ak8975.c b/drivers/iio/magnetometer/a= k8975.c index a140d352bad663a138295dc0c44084a9a18a4c24..366d56a3f0355f9db3711e17e12= 15b1210f0c9b5 100644 --- a/drivers/iio/magnetometer/ak8975.c +++ b/drivers/iio/magnetometer/ak8975.c @@ -45,8 +45,7 @@ #define AK8975_REG_INFO 0x01 =20 #define AK8975_REG_ST1 0x02 -#define AK8975_REG_ST1_DRDY_SHIFT 0 -#define AK8975_REG_ST1_DRDY_MASK (1 << AK8975_REG_ST1_DRDY_SHIFT) +#define AK8975_REG_ST1_DRDY_MASK BIT(0) =20 #define AK8975_REG_HXL 0x03 #define AK8975_REG_HXH 0x04 @@ -55,15 +54,12 @@ #define AK8975_REG_HZL 0x07 #define AK8975_REG_HZH 0x08 #define AK8975_REG_ST2 0x09 -#define AK8975_REG_ST2_DERR_SHIFT 2 -#define AK8975_REG_ST2_DERR_MASK (1 << AK8975_REG_ST2_DERR_SHIFT) +#define AK8975_REG_ST2_DERR_MASK BIT(2) =20 -#define AK8975_REG_ST2_HOFL_SHIFT 3 -#define AK8975_REG_ST2_HOFL_MASK (1 << AK8975_REG_ST2_HOFL_SHIFT) +#define AK8975_REG_ST2_HOFL_MASK BIT(3) =20 #define AK8975_REG_CNTL 0x0A -#define AK8975_REG_CNTL_MODE_SHIFT 0 -#define AK8975_REG_CNTL_MODE_MASK (0xF << AK8975_REG_CNTL_MODE_SHIFT) +#define AK8975_REG_CNTL_MODE_MASK GENMASK(3, 0) #define AK8975_REG_CNTL_MODE_POWER_DOWN 0x00 #define AK8975_REG_CNTL_MODE_ONCE 0x01 #define AK8975_REG_CNTL_MODE_SELF_TEST 0x08 @@ -95,8 +91,7 @@ =20 #define AK09912_REG_ST1 0x10 =20 -#define AK09912_REG_ST1_DRDY_SHIFT 0 -#define AK09912_REG_ST1_DRDY_MASK (1 << AK09912_REG_ST1_DRDY_SHIFT) +#define AK09912_REG_ST1_DRDY_MASK BIT(0) =20 #define AK09912_REG_HXL 0x11 #define AK09912_REG_HXH 0x12 @@ -107,8 +102,7 @@ #define AK09912_REG_TMPS 0x17 =20 #define AK09912_REG_ST2 0x18 -#define AK09912_REG_ST2_HOFL_SHIFT 3 -#define AK09912_REG_ST2_HOFL_MASK (1 << AK09912_REG_ST2_HOFL_SHIFT) +#define AK09912_REG_ST2_HOFL_MASK BIT(3) =20 #define AK09912_REG_CNTL1 0x30 =20 @@ -117,8 +111,7 @@ #define AK09912_REG_CNTL_MODE_ONCE 0x01 #define AK09912_REG_CNTL_MODE_SELF_TEST 0x10 #define AK09912_REG_CNTL_MODE_FUSE_ROM 0x1F -#define AK09912_REG_CNTL2_MODE_SHIFT 0 -#define AK09912_REG_CNTL2_MODE_MASK (0x1F << AK09912_REG_CNTL2_MODE_SHIFT) +#define AK09912_REG_CNTL2_MODE_MASK GENMASK(4, 0) =20 #define AK09912_REG_CNTL3 0x32 =20 @@ -858,7 +851,10 @@ static const struct iio_chan_spec ak8975_channels[] = =3D { IIO_CHAN_SOFT_TIMESTAMP(AK8975_SCAN_TS), }; =20 -static const unsigned long ak8975_scan_masks[] =3D { 0x7, 0 }; +static const unsigned long ak8975_scan_masks[] =3D { + BIT(AK8975_SCAN_X) | BIT(AK8975_SCAN_Y) | BIT(AK8975_SCAN_Z), + 0 +}; =20 static const struct iio_info ak8975_info =3D { .read_raw =3D &ak8975_read_raw, --=20 2.47.3