From nobody Sun Apr 5 18:17:27 2026 Received: from mail-dl1-f47.google.com (mail-dl1-f47.google.com [74.125.82.47]) (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 04E7627603F for ; Thu, 19 Feb 2026 02:29:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771468181; cv=none; b=V/qPHeeqUxcSYwsLVO6KgS8YhiV7HFsOnZ9fo1D8ltEp/P/jGGOIIIh1vVp4yX1X0Lqx9x1dVWBMMuyHC44P0BQwBEm/gM7tEAPAvAgnt4UjHW0WqFkzoLT37vMh04KFvaNpVShtf0+2EYD5XkTKoC+ek7JJ8XEPPWEJrmFHFNg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771468181; c=relaxed/simple; bh=Yz9snSJF0jeyCudaLTFzwfAA3jyjKzrb0jhPuElnXuk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Jq5BjeGscvPvt6zpvv6bE/n8CfOXSBg4eo0zo0Khh/i2UePz2u1FgP6HlQDfk9WrNv4wuBTEOf/9t7QRX5Wm3FV10zbXcsNODkxz0uTWmFwl9Yu0lk64DY50DuQTuFNyaMqk3YSAaBCtj41myJ0hVaLpzgml4ui/zLtHUAfmdYI= 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=UtHtzM2l; arc=none smtp.client-ip=74.125.82.47 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="UtHtzM2l" Received: by mail-dl1-f47.google.com with SMTP id a92af1059eb24-126ea4e9694so1110383c88.1 for ; Wed, 18 Feb 2026 18:29:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1771468179; x=1772072979; 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=OuFP5v7SMXV4DVA+yxAHBbrT46M+siIg2POmogyVVsY=; b=UtHtzM2lxzp+aVqNpkpV0VGus6Ik+wkkq+fE+DX2axiIBVubjliikcWR6RnT2dUcbM L5905v9z7fjdbcyO5KhRYiS+5xxI0fTg2BJFkkJ2KbRZMwR0MNPYqE21HZe8DBLjG+YF h20X1XMVPgYmLOsTIFCHa1E31Kzm0oVMia/s/DNrpnYumrrUczikmryEVj9s5RA8iDmY 5O8ol0W9r3Iqk2+2YHVDy2pW+9ZNZMbbHob3y9J5bLALpXZsBwE1RmoijLcOF+mn3L8i u1/yAnwjuaedBiYcPipiPQz7LQ1eDejy8kyukMBw0LBgRvbAaHLWHMcN8Y3RosnB4yJi vc9g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771468179; x=1772072979; 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=OuFP5v7SMXV4DVA+yxAHBbrT46M+siIg2POmogyVVsY=; b=kkOiVQqpgcrFdNm39hKowAfaxWISeOIOEcT8ywiIEmtAt3kzeo1P8AH3PoiDr/BOaS e9yawDE6bo1QLn8hleX8PpdPvE6UvZtXdxCIyjfXv5cdO01Spu05VHuMyrA3wNNqMojM BeUIw1x9fl0UOAysNVmMEbO6/hyseiNwMKGGivpWzhDTv58CQ/SmAyF2GNj5HJE/XB/6 aEh0C0YL72G9973g6plyfVsWXZhR4XFDGZtwfwQu0tk2QjCYz3oiDDH6CjLZPsnXNP9i 3Tu4Fh70pB8Qt/AUsioOBisy145u5MTyWv21nppr8msstS0f2aJV2NhEpVFv5aFzVQ4H AlBA== X-Forwarded-Encrypted: i=1; AJvYcCWA3w8yZcp31fHymJDc7JDjQizGrgmljMjObfOAIRIpDMi4SHwSsNtByGNJe0r+xhCOw14pVGMwPPNP0kU=@vger.kernel.org X-Gm-Message-State: AOJu0YxZlQkCkqD2ylZIlYKJDFhrMeKobFxBj2EuJVQzLs7RWtXjXHtf VNbUAiI/mbDPUgZRDBckZxblCbOMwYbfpwpMB6QmO3QL/lnYoenO7Hzd X-Gm-Gg: AZuq6aLX3fcPXRG3zTma/q6mTFw8YfdEVICHhSzgFiKzC49A8GxhNCcFNTOj5ZZ1/Np I3f6MhBsJXS+BLQW+1ZTbJAFvCjJ1NI+C8aY6m6+Qik6zU/thVBZkYGb3roXV1D4zWzSHND1t5k 6nuQOxD9h5750WQEpYpZmx2JKSk7cCYoS9EXA6Sl5ngHZawaLuw3pLCL2W3TmVl0h22wfgH5sWP Tr898Nldxl/UhruM4Q7+G6AZcdA8jYaEkkET6C95WKm+2QQw8YM2UM+84819dr3D23l4Y/goBW9 qGZ0zdPlMQSG0vAMFhuwuRhriLqNoc+WejqxjUSPNQQdGKBs52eLzbn/kDG5QLeO4c+dClSQPGq nugUE8df89epJJupgbiXce32yxH2tRMfhqypsMYyQOOQa5rSMzewM183VMYMX2R0JbJ7+fcBLpv J84O3xjRJJ8nsoaWVUU9meR/ogX4BCxrIniYDJ3/ER6cXhyC3FDtjN8tO9+TFLlQQGV7zf6CJG1 UMFCfCJ3TF93lM= X-Received: by 2002:a05:7301:d19:b0:2ba:659f:2002 with SMTP id 5a478bee46e88-2babc3c8a4dmr8115517eec.15.1771468178933; Wed, 18 Feb 2026 18:29:38 -0800 (PST) Received: from dtor-ws.sjc.corp.google.com ([2a00:79e0:2ebe:8:265b:f5ad:9e03:677e]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2bacb577bcasm19609433eec.12.2026.02.18.18.29.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Feb 2026 18:29:38 -0800 (PST) From: Dmitry Torokhov To: Jonathan Cameron Cc: David Lechner , =?UTF-8?q?Nuno=20S=C3=A1?= , Andy Shevchenko , Linus Walleij , Bartosz Golaszewski , linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org Subject: [PATCH v2 3/4] iio: adc: ti-ads7950: switch to using guard() notation Date: Wed, 18 Feb 2026 18:29:27 -0800 Message-ID: <20260219022929.3558081-4-dmitry.torokhov@gmail.com> X-Mailer: git-send-email 2.53.0.335.g19a08e0c02-goog In-Reply-To: <20260219022929.3558081-1-dmitry.torokhov@gmail.com> References: <20260219022929.3558081-1-dmitry.torokhov@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: quoted-printable Content-Type: text/plain; charset="utf-8" guard() notation allows early returns when encountering errors, making control flow more obvious. Use it. Also variables that now only hold error codes (or 0) are renamed to "error" to make their purpose clearer. Signed-off-by: Dmitry Torokhov --- drivers/iio/adc/ti-ads7950.c | 105 ++++++++++++++++------------------- 1 file changed, 48 insertions(+), 57 deletions(-) diff --git a/drivers/iio/adc/ti-ads7950.c b/drivers/iio/adc/ti-ads7950.c index 2a7d4a1d9fa9..d31397f37ec4 100644 --- a/drivers/iio/adc/ti-ads7950.c +++ b/drivers/iio/adc/ti-ads7950.c @@ -306,18 +306,17 @@ static irqreturn_t ti_ads7950_trigger_handler(int irq= , void *p) struct iio_poll_func *pf =3D p; struct iio_dev *indio_dev =3D pf->indio_dev; struct ti_ads7950_state *st =3D iio_priv(indio_dev); - int ret; + int error; =20 - mutex_lock(&st->slock); - ret =3D spi_sync(st->spi, &st->ring_msg); - if (ret < 0) - goto out; + scoped_guard(mutex, &st->slock) { + error =3D spi_sync(st->spi, &st->ring_msg); + if (error) + break; =20 - iio_push_to_buffers_with_timestamp(indio_dev, &st->rx_buf[2], - iio_get_time_ns(indio_dev)); + iio_push_to_buffers_with_timestamp(indio_dev, &st->rx_buf[2], + iio_get_time_ns(indio_dev)); + } =20 -out: - mutex_unlock(&st->slock); iio_trigger_notify_done(indio_dev->trig); =20 return IRQ_HANDLED; @@ -326,22 +325,19 @@ static irqreturn_t ti_ads7950_trigger_handler(int irq= , void *p) static int ti_ads7950_scan_direct(struct iio_dev *indio_dev, unsigned int = ch) { struct ti_ads7950_state *st =3D iio_priv(indio_dev); - int ret, cmd; + int error; + int cmd; + + guard(mutex)(&st->slock); =20 - mutex_lock(&st->slock); cmd =3D TI_ADS7950_MAN_CMD(TI_ADS7950_CR_CHAN(ch)); st->single_tx =3D cmd; =20 - ret =3D spi_sync(st->spi, &st->scan_single_msg); - if (ret) - goto out; - - ret =3D st->single_rx; - -out: - mutex_unlock(&st->slock); + error =3D spi_sync(st->spi, &st->scan_single_msg); + if (error) + return error; =20 - return ret; + return st->single_rx; } =20 static int ti_ads7950_get_range(struct ti_ads7950_state *st) @@ -407,9 +403,9 @@ static int ti_ads7950_set(struct gpio_chip *chip, unsig= ned int offset, int value) { struct ti_ads7950_state *st =3D gpiochip_get_data(chip); - int ret; + int error; =20 - mutex_lock(&st->slock); + guard(mutex)(&st->slock); =20 if (value) st->cmd_settings_bitmask |=3D BIT(offset); @@ -417,47 +413,44 @@ static int ti_ads7950_set(struct gpio_chip *chip, uns= igned int offset, st->cmd_settings_bitmask &=3D ~BIT(offset); =20 st->single_tx =3D TI_ADS7950_MAN_CMD_SETTINGS(st); - ret =3D spi_sync(st->spi, &st->scan_single_msg); - - mutex_unlock(&st->slock); + error =3D spi_sync(st->spi, &st->scan_single_msg); + if (error) + return error; =20 - return ret; + return 0; } =20 static int ti_ads7950_get(struct gpio_chip *chip, unsigned int offset) { struct ti_ads7950_state *st =3D gpiochip_get_data(chip); - int ret =3D 0; bool state; + int error; =20 - mutex_lock(&st->slock); + guard(mutex)(&st->slock); =20 /* If set as output, return the output */ if (st->gpio_cmd_settings_bitmask & BIT(offset)) { state =3D st->cmd_settings_bitmask & BIT(offset); - goto out; + return state; } =20 /* GPIO data bit sets SDO bits 12-15 to GPIO input */ st->cmd_settings_bitmask |=3D TI_ADS7950_CR_GPIO_DATA; st->single_tx =3D TI_ADS7950_MAN_CMD_SETTINGS(st); - ret =3D spi_sync(st->spi, &st->scan_single_msg); - if (ret) - goto out; + error =3D spi_sync(st->spi, &st->scan_single_msg); + if (error) + return error; =20 state =3D (st->single_rx >> 12) & BIT(offset); =20 /* Revert back to original settings */ st->cmd_settings_bitmask &=3D ~TI_ADS7950_CR_GPIO_DATA; st->single_tx =3D TI_ADS7950_MAN_CMD_SETTINGS(st); - ret =3D spi_sync(st->spi, &st->scan_single_msg); - if (ret) - goto out; - -out: - mutex_unlock(&st->slock); + error =3D spi_sync(st->spi, &st->scan_single_msg); + if (error) + return error; =20 - return ret ?: state; + return state; } =20 static int ti_ads7950_get_direction(struct gpio_chip *chip, @@ -473,9 +466,9 @@ static int _ti_ads7950_set_direction(struct gpio_chip *= chip, int offset, int input) { struct ti_ads7950_state *st =3D gpiochip_get_data(chip); - int ret =3D 0; + int error; =20 - mutex_lock(&st->slock); + guard(mutex)(&st->slock); =20 /* Only change direction if needed */ if (input && (st->gpio_cmd_settings_bitmask & BIT(offset))) @@ -483,15 +476,14 @@ static int _ti_ads7950_set_direction(struct gpio_chip= *chip, int offset, else if (!input && !(st->gpio_cmd_settings_bitmask & BIT(offset))) st->gpio_cmd_settings_bitmask |=3D BIT(offset); else - goto out; + return 0; =20 st->single_tx =3D TI_ADS7950_GPIO_CMD_SETTINGS(st); - ret =3D spi_sync(st->spi, &st->scan_single_msg); + error =3D spi_sync(st->spi, &st->scan_single_msg); + if (error) + return error; =20 -out: - mutex_unlock(&st->slock); - - return ret; + return 0; } =20 static int ti_ads7950_direction_input(struct gpio_chip *chip, @@ -514,27 +506,26 @@ static int ti_ads7950_direction_output(struct gpio_ch= ip *chip, =20 static int ti_ads7950_init_hw(struct ti_ads7950_state *st) { - int ret =3D 0; + int error; =20 - mutex_lock(&st->slock); + guard(mutex)(&st->slock); =20 /* Settings for Manual/Auto1/Auto2 commands */ /* Default to 5v ref */ st->cmd_settings_bitmask =3D TI_ADS7950_CR_RANGE_5V; st->single_tx =3D TI_ADS7950_MAN_CMD_SETTINGS(st); - ret =3D spi_sync(st->spi, &st->scan_single_msg); - if (ret) - goto out; + error =3D spi_sync(st->spi, &st->scan_single_msg); + if (error) + return error; =20 /* Settings for GPIO command */ st->gpio_cmd_settings_bitmask =3D 0x0; st->single_tx =3D TI_ADS7950_GPIO_CMD_SETTINGS(st); - ret =3D spi_sync(st->spi, &st->scan_single_msg); - -out: - mutex_unlock(&st->slock); + error =3D spi_sync(st->spi, &st->scan_single_msg); + if (error) + return error; =20 - return ret; + return 0; } =20 static int ti_ads7950_probe(struct spi_device *spi) --=20 2.53.0.335.g19a08e0c02-goog