From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-ej1-f51.google.com (mail-ej1-f51.google.com [209.85.218.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8D0D73B6343 for ; Tue, 21 Apr 2026 10:07:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.51 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776766053; cv=none; b=dBcukUmkE0vhTgDE/ryuLoIdeK8LUIwhXxO7EtUxaecvTMvnBYXJ+vWIS4cSYp8IRwoTiULrHmqV281EfCo9yZDr5DWgFcJP84DikvsPVdFSoEpzCtcZIRf6Ez8bsl4ETVGvaY7V8lgrF7hfJD2RooYwym3putNavbFF38FgXY0= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776766053; c=relaxed/simple; bh=uGnCrDcHqdMBp00UrXvV1RoASwvo3lyR3NSMunjbafo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Pl2da9N6jJy8u9oTACxG+RbMFTdeytjjdJVAb43aHoZFIyLVzrcDFv6e4ZHaJZW6xZptQS155lukQXi9kcUwmfFlGsCXVO7CEwrpwFyl+EGjz3RwnUxmatKdJTg2VKy+tPfHc3QGH4n+SUyYy9J8F1c+767swqIV28DPnwIgKxc= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=p6teRMKx; arc=none smtp.client-ip=209.85.218.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="p6teRMKx" Received: by mail-ej1-f51.google.com with SMTP id a640c23a62f3a-b9d9971d059so581741666b.2 for ; Tue, 21 Apr 2026 03:07:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1776766050; x=1777370850; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Br2jImMMYeE7t2tYM9ZpVum10sRJKQ+6TUXHeuHOpkg=; b=p6teRMKxN98FSJAflunBFpu322PbuzrLwwrK/rVQK3GkN7ral0wJZ6cd+80uUzgOlP zeBtoFhlDDVLFg/FKVCSdWTZLrzVgMqIWDsSWU72LInqRfQliv0nEC+6RH/NYkdGZ1sz +NvteHVDIcWAXAGsXlC/Dy0Hx1jw1rE6xTAB59q3rSMVwTseqrCOodY3pIRbv76XDJQb LTIFGqtEYi/DW6pO0u3Mf7IXaxAMtvBqTyyyEWVSzkNs/oduOWpdKCd+IaKo5/efdV3T cCWtIhiEWk0DO+si9oOI1ol7f7MfDxzEWqxOqnRO/7w/qpmEYJU8BHyvK8TlxKstQgtj GDJA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776766050; x=1777370850; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=Br2jImMMYeE7t2tYM9ZpVum10sRJKQ+6TUXHeuHOpkg=; b=XpI18MQ/WBCM5aqYAFpP4HU6UzvLFSCsm61NGHPb+4HtR4U9dj3CDwK2KFG8AhZtf1 0OMdRffe2zynrytDN3k6kUTE3hsw2K6OVUMzCnpbkI9v1vRoHUDxo9XCxGxzoidayfNn uF4t95W/HH9eTr80W1FEGKq5O1iVtb2YoPaoWVySdX+mpNTufZHH8xHTq0ih1DaAjkgZ C9/H1rvb8TMPUMab9GtOizkleS7METiVIP0NteKT4srfbRa2+mGBKxidvoOXCCd6bkOs Qf0mCZpZA9q72oKJZwHQoLE+xRk5c5aetS9yqxleqUh6PsgBpU1j4yGvU9ZQF04LcwHo CqMw== X-Forwarded-Encrypted: i=1; AFNElJ8XUZ1AEtaCVVzY8Ebq5/gkIr598wLXkFKnoA/pG0AdsHw/zJVMrFDYCuG3nxo9uOZJ67DPTmO2xhm54VI=@vger.kernel.org X-Gm-Message-State: AOJu0YxSM+vH7sEFY6zxvw6Ry3CAntLy8/EY9OcLKXCOg/vhi3LELjp4 nc1qZR0NPw5PXE+oBY87Ss9A4G4FT/RHf8Z+xCok7M3lqw77WxJmiDVU X-Gm-Gg: AeBDiesL9F4TvFj0ra7lPoLGxfVk78ae4CPA7fHhizlmlnXW0Plxh44d0+AVNjN30Lj ot+pfF7B0MPr9qvP91dqkgNCZcm2CJfUejEtKjikhoZfZWomlHEhpp1h1eIZx8aAnsEPN/hUS3L 0WySl+t0X/PrPiZijr/WIV4gVaIsBgSBF7AJZn1WSx69s6OW0wnaYyS2rqRF5VGnAPaCvOFf34q nSVncXC6acroHM2ZAwob7dKEjrMsPNkWXVSd9DPTW7inK80myxIqr9+gusMdQq63psecFKnvbDP lcqC/BmN3BTf4K+mC2w6QtwrVCLzPd/hpk88NosM8vUn4idyTdV4iAKdm5A/swC3eigy/Wmfsb/ T+1TnUym+/LE+gbPk1bB9nBfZHsecp0qrC4E8uhCG4iZvfykvn58maUTyv9rhQgGn9rf+Oi55cs sQ/chvpTcPKqOgScgKO9JIFU3Zu2bUExe1yQ02TQDBvrjIZWPF5pVKAGenDESYf3nMZiHAWotVT RRQMOEyjWUP9C+VPgZloNgRzPbXRqtRxCC3Oc5L4m7Jeygn1lDMX5Qg1l7lIsN7WHN1my1Rw1X2 Tno9+E8qcTjEXksapSJ4qqiK0AYN+4Z0IVoyJY2SzosUVVfTtGAtoQhA8PknntuaJkjZOTNR6Cq 2gcOjnE0tCF6lDLPXOC8x9QTOCZSJB7gsisXzuzcNuwwkxohECYgCvlRB92w+rUkEExJXGXJkbB 8NvgRsoznhk+24rfC+7Q== X-Received: by 2002:a17:906:f593:b0:ba5:234:13cb with SMTP id a640c23a62f3a-ba502347802mr760983166b.4.1776766049603; Tue, 21 Apr 2026 03:07:29 -0700 (PDT) Received: from cs-280612103108-default.europe-west4-a.c.od237066db22328bb-tp.internal (238.77.147.34.bc.googleusercontent.com. [34.147.77.238]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ba4550468d6sm428078766b.52.2026.04.21.03.07.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Apr 2026 03:07:29 -0700 (PDT) From: Joshua Crofts To: jic23@kernel.org Cc: dlechner@baylibre.com, nuno.sa@analog.com, andy@kernel.org, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Joshua Crofts Subject: [PATCH v2 4/4] iio: magnetometer: ak8975: modernize polling loops with iopoll() macros Date: Tue, 21 Apr 2026 10:07:22 +0000 Message-ID: <20260421100722.1296-5-joshua.crofts1@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260421100722.1296-1-joshua.crofts1@gmail.com> References: <20260421100722.1296-1-joshua.crofts1@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit The driver currently uses while loops and msleep() for polling during conversion waits. Replace the custom polling loops with readx_poll_timeout() and read_poll_timeout() macros from . This reduces boilerplate, standardizes timeout handling and improves overall code readability, keeping the original timing and error behaviour. Assisted-by: Gemini:3.1-Pro Signed-off-by: Joshua Crofts --- drivers/iio/magnetometer/ak8975.c | 44 ++++++++++++++----------------- 1 file changed, 20 insertions(+), 24 deletions(-) diff --git a/drivers/iio/magnetometer/ak8975.c b/drivers/iio/magnetometer/ak8975.c index d0d95d3914a..1b9386b7521 100644 --- a/drivers/iio/magnetometer/ak8975.c +++ b/drivers/iio/magnetometer/ak8975.c @@ -21,9 +21,11 @@ #include #include #include +#include #include #include #include +#include #include #include @@ -653,17 +655,15 @@ static int ak8975_setup(struct i2c_client *client) static int wait_conversion_complete_gpio(struct ak8975_data *data) { struct i2c_client *client = data->client; - u32 timeout_ms = AK8975_MAX_CONVERSION_TIMEOUT; int ret; + int val; /* Wait for the conversion to complete. */ - while (timeout_ms) { - msleep(AK8975_CONVERSION_DONE_POLL_TIME); - if (gpiod_get_value(data->eoc_gpiod)) - break; - timeout_ms -= AK8975_CONVERSION_DONE_POLL_TIME; - } - if (!timeout_ms) { + ret = readx_poll_timeout(gpiod_get_value, data->eoc_gpiod, val, + val != 0, + AK8975_CONVERSION_DONE_POLL_TIME * USEC_PER_MSEC, + AK8975_MAX_CONVERSION_TIMEOUT * USEC_PER_MSEC); + if (ret) { dev_err(&client->dev, "Conversion timeout happened\n"); return -EINVAL; } @@ -678,30 +678,26 @@ static int wait_conversion_complete_gpio(struct ak8975_data *data) static int wait_conversion_complete_polled(struct ak8975_data *data) { struct i2c_client *client = data->client; - u8 read_status; - u32 timeout_ms = AK8975_MAX_CONVERSION_TIMEOUT; int ret; + int val; /* Wait for the conversion to complete. */ - while (timeout_ms) { - msleep(AK8975_CONVERSION_DONE_POLL_TIME); - ret = i2c_smbus_read_byte_data(client, - data->def->ctrl_regs[ST1]); - if (ret < 0) { - dev_err(&client->dev, "Error in reading ST1\n"); - return ret; - } - read_status = ret; - if (read_status) - break; - timeout_ms -= AK8975_CONVERSION_DONE_POLL_TIME; + ret = read_poll_timeout(i2c_smbus_read_byte_data, val, val != 0, + AK8975_CONVERSION_DONE_POLL_TIME * USEC_PER_MSEC, + AK8975_MAX_CONVERSION_TIMEOUT * USEC_PER_MSEC, + true, + client, data->def->ctrl_regs[ST1]); + if (val < 0) { + dev_err(&client->dev, "Error in reading ST1\n"); + return val; } - if (!timeout_ms) { + + if (ret == -ETIMEDOUT) { dev_err(&client->dev, "Conversion timeout happened\n"); return -EINVAL; } - return read_status; + return val; } /* Returns 0 if the end of conversion interrupt occurred or -ETIME otherwise */ -- 2.47.3