From nobody Mon Apr 6 14:57:27 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 6315031B833 for ; Mon, 6 Apr 2026 04:39:39 +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=1775450383; cv=none; b=qjQh57G/cbGaXnnHH4C35XCKq+pXSCmYMJBOo+EpqMHVuB/WuTCqvM0gmNexh71xQYfaLPMr757uto0r6ZX9w7LARd1Uh3QcBFsYNHa7RYMBWN1piJpnn/DenCqDEnG8CA7eOhgeSICshZPT3Xt7P3EJdph3ipOL8lNk6SA90Bg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775450383; c=relaxed/simple; bh=q1ErVgV21ILDuUcdhUgtkkx+/oTMzLm9AIurDmszr/g=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=a2qxlP6F22ngwpow8SqJrL1iJ2vleelzUjzHb7MKuUuR1W7WdBTVB8nCv3CgBNcyFhmNYPu7gPq50VZQbjzFAV+hxWRxtV69x+0/4BnKqbjjO2PQGfkPr61ceMAcOWnPte8TBAV2jHwbi4HUStTxN/UxG0xy3wN+29oDbLc8Ens= 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=VybCdcSP; 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="VybCdcSP" Received: by mail-dl1-f49.google.com with SMTP id a92af1059eb24-12a74039dc6so2519249c88.0 for ; Sun, 05 Apr 2026 21:39:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1775450376; x=1776055176; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=muAbhbsfMeNqO7iyxZwi7/vPm//pj1ujL1kw3AyjdRw=; b=VybCdcSPDY3l8Sdjo4ZN7cbq2f87d0EGqYZ0p3gLfuWSf5tzRsPZEpP/jAYnpYBhxI fdDZvi9Y7od3B/wUNsP+X+XCsaVuBFwCMaRKXIVteOX56zp1wxq/PbOHqwPajucC66Rf Cm52vQsMife9df5FFJGDrf7YvG9aLeZyO0SFM82icX7p60A3J88Z9Vbw5ZLYzDEnsyl5 Z8M73TOrfL/4Da/+J76ScnaXQ2GdPR6/wGz+ydODIh4wrBR8z4fpEgmPrKaAW01WhEkO pcIKN8jpdtDmuwYGns3XjG0LnzyY/lmIUeW9a4xyQeHoDeOhZk69HhEZCg7rlfaa2+NH qwbw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775450376; x=1776055176; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=muAbhbsfMeNqO7iyxZwi7/vPm//pj1ujL1kw3AyjdRw=; b=Vtu/wqqYJi+savd7Dgq4FHVH2S5XDNZ54qya5f9KkRDLgOa1qjc2g3zL16RV9+efZG alH6Yu5JHrvktKTYECHrmY9gxrMXzb/FCZUZQxOq/0jMmq9VduYTIZowP6WUZy5S1qxF dd7qLwG3rmsXfdQzNxx3Awz8Kg6jPzQZ5t3u6UfYFYzXkRczw34/zzTgU5E2IMm5bR6V GJEJvxq2136On6zPKPX1bqebhB+GIfTIAQD/qTLghV+lV8fuc60kf6qC2dEQQv3X167i sLAL0Z/eLUaf77Ul0ZASuL3ZgoYixKBxIaWIO9VfpNXx45K97xe3I/vXJKnW2Mm92G6J CcIw== X-Forwarded-Encrypted: i=1; AJvYcCUsnENgsSihCGLCV5CtTTy1avseabBLy9MpvaB7OIxfzarrddTRV9L+QNLOcCEx4hJ2cMS29VyMcGj7yuA=@vger.kernel.org X-Gm-Message-State: AOJu0YxsUPAFrgkASn5lsXbZK08gmdyN0o0poXLIND5jE+s9m/JYuXSd 6L1KMp0pBj0K5ujn8WJSy529Mj1VUdYTFuUNN1jDNd1lJIaHev10dzkp X-Gm-Gg: AeBDietfgVlnICE5d1GiWav9o9jJxrrypaFSmZ4sttS5clfh2RGcyxX7EqEsKKoe1es Zvd6dIIgp0a6LUcGbYiIBADLIPX5HNwc2ITRv6Xh8fsHJKfTqbPej9lGN5q7zE1pbTcQzfceQV+ NIg9+IyKFfiYjVj1v2aCyfTBv8gORVK+5A4pZ6nGfoMTtXpvq7JSBH1NbpwUaVzj2h5LKtYVC8L 5EjwCL28GjtF3I3JUYgTD5poNpX2N4Y2o+UHzvFkzkFxfxRLMxC/MmeXgpjqbugBXJCkShRRLNW pIWAAPXjzEN3c8YZJc2AsXM4ppGwrFMG7xdpS2CAyfMoGHq0bTpGR6o6lyCJzsrXMoaO+97zCVt Gg9C2lIBpSJkWZ/juCWRb0QgOQ4Gpyw5+3dN/eD8NuAVuy+Gy8f1GxfPh266b5XE8u/ky5BNVZZ m5hKozzMEs29bIdPo8xO8F9YGCa3vfhl5cx5DNPsma9ws89dh/UmnzmL0iFUBYWoScqGolXKYF9 eGBk4zehipzJpU= X-Received: by 2002:a05:7022:e02:b0:12b:f881:d8d0 with SMTP id a92af1059eb24-12bfb7459f4mr5048040c88.18.1775450376503; Sun, 05 Apr 2026 21:39:36 -0700 (PDT) Received: from dtor-ws.sjc.corp.google.com ([2a00:79e0:2ebe:8:fe13:98b9:9e98:d1bb]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-12bed93f861sm15182005c88.0.2026.04.05.21.39.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Apr 2026 21:39:34 -0700 (PDT) From: Dmitry Torokhov Date: Sun, 05 Apr 2026 21:39:26 -0700 Subject: [PATCH v5 4/4] iio: adc: ti-ads7950: complete conversion 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: <20260405-ti-ads7950-facelift-v5-4-1f980ed3cf9e@gmail.com> References: <20260405-ti-ads7950-facelift-v5-0-1f980ed3cf9e@gmail.com> In-Reply-To: <20260405-ti-ads7950-facelift-v5-0-1f980ed3cf9e@gmail.com> To: Jonathan Cameron , David Lechner Cc: =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Linus Walleij , Bartosz Golaszewski , linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org, Jonathan Cameron X-Mailer: b4 0.16-dev-6911d All resources that the driver needs have managed API now. Switch to using them to make code clearer and drop ti_ads7950_remove(). Reviewed-by: David Lechner Signed-off-by: Dmitry Torokhov --- drivers/iio/adc/ti-ads7950.c | 70 ++++++++++++++--------------------------= ---- 1 file changed, 22 insertions(+), 48 deletions(-) diff --git a/drivers/iio/adc/ti-ads7950.c b/drivers/iio/adc/ti-ads7950.c index 0b98c8e7385d..882b280d9e0b 100644 --- a/drivers/iio/adc/ti-ads7950.c +++ b/drivers/iio/adc/ti-ads7950.c @@ -506,10 +506,8 @@ static int ti_ads7950_probe(struct spi_device *spi) spi->bits_per_word =3D 16; spi->mode |=3D SPI_CS_WORD; ret =3D spi_setup(spi); - if (ret) { - dev_err(&spi->dev, "Error in spi setup\n"); - return ret; - } + if (ret) + return dev_err_probe(&spi->dev, ret, "Error in spi setup\n"); =20 indio_dev =3D devm_iio_device_alloc(&spi->dev, sizeof(*st)); if (!indio_dev) @@ -517,8 +515,6 @@ static int ti_ads7950_probe(struct spi_device *spi) =20 st =3D iio_priv(indio_dev); =20 - spi_set_drvdata(spi, indio_dev); - st->spi =3D spi; =20 info =3D spi_get_device_match_data(spi); @@ -559,7 +555,9 @@ static int ti_ads7950_probe(struct spi_device *spi) spi_message_init_with_transfers(&st->scan_single_msg, st->scan_single_xfer, 3); =20 - mutex_init(&st->slock); + ret =3D devm_mutex_init(&spi->dev, &st->slock); + if (ret) + return ret; =20 /* Use hard coded value for reference voltage in ACPI case */ if (ACPI_COMPANION(&spi->dev)) { @@ -573,24 +571,22 @@ static int ti_ads7950_probe(struct spi_device *spi) st->vref_mv =3D ret / 1000; } =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_destroy_mutex; - } + ret =3D devm_iio_triggered_buffer_setup(&spi->dev, indio_dev, NULL, + &ti_ads7950_trigger_handler, + NULL); + if (ret) + return dev_err_probe(&spi->dev, ret, + "Failed to setup triggered buffer\n"); =20 ret =3D ti_ads7950_init_hw(st); - if (ret) { - dev_err(&spi->dev, "Failed to init adc chip\n"); - goto error_cleanup_ring; - } + if (ret) + return dev_err_probe(&spi->dev, ret, + "Failed to init adc chip\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; - } + ret =3D devm_iio_device_register(&spi->dev, indio_dev); + if (ret) + return dev_err_probe(&spi->dev, ret, + "Failed to register iio device\n"); =20 /* Add GPIO chip */ st->chip.label =3D dev_name(&st->spi->dev); @@ -605,33 +601,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; - } + ret =3D devm_gpiochip_add_data(&spi->dev, &st->chip, st); + if (ret) + return dev_err_probe(&spi->dev, ret, + "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_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); - mutex_destroy(&st->slock); } =20 static const struct spi_device_id ti_ads7950_id[] =3D { @@ -674,7 +649,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.1213.gd9a14994de-goog