From nobody Sun Apr 5 16:27:58 2026 Received: from mail-dl1-f49.google.com (mail-dl1-f49.google.com [74.125.82.49]) (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 C2E2872618 for ; Thu, 19 Feb 2026 02:29:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771468179; cv=none; b=UrabIXxHUvZ0GtxEet73RBNuEc8XkABsTWznqF8HdhI8PC0isi71Ka44g1WgPr2RYKVbW43BnrBJWez0hCDhr/aWMMQ1tcrDGaiCspEznMVGxuq5nhDX1Xos4bjJxf4rBtZvqdGUhTBU1Y7Em1Dx8ziutsASV+mV6dd9D3SsLnQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771468179; c=relaxed/simple; bh=U85fY+I300/oFLus60isN6QH9G2vXciZReaIa9B6Y1M=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=BV9lVrUmG030pCCv0UuEpED2/2lpTk9FTo38uZYnky+wMmk3mKb2wK+kEia6FQipXJXfGUGfsOSUczeCyAyKw1aDNzuVNUBvRIF4SZV6Zk0RaZGKgYlaqti+G/2Y+O6XZg/jTUXbCjl8rCt+Q6rb2P9W/YflppAsNigZvwoq4Dc= 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=SkuWoMtM; arc=none smtp.client-ip=74.125.82.49 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="SkuWoMtM" Received: by mail-dl1-f49.google.com with SMTP id a92af1059eb24-1275750cf9cso422945c88.0 for ; Wed, 18 Feb 2026 18:29:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1771468177; x=1772072977; 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=DP7f7+vHuIRyxHFGE/u5+51f2GQdsjDkgx7ouhpfqiw=; b=SkuWoMtMkKT50I6DZMWwuI/wpFLK5pzabM7nDwjG5Ku4xxplFaEeMM3Mv/d4hXR+19 pqlfyvpj/h08XgByAVtMcwTXnHIIxrc5Qn2wpp5YKyNbk6l8+OYnC1pd+i2vSI40Iubk zynCla9cmjgWM0uU5lCAzZoLjmuyt6b0eCC3clnYyDHDUzlZMj9UzXICpxpdHjkNjN2G tKB14PDldLCd0w/O6iiJ98tTU9PXXMtQIBsaQ/IXs2ABZECETwvlHyOHBiBqjNzuobvO EoUfqn33gO2JVsMmQckcEOp6Vtj9GCVNAsnr5v4fi1t6JD8CDuttpEb8ptXu9wILqI09 4SQg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771468177; x=1772072977; 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=DP7f7+vHuIRyxHFGE/u5+51f2GQdsjDkgx7ouhpfqiw=; b=WWy0A+ayPntWv20up4F+RuedjtBn3Cdl5OTtduNFWKvgb5/Ru9wK1fsJ8XkLXqyaJc xbtlECu6jekRxHuMHSAZxHQLIqM0ZerEJ96JWkTIq8ITzWtZSihOsC/svrvUdW0eMNOv 2lRiMi+UN6IdUto62AMl2ZqutOTYKrIriGS8yaID+8LgB4mclCPJ3vETj0JuZ7fAGuxy nm0cRuGKgxYSsygXK5MWKiIyV6UuwRvLqdlCChGLL8IjfAzvV6MU6CLRMHQvqnaRgBbM kHP8trmqGoSZtn9L7oXUQ/bmaDJFcwuTJNFhMPnQrV33Jm7q/RYRB2+lxmnbn2WYouJ5 ksoA== X-Forwarded-Encrypted: i=1; AJvYcCVykl/RlU+rniHtz4+394AhNWak9Hcet/61CpIbPen4dKUgnQpkddfqDFstetAVnV8ouHB8V+1qzKXgW2g=@vger.kernel.org X-Gm-Message-State: AOJu0Yw47Kssohi15ivTGq6jCOXWwnoylUeV1P9hGCNHvHGeDBjtOvhY Uedlbm9TNNP6kONFR9sHuJRuXRG2CuSzKiiqGV+DNm2myWQxpQf3nwz6 X-Gm-Gg: AZuq6aLhHW9Z+RRz+aqoT6PpevLnlbWy6ncQJLMHooAdDXgdlfrqE6IF9CA2sZupPbV TazunEK8e7JIjVebqZ+mCJ37zmOaS/+IMi96cCfA46YkTWDkrNh8zdkGKq2O0JsZzeuqIGa76Fn s1sqPH96Yxrc3PtwsxENT100X9jcjNiv3Kcc1QugzPhcAGYJXgkdynW9NQrXxQbsyisKQ3G7xxw B0xAE4D68EDhkzZtTiwGZKHDWEO++umeAWe3044e6laLFGWzzqUIzXnmB0TC+yaKz29bEa8cIvP adjkiJLddsjIXkPGey9LxZ/bAlA0EjcGp1KsJzeDgNfCEV7SgLtlzjg2N6g535XAaHWvHHdNhZw L7YVRdV8oCEU1o4QIhxsGoNR1qtGoR4DwjzmxGSOmaPo9pm+MGxW9bt3NaHeIhutcL3blLStQkZ y8JNKvaXBw1Lx06R3MXz1SmqqRhnLh7eFw7IbrzKAKFFiFY/XE4DtVjW7jVBgQ66bBnJ4qypnVq 7xH1c16myWcYAM= X-Received: by 2002:a05:7022:6b8e:b0:119:e56c:18be with SMTP id a92af1059eb24-1273982a33bmr6911896c88.38.1771468176909; Wed, 18 Feb 2026 18:29:36 -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.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Feb 2026 18:29:36 -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 1/4] iio: adc: ti-ads7950: normalize return value of gpio_get Date: Wed, 18 Feb 2026 18:29:25 -0800 Message-ID: <20260219022929.3558081-2-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" The GPIO get callback is expected to return 0 or 1 (or a negative error code). Ensure that the value returned by ti_ads7950_get() for output pins is normalized to the [0, 1] range. Signed-off-by: Dmitry Torokhov Reviewed-by: Andy Shevchenko Reviewed-by: Bartosz Golaszewski Reviewed-by: Linus Walleij --- drivers/iio/adc/ti-ads7950.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/iio/adc/ti-ads7950.c b/drivers/iio/adc/ti-ads7950.c index bbe1ce577789..b8cc39fc39fb 100644 --- a/drivers/iio/adc/ti-ads7950.c +++ b/drivers/iio/adc/ti-ads7950.c @@ -433,7 +433,7 @@ static int ti_ads7950_get(struct gpio_chip *chip, unsig= ned int offset) =20 /* If set as output, return the output */ if (st->gpio_cmd_settings_bitmask & BIT(offset)) { - ret =3D st->cmd_settings_bitmask & BIT(offset); + ret =3D (st->cmd_settings_bitmask & BIT(offset)) ? 1 : 0; goto out; } =20 --=20 2.53.0.335.g19a08e0c02-goog From nobody Sun Apr 5 16:27:58 2026 Received: from mail-dl1-f51.google.com (mail-dl1-f51.google.com [74.125.82.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 B7D9026ED3F for ; Thu, 19 Feb 2026 02:29:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771468179; cv=none; b=arYmxl4pSInfnnFt3Rb7IeFgw3e/NKofv5kbNd2lqVFPNf8fnYNciJT0Id2j+M80ycfw9uIQVPL0c2nGi+tgskc7hBBJTVtdR5T49dyHB1ZPfW6MogXkMVjGofDLMeeVvR9EPni80VAaO5X7joyOZNv6tZJz6HzXlziTLrznULQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771468179; c=relaxed/simple; bh=2ptV1Xx56QfDBrLdYoSATcUoNP/8s/g1i+FnXCc7fjY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=llYFBMJJRxs656CCYthiU6engng7u0sDWQozepSBzQRuFYlXQ87Izcj32dlDZcCw4Z88AlhXdtSAvefnm8gFBuuV+QSta4TV85WIBxrzaoilkJbAOVTTR74q551jLoj1ah5ERYVHBb9WgiFDc2Ox37QQgYk9MsPPWxhpXelwrG8= 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=TGgnh/Bo; arc=none smtp.client-ip=74.125.82.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="TGgnh/Bo" Received: by mail-dl1-f51.google.com with SMTP id a92af1059eb24-12721cd256bso463466c88.1 for ; Wed, 18 Feb 2026 18:29:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1771468178; x=1772072978; 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=3VoJX5vAwTEOYnmz7o7D9xEfXbcGfOzpGSFIbfxsNUg=; b=TGgnh/Boe6QQ+iF+sZfeqDa9Wi4yFH1/5ElXDenkc7mwKG37f88y9geMJZXtsAEK19 b8HaQpzDuL9S4AEd7jmuWYeKLWElhJmXerEusM0ya1zkLhd+yxzWaewXK9+CRdelDtBe a4X/ivCm0IhyfuVxU78C0ZLgO1JT2WwPMOZcqKwbfCNz/B4sHVeSrHjZvfrSizHPnfZt Ub6Cu36wgSM0/sA6dsx43AdUN5OGh52nsFBLmXU00dVdc5xeKWFp0rJBHZLDt932ZoWM as9GuBhog2TyFF+7s84/HjheYU6VOx4eqs1RZRkQHT+LU976XMXKrmVlPSlOMakiUm8a QD4w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771468178; x=1772072978; 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=3VoJX5vAwTEOYnmz7o7D9xEfXbcGfOzpGSFIbfxsNUg=; b=QP0j1Tom3LwEfYozemIlfyy6VrdJXbRCKBJsLHlz7KiRVy7N9oHgQ7uP6oAISq5CE1 En5sMqPmdALPoZ3ff41ngm+eZBjS2Y88xlVadAiC+NMepY6Vd+1xmpHjqSAxFm3nPUZ/ awpZA5SpDbnx/ClFtAFh0z/5Oj2zaOeEkiMjxMrClh2TOVhIZwtakmg3uiFQAy8nvgh4 gCUad23MudwIxQpPbDzrpG8qru6OoasQDNVcxnCHppavc/t0PAiE4PBAo5pysUbdySZd JpBjLQeH0LeW6psgTCxHOTEwI3UM6YRlR2fh3X2LCzvB+pcc7oCPBR7SwYFcLHzMAjTP Ylow== X-Forwarded-Encrypted: i=1; AJvYcCVfOfw7axjHs5lyxA7PtsHP63yBjuHJtUVgycCFVVN83yY1PaInlbp7BwMvRSDzVyBFDD33MTDFyzZmqCg=@vger.kernel.org X-Gm-Message-State: AOJu0Yzz2iYQSGRSrDOv0glkqw+1Nkj+bqfhMzbYhwQbN5OGOI1EFbJw q8CxWcCmNfIuDD0oj6Yc/ipKXbLHfd0/nIKH4Dw1sAa9jZylE47JI1oX X-Gm-Gg: AZuq6aKxp3nnQmrxUPpTRLFwC6E6esaV8/ifOzidks1qcb0zyn9XYcnSL8W4SL3uXga kCUUYiK5ghNq8XS2L+ESuRyROPSNo6iqXg2jgqtKOOfe/SLYkiSegeO6qBVdf2XHDO9yz6McJPS /S7/m2jiaggTd57EQm10q+y8y4wKD3u3d+SVHkNAqg8Na/srOh5lXX/7xZbatxm1V7g3WUTsEkG yFqRUJP2+2UbjztePa8QU1Og9eGCqr/oE/DselxpMAYoXZsdc93Ux2F55zHrlYcQkzIkOyL+I5t jvprze93PQ0SbrvStKfnfPyo6oiTMQ25uBWnzR58uBjBI+A0Ujg6Ro3TJ+tjZM6OJV8FW/5/sl/ QLdRmWC9HQ7fjFr4CiLqlZTNoCh0ed76DuIGgdlbBK1fXIBq++zajvhqkea8PjGugb/aaJ7e3dG jYys3BRIOMQ/0FzPdFr9xProHGz75w4Fn2wBBw227iwSU+kv3rQw4bLHRpPTTDORNnGqDkvSJRN js0U2FKG3sc+ew= X-Received: by 2002:a05:7022:160a:b0:11a:2f10:fa46 with SMTP id a92af1059eb24-12741ae3323mr7734818c88.0.1771468177903; Wed, 18 Feb 2026 18:29:37 -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.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Feb 2026 18:29:37 -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 2/4] iio: adc: ti-ads7950: do not clobber gpio state in ti_ads7950_get() Date: Wed, 18 Feb 2026 18:29:26 -0800 Message-ID: <20260219022929.3558081-3-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" GPIO state was inadvertently overwritten by the result of sip_sync, reuniting in ti_ads7950_get() only returning 0 as gpio state (or error). Fix this by introducing a separate variable to hold the state. Reported-by: David Lechner Signed-off-by: Dmitry Torokhov --- drivers/iio/adc/ti-ads7950.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/drivers/iio/adc/ti-ads7950.c b/drivers/iio/adc/ti-ads7950.c index b8cc39fc39fb..2a7d4a1d9fa9 100644 --- a/drivers/iio/adc/ti-ads7950.c +++ b/drivers/iio/adc/ti-ads7950.c @@ -427,13 +427,14 @@ static int ti_ads7950_set(struct gpio_chip *chip, uns= igned int offset, static int ti_ads7950_get(struct gpio_chip *chip, unsigned int offset) { struct ti_ads7950_state *st =3D gpiochip_get_data(chip); - int ret; + int ret =3D 0; + bool state; =20 mutex_lock(&st->slock); =20 /* If set as output, return the output */ if (st->gpio_cmd_settings_bitmask & BIT(offset)) { - ret =3D (st->cmd_settings_bitmask & BIT(offset)) ? 1 : 0; + state =3D st->cmd_settings_bitmask & BIT(offset); goto out; } =20 @@ -444,7 +445,7 @@ static int ti_ads7950_get(struct gpio_chip *chip, unsig= ned int offset) if (ret) goto out; =20 - ret =3D ((st->single_rx >> 12) & BIT(offset)) ? 1 : 0; + state =3D (st->single_rx >> 12) & BIT(offset); =20 /* Revert back to original settings */ st->cmd_settings_bitmask &=3D ~TI_ADS7950_CR_GPIO_DATA; @@ -456,7 +457,7 @@ static int ti_ads7950_get(struct gpio_chip *chip, unsig= ned int offset) out: mutex_unlock(&st->slock); =20 - return ret; + return ret ?: state; } =20 static int ti_ads7950_get_direction(struct gpio_chip *chip, --=20 2.53.0.335.g19a08e0c02-goog From nobody Sun Apr 5 16:27:58 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 From nobody Sun Apr 5 16:27:58 2026 Received: from mail-dy1-f175.google.com (mail-dy1-f175.google.com [74.125.82.175]) (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 C4F2E274B42 for ; Thu, 19 Feb 2026 02:29:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.175 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771468182; cv=none; b=nVV/O17r0qImRWQtOr6KyAAGdDgMXXJL8zQT7mDqMzykE2ytCrGTlyHrWAz1Eoz/4ipIYIe5gNyaIaeCbhSvMasI7GeKXwHS7edfDl3/iwyss0A7tDzDMi9bdcyDWjrRtlX5P0SxmrBwzyJvCdKe4BSJkT+YlTjj7g5si1mG6/Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771468182; c=relaxed/simple; bh=kauiL/ONWk2RY4xVUjE4kT+PlTVn5lZxv/b4OFnIWtQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=blyI24HmpngXxZx4GeB/bTlrDHYLpHG7mObplbwA39lrapWe1dwzmy88qZbE4dmqRgBdRoqMMwwku7r3ScghyqJ6geeuloXEYDpCHFSXMgA2WhTJ7ssKoCm8tNsaCJMOE5dDTkeGscGKIwvCY7H/uPGj3mCRpKtBqM9zwba2K6Q= 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=irb+B+g5; arc=none smtp.client-ip=74.125.82.175 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="irb+B+g5" Received: by mail-dy1-f175.google.com with SMTP id 5a478bee46e88-2baa098ffc6so446227eec.0 for ; Wed, 18 Feb 2026 18:29:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1771468180; x=1772072980; 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=M1ZTHJlxuM3aGdOYJnVvaMVfaR/Kwe29wbgQ93rKb+E=; b=irb+B+g5bq5qwaeDebSv+F7Bj1xwGldMkWuC4sXz422pLm0SzMem7PJCD2Db1XZx6A 5XdBeXxCCh4zrF21i9sNCuPPx4M//RjdIUWxwGFbUfI/bNr2W+DLirSlACbvdqHvhxvk GKueIoU2nXMDL0EJsPqaA2Um0rYIgMUiD3HOFQW71RVx10wsy262odbZWa8bgFHMt6Xn n4xKdvRp9ST4EyNX9yksq71cMwtcVPq2qRFhJ9S6F6V+bilS8CH7Oq7NaW1bvYGSTVOb RFWbcJ18/uN5oum+TCvGnVCeSq7HeqIj1D45ImcpRREW+HO9Fw8GIUTPMeC3HBox1JbP 1KoQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771468180; x=1772072980; 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=M1ZTHJlxuM3aGdOYJnVvaMVfaR/Kwe29wbgQ93rKb+E=; b=gCGnnLptocx7PMyUcJ5Uo1bViBtpONZySz5PXQRWKPDTE+vdx1LoVJTxX0vriz+diW kI2UQs2I9+ZAwfkVSBx4C4NGpjrxsPhpqS7xcO0X+vhC1TiTEIUnXXBBpmh1dbjw4Kb9 fl8B1nfCHM7UQKG2eZycYLDFp+2QcTdarfEBXQWLuA5b1/xdJxx6tmG6rkmXQDtHSjLa Dv9A9RztOJBo/WHDwy3CBcacThZ6qGKnubHZVb3jsPV1A73nwWHFiGUYjQtz1R8sWesG R2MCW8jN0mlZBKrHcltAQ3OM8c1w5OXfTEpdetAjFSGBWCEdlfNDsCACfceWGg0m6q2a W+4w== X-Forwarded-Encrypted: i=1; AJvYcCUQB3qnJiTzJ9RDamNbwbSa9r4QYnKaTE5DmLurCDu35I6sdtPjamTeJFZuCh2tG3va5eJ2BVt11hQWNhk=@vger.kernel.org X-Gm-Message-State: AOJu0YxLz19uLpkv0VMPdRnTWzUcYgshPdbfxM2BKtPJZfKz9pbuNzFS PBUAv0VYl0cdnYINVi0+PCC8fm2peUC6em82cx9xkgvpdnlXR/xrgWHq X-Gm-Gg: AZuq6aJShvKmjO3o0oYOWvlYy631R9onAPSJftHpd2DPIcmciNlOjcP5LLCMpb1fELM xxvsP+gXkgTFGlT8bJfTtHzFWTO9llXYpZvBxrZVzi86mgfRkzveZGO8ioMHVKturJNElDaYslD HDUokFs/FVbqfmf1DCDMUVyzXMKfawP1ydW43M3apttDwcp1a+B2zFqI54IyNN8tsm2z93lX4MN fFkodsI8Rs1j3y/dXwGLB0wTDD376bLsEXcnQ6SnzpS+zvmglqNkihsYI7KcAm+An0JPYhGF0RX W1HKKzCrbufkRcLkh7g07JqXjN9hfU9MRNru1OodrR30Ijx6N56GAKR4dT2kSmWN/shAY0bfOWM 3qFmBJFAlxixz2kTZiEEJM2W/9hHDnQZxzai5EvBJtEX71DnrlB1szB3oBQteiowcI6O0LZih9z iaIYqAfz1Zt2a4Um5tTBXirUa1UZX0jUv8IR+OP4LWBbgKuLwdB5hFx7BJSQ00bFySNiXKC2/j3 ERL0lpWjUZVimJgqqcNv7Zcmg== X-Received: by 2002:a05:7301:d19:b0:2ba:6d87:cf68 with SMTP id 5a478bee46e88-2baba05b5c2mr9113620eec.16.1771468179912; Wed, 18 Feb 2026 18:29:39 -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.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Feb 2026 18:29:39 -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 4/4] iio: adc: ti-ads7950: complete conversion to using managed resources Date: Wed, 18 Feb 2026 18:29:28 -0800 Message-ID: <20260219022929.3558081-5-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" All resources that the driver needs have managed API now. Switch to using them to make code clearer and drop ti_ads7950_remove(). Signed-off-by: Dmitry Torokhov --- drivers/iio/adc/ti-ads7950.c | 98 +++++++++++++++--------------------- 1 file changed, 40 insertions(+), 58 deletions(-) diff --git a/drivers/iio/adc/ti-ads7950.c b/drivers/iio/adc/ti-ads7950.c index d31397f37ec4..1c53e000bdcc 100644 --- a/drivers/iio/adc/ti-ads7950.c +++ b/drivers/iio/adc/ti-ads7950.c @@ -528,19 +528,26 @@ static int ti_ads7950_init_hw(struct ti_ads7950_state= *st) return 0; } =20 +static void ti_ads7950_power_off(void *data) +{ + struct ti_ads7950_state *st =3D data; + + regulator_disable(st->reg); +} + static int ti_ads7950_probe(struct spi_device *spi) { struct ti_ads7950_state *st; struct iio_dev *indio_dev; const struct ti_ads7950_chip_info *info; - int ret; + int error; =20 spi->bits_per_word =3D 16; spi->mode |=3D SPI_CS_WORD; - ret =3D spi_setup(spi); - if (ret < 0) { + error =3D spi_setup(spi); + if (error) { dev_err(&spi->dev, "Error in spi setup\n"); - return ret; + return error; } =20 indio_dev =3D devm_iio_device_alloc(&spi->dev, sizeof(*st)); @@ -598,36 +605,36 @@ static int ti_ads7950_probe(struct spi_device *spi) mutex_init(&st->slock); =20 st->reg =3D devm_regulator_get(&spi->dev, "vref"); - if (IS_ERR(st->reg)) { - ret =3D dev_err_probe(&spi->dev, PTR_ERR(st->reg), + error =3D PTR_ERR_OR_ZERO(st->reg); + if (error) + return dev_err_probe(&spi->dev, error, "Failed to get regulator \"vref\"\n"); - goto error_destroy_mutex; - } =20 - ret =3D regulator_enable(st->reg); - if (ret) { - dev_err(&spi->dev, "Failed to enable regulator \"vref\"\n"); - goto error_destroy_mutex; - } + error =3D regulator_enable(st->reg); + if (error) + return dev_err_probe(&spi->dev, error, + "Failed to enable regulator \"vref\"\n"); =20 - ret =3D iio_triggered_buffer_setup(indio_dev, NULL, - &ti_ads7950_trigger_handler, NULL); - if (ret) { - dev_err(&spi->dev, "Failed to setup triggered buffer\n"); - goto error_disable_reg; - } + error =3D devm_add_action_or_reset(&spi->dev, ti_ads7950_power_off, st); + if (error) + return error; =20 - ret =3D ti_ads7950_init_hw(st); - if (ret) { - dev_err(&spi->dev, "Failed to init adc chip\n"); - goto error_cleanup_ring; - } + error =3D devm_iio_triggered_buffer_setup(&spi->dev, indio_dev, NULL, + &ti_ads7950_trigger_handler, + NULL); + if (error) + return dev_err_probe(&spi->dev, error, + "Failed to setup triggered buffer\n"); =20 - ret =3D iio_device_register(indio_dev); - if (ret) { - dev_err(&spi->dev, "Failed to register iio device\n"); - goto error_cleanup_ring; - } + error =3D ti_ads7950_init_hw(st); + if (error) + return dev_err_probe(&spi->dev, error, + "Failed to init adc chip\n"); + + error =3D devm_iio_device_register(&spi->dev, indio_dev); + if (error) + return dev_err_probe(&spi->dev, error, + "Failed to register iio device\n"); =20 /* Add GPIO chip */ st->chip.label =3D dev_name(&st->spi->dev); @@ -642,36 +649,12 @@ static int ti_ads7950_probe(struct spi_device *spi) st->chip.get =3D ti_ads7950_get; st->chip.set =3D ti_ads7950_set; =20 - ret =3D gpiochip_add_data(&st->chip, st); - if (ret) { - dev_err(&spi->dev, "Failed to init GPIOs\n"); - goto error_iio_device; - } + error =3D devm_gpiochip_add_data(&spi->dev, &st->chip, st); + if (error) + return dev_err_probe(&spi->dev, error, + "Failed to init GPIOs\n"); =20 return 0; - -error_iio_device: - iio_device_unregister(indio_dev); -error_cleanup_ring: - iio_triggered_buffer_cleanup(indio_dev); -error_disable_reg: - regulator_disable(st->reg); -error_destroy_mutex: - mutex_destroy(&st->slock); - - return ret; -} - -static void ti_ads7950_remove(struct spi_device *spi) -{ - struct iio_dev *indio_dev =3D spi_get_drvdata(spi); - struct ti_ads7950_state *st =3D iio_priv(indio_dev); - - gpiochip_remove(&st->chip); - iio_device_unregister(indio_dev); - iio_triggered_buffer_cleanup(indio_dev); - regulator_disable(st->reg); - mutex_destroy(&st->slock); } =20 static const struct spi_device_id ti_ads7950_id[] =3D { @@ -714,7 +697,6 @@ static struct spi_driver ti_ads7950_driver =3D { .of_match_table =3D ads7950_of_table, }, .probe =3D ti_ads7950_probe, - .remove =3D ti_ads7950_remove, .id_table =3D ti_ads7950_id, }; module_spi_driver(ti_ads7950_driver); --=20 2.53.0.335.g19a08e0c02-goog