From nobody Wed Dec 17 08:55:55 2025 Received: from mail-oa1-f46.google.com (mail-oa1-f46.google.com [209.85.160.46]) (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 108CB1741EE for ; Fri, 12 Jul 2024 16:04:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.160.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720800247; cv=none; b=qrvpdbVzhh/CuYNIezfxeAfZjNY7nUdBDHjt42rIHi7Bc0RSOUzU47nj3IGEM4vJca2uZzSpdVQkjEU52qzJK/aJQRui8uubacNV0AJD+FfliblEr/GHs8hX4WUyFJItrdBo1VzLwF29HZkAtDFPnWKq6shlg6cic8jyVMuygCE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720800247; c=relaxed/simple; bh=0VbOetS204hz3J5pkBmUitCsW+y9jRjY3qZVNN6H5vs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=GmezHfj4FTFqXiqWAEJsaOWiqEfvHa1KWXyZTOkxhjt8VWGAT1YiQV/3B2xa+zbIwV3z7ZIKAKjM+48X8EtVjwIw0qT6f2EdjXchZEK7qXwNgBOieVrGLsK+tv2GxQE1xJPuTTffZAgBGGUbFPxCdaWjc7QrwtXbsofTu43+oEM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b=lBSiWQge; arc=none smtp.client-ip=209.85.160.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b="lBSiWQge" Received: by mail-oa1-f46.google.com with SMTP id 586e51a60fabf-24c0dbd2866so1089471fac.0 for ; Fri, 12 Jul 2024 09:04:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1720800244; x=1721405044; 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=y+/He1wcvWjmLAJpdLkPUiwNIP+C83lJXvlwPZpJIgw=; b=lBSiWQgerEAy2fr7z4pByWR48BuAsT1R87VwVII8U/2Iy0eC8oiOgil7MkIr9/CeAu nPbSsLaRyiaWBOJujo9GEC2uAB3yFftpX9MOGmhyT4GfRrBXQFRiwQX4O84TR8MuyI8j ZzGe4/oBuRLoZVNo5fkr8o9NAx3f86iTQoijV6RMmqHnKD6bDbLBJS4NAc1Iu2y7oc4t NKkRSaBHjRkTp6ycfwl1JkhN/EMWAUDCtwyDHYwsFir8OY8vlgkR6jpoGgyCIedbTZej t7HWotzEcMjn2jxTQDZg5tbrcKQwIJ5LA/igeVW870hGR+6FKINx/ohuajkFPqtPUcG/ d50Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720800244; x=1721405044; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=y+/He1wcvWjmLAJpdLkPUiwNIP+C83lJXvlwPZpJIgw=; b=PIiZcBt3k1KdF4aFk8iTBdGaGhMuPQ9DUipYLoXFwKH2BbKoCdHfTZ42OuXVI5Kpgj Xl/UcKkFLh68kAXVZcAiW64uY/KPlxqm/VjmE0WJxbE0jVB5nAT/XhoasJL6BjtGIaiO r9CNrjZE2tamjsu2xW7dy1R5l/LiB8fYuLNnNhO0mZJKGv0RbTyCRuuohctoN8fNwsbl X9LLvZYKjOsKZSrVzhqjRyHMDiyRfFbY0uRfRFduLnn2Cd9h8uMPpvM5O3dmZSk+70xp gzhwYUmXOMbUSBsKf6DT7HqVfgY8PUOqxxRqWg6Ir6xIKmjc5RLhmmZZN76PrGZkT3X7 xCZw== X-Forwarded-Encrypted: i=1; AJvYcCVeghWGaCIueF8Th5E50wLeffHzFa581plIKX5TxvmOTYhZrfOF/yIgXSVRTx3XV6++CH/D9sdyxdjpROb0SfJ2rL15G1ID29Qhk6NS X-Gm-Message-State: AOJu0Yxh5WySXWwoAciUs18NaAGZ+urPRKdsXu51UdYcd9CZ8PtOs2tu q42IkWRpRO/mb3jDZ3z8QzC+Lkfrbq1YMJJq5KBO3v+XPWH7mDixfdUEyQ4A4jw= X-Google-Smtp-Source: AGHT+IH/srFVuntJPDWvs53ehKj/qU4WBBDG3GMrsOa1plrNwF2SxPQ7RJAITmopV3xaWH2vtGNyxQ== X-Received: by 2002:a05:6870:d69e:b0:254:9ded:a3bf with SMTP id 586e51a60fabf-25eaebdfb43mr10277746fac.45.1720800244107; Fri, 12 Jul 2024 09:04:04 -0700 (PDT) Received: from localhost.localdomain (ip98-183-112-25.ok.ok.cox.net. [98.183.112.25]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-70374f78d35sm1615131a34.23.2024.07.12.09.04.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 12 Jul 2024 09:04:03 -0700 (PDT) From: David Lechner To: Jonathan Cameron , Marius Cristea , Marcus Folkesson , Kent Gustavsson Cc: David Lechner , Liam Girdwood , Mark Brown , linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 1/6] iio: dac: mcp4728: rename err to ret in probe function Date: Fri, 12 Jul 2024 11:03:52 -0500 Message-ID: <20240712-iio-regulator-refactor-round-3-v1-1-835017bae43d@baylibre.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240712-iio-regulator-refactor-round-3-v1-0-835017bae43d@baylibre.com> References: <20240712-iio-regulator-refactor-round-3-v1-0-835017bae43d@baylibre.com> 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" X-Mailer: b4 0.14.0 Content-Transfer-Encoding: quoted-printable To prepare for using a function that returns a non-error value, rename the variable 'err' to 'ret' in the probe function. Signed-off-by: David Lechner --- drivers/iio/dac/mcp4728.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/drivers/iio/dac/mcp4728.c b/drivers/iio/dac/mcp4728.c index c449ca949465..300985beb35d 100644 --- a/drivers/iio/dac/mcp4728.c +++ b/drivers/iio/dac/mcp4728.c @@ -540,7 +540,7 @@ static int mcp4728_probe(struct i2c_client *client) const struct i2c_device_id *id =3D i2c_client_get_device_id(client); struct mcp4728_data *data; struct iio_dev *indio_dev; - int err; + int ret; =20 indio_dev =3D devm_iio_device_alloc(&client->dev, sizeof(*data)); if (!indio_dev) @@ -554,14 +554,14 @@ static int mcp4728_probe(struct i2c_client *client) if (IS_ERR(data->vdd_reg)) return PTR_ERR(data->vdd_reg); =20 - err =3D regulator_enable(data->vdd_reg); - if (err) - return err; + ret =3D regulator_enable(data->vdd_reg); + if (ret) + return ret; =20 - err =3D devm_add_action_or_reset(&client->dev, mcp4728_reg_disable, + ret =3D devm_add_action_or_reset(&client->dev, mcp4728_reg_disable, data->vdd_reg); - if (err) - return err; + if (ret) + return ret; =20 /* * MCP4728 has internal EEPROM that save each channel boot @@ -569,15 +569,15 @@ static int mcp4728_probe(struct i2c_client *client) * driver at kernel boot. mcp4728_init_channels_data() reads back DAC * settings and stores them in data structure. */ - err =3D mcp4728_init_channels_data(data); - if (err) { - return dev_err_probe(&client->dev, err, + ret =3D mcp4728_init_channels_data(data); + if (ret) { + return dev_err_probe(&client->dev, ret, "failed to read mcp4728 current configuration\n"); } =20 - err =3D mcp4728_init_scales_avail(data); - if (err) { - return dev_err_probe(&client->dev, err, + ret =3D mcp4728_init_scales_avail(data); + if (ret) { + return dev_err_probe(&client->dev, ret, "failed to init scales\n"); } =20 --=20 2.43.0 From nobody Wed Dec 17 08:55:55 2025 Received: from mail-oa1-f54.google.com (mail-oa1-f54.google.com [209.85.160.54]) (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 D81B1174EF3 for ; Fri, 12 Jul 2024 16:04:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.160.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720800248; cv=none; b=kI4PKrx/TjOzIjmi1zdzIstSLQAgdBicWK28CKHo+PlSGiD3F2KTvEMtzziYuUfjYo/HMM0ACFiC85fq/AkqIySqRuLIKoW7hKpLbL/FUTirRBzeJB0nBsGGQD9XUamGk2sj0ulrHHYNVh+4oqJVUnHPFpYdOmphTdOix/g1HUQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720800248; c=relaxed/simple; bh=Y/k/wdBv/5beOfFpJAQFfQXG5QorlewTAyQxhJSger4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=nvFIdFctQinxBy8/7UxyXm0M1sKr5OC8QzPGBxN6RO7NO6y0LanTkgSUExrLe2DIu/jQzx0wA56bqRZLpCSDqZfqn3kgeFwLHQkCU6TE/PqwpnbGqIkIoFpPqpp7XDhdI/9kIhi9KVSLz4MHuXDJ0WOBgNm8YqwrkjDbk4dDEMM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b=QnmO49jl; arc=none smtp.client-ip=209.85.160.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b="QnmO49jl" Received: by mail-oa1-f54.google.com with SMTP id 586e51a60fabf-25e04a7d9f1so1061671fac.2 for ; Fri, 12 Jul 2024 09:04:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1720800245; x=1721405045; 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=Xtk0UvTBio0HdPiv9SeTHdQ/nYZSzty+YaDbepVhjDk=; b=QnmO49jlVfOP5X+O3cHivPKymPZJd4lFil1HBGfoJ4qvg0IbvoPY9m5+ZokpaLpA7I n8X+LlmymvsfE/47bQaV69wiGdOq4DIOIeymue6tFahIFyx3XueT678CYrhADLp/U35t Gi78sFv2PYchfiYGMJJjcs0AWleJTuJu94gBBTtU8xO8uKivjWKDpyDYaZLwxW6btNlt 9HKfm4CxTucC66ijB11ptNxaug7uHPVY68m4fGMTJbf3ITmjFrlBnF7oE+XFFtCBNzaJ 1/uzj0V7sXa3Wd5Rm1QFGSoM+Cl5wZWSzfM94o0qaRY9aHu+SOodD7Wo0atNq0RXYVqV SAXQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720800245; x=1721405045; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Xtk0UvTBio0HdPiv9SeTHdQ/nYZSzty+YaDbepVhjDk=; b=uyjbm/NMy3ckVSmoxJ+ZFNvY7hrrf56ZdtiTJAKEpmus+fcab+FhY5rSjVUO3qL/ey VFFUnAEmxmlCl7G8F6BIA0SltRhPMNqf9MbHldj9GHt4UoB7sycAKCiBYgHXc8xND2IZ ST1aygMcne0aQdXvfUeZgT55qgD+HDGwVCQ7XPPFs5godqssM1EA7q/y6oJ49+blpBMi trcQcMSJc7QHUkvx873g+f9DTt2dD7JHO50MfD1F7Owb1ndXRgaA9GacvXIF4vEwXrdF E8ETOC4ARzD9d+MNHGRXe5fqfqkfkcuWuojcWv+S4Es3VgnOoimIqLUHbou//dIectan bz2w== X-Forwarded-Encrypted: i=1; AJvYcCXPYPYWBt+9yVfxfjHXIchkILcfYNGpVPG0rVtX/2VeB2t1vHhkrofzBOn5fejwNOW+Cz38js2M3IUO6N/nrxUs+ZN0Y2pQ1xspRacx X-Gm-Message-State: AOJu0YwecPIDKDc2zxoJsVB2hLS3IFpJ6D/MxmA1O/zvk/GrLzYzmh40 3KQAv47cvKKIxjT8NH3RhIr9iA81J7CPwRQwoxx02IISVlY5Px2ngrskEYNpq2g= X-Google-Smtp-Source: AGHT+IH9XtVdLylUZCQ+EzQ5KpOpsjBt1EAapLPX8XGhtAR2cvYah4rBJcTwPGQIOWEJcZUPCn7lRA== X-Received: by 2002:a05:6870:d612:b0:25e:8509:160e with SMTP id 586e51a60fabf-25eae74a09amr10623112fac.3.1720800244908; Fri, 12 Jul 2024 09:04:04 -0700 (PDT) Received: from localhost.localdomain (ip98-183-112-25.ok.ok.cox.net. [98.183.112.25]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-70374f78d35sm1615131a34.23.2024.07.12.09.04.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 12 Jul 2024 09:04:04 -0700 (PDT) From: David Lechner To: Jonathan Cameron , Marius Cristea , Marcus Folkesson , Kent Gustavsson Cc: David Lechner , Liam Girdwood , Mark Brown , linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 2/6] iio: dac: mcp4728: use devm_regulator_get_enable_read_voltage() Date: Fri, 12 Jul 2024 11:03:53 -0500 Message-ID: <20240712-iio-regulator-refactor-round-3-v1-2-835017bae43d@baylibre.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240712-iio-regulator-refactor-round-3-v1-0-835017bae43d@baylibre.com> References: <20240712-iio-regulator-refactor-round-3-v1-0-835017bae43d@baylibre.com> 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" X-Mailer: b4 0.14.0 Content-Transfer-Encoding: quoted-printable This makes use of the new devm_regulator_get_enable_read_voltage() helper function to reduce boilerplate code in the MCP4728 DAC driver. Signed-off-by: David Lechner --- drivers/iio/dac/mcp4728.c | 33 +++++++-------------------------- 1 file changed, 7 insertions(+), 26 deletions(-) diff --git a/drivers/iio/dac/mcp4728.c b/drivers/iio/dac/mcp4728.c index 300985beb35d..192175dc6419 100644 --- a/drivers/iio/dac/mcp4728.c +++ b/drivers/iio/dac/mcp4728.c @@ -84,7 +84,6 @@ enum mcp4728_scale { =20 struct mcp4728_data { struct i2c_client *client; - struct regulator *vdd_reg; bool powerdown; int scales_avail[MCP4728_N_SCALES * 2]; struct mcp4728_channel_data chdata[MCP4728_N_CHANNELS]; @@ -415,15 +414,9 @@ static void mcp4728_init_scale_avail(enum mcp4728_scal= e scale, int vref_mv, data->scales_avail[scale * 2 + 1] =3D value_micro; } =20 -static int mcp4728_init_scales_avail(struct mcp4728_data *data) +static int mcp4728_init_scales_avail(struct mcp4728_data *data, int vdd_mv) { - int ret; - - ret =3D regulator_get_voltage(data->vdd_reg); - if (ret < 0) - return ret; - - mcp4728_init_scale_avail(MCP4728_SCALE_VDD, ret / 1000, data); + mcp4728_init_scale_avail(MCP4728_SCALE_VDD, vdd_mv, data); mcp4728_init_scale_avail(MCP4728_SCALE_VINT_NO_GAIN, 2048, data); mcp4728_init_scale_avail(MCP4728_SCALE_VINT_GAIN_X2, 4096, data); =20 @@ -530,17 +523,12 @@ static int mcp4728_init_channels_data(struct mcp4728_= data *data) return 0; } =20 -static void mcp4728_reg_disable(void *reg) -{ - regulator_disable(reg); -} - static int mcp4728_probe(struct i2c_client *client) { const struct i2c_device_id *id =3D i2c_client_get_device_id(client); struct mcp4728_data *data; struct iio_dev *indio_dev; - int ret; + int ret, vdd_mv; =20 indio_dev =3D devm_iio_device_alloc(&client->dev, sizeof(*data)); if (!indio_dev) @@ -550,18 +538,11 @@ static int mcp4728_probe(struct i2c_client *client) i2c_set_clientdata(client, indio_dev); data->client =3D client; =20 - data->vdd_reg =3D devm_regulator_get(&client->dev, "vdd"); - if (IS_ERR(data->vdd_reg)) - return PTR_ERR(data->vdd_reg); - - ret =3D regulator_enable(data->vdd_reg); - if (ret) + ret =3D devm_regulator_get_enable_read_voltage(&client->dev, "vdd"); + if (ret < 0) return ret; =20 - ret =3D devm_add_action_or_reset(&client->dev, mcp4728_reg_disable, - data->vdd_reg); - if (ret) - return ret; + vdd_mv =3D ret / 1000; =20 /* * MCP4728 has internal EEPROM that save each channel boot @@ -575,7 +556,7 @@ static int mcp4728_probe(struct i2c_client *client) "failed to read mcp4728 current configuration\n"); } =20 - ret =3D mcp4728_init_scales_avail(data); + ret =3D mcp4728_init_scales_avail(data, vdd_mv); if (ret) { return dev_err_probe(&client->dev, ret, "failed to init scales\n"); --=20 2.43.0 From nobody Wed Dec 17 08:55:55 2025 Received: from mail-oa1-f53.google.com (mail-oa1-f53.google.com [209.85.160.53]) (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 D9D3617557C for ; Fri, 12 Jul 2024 16:04:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.160.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720800248; cv=none; b=ffgqragBNc621a48Xf8PAVtxV7QL1wLja7QTzO+qhrvP0l7jv/+BfenvkIZ+N1yv6MwOgWk4ucg94Znns4Da5ckwhBaDS0pjxPdpaCSErrnO/rua/zC4Lrvs66msG4TFlcKPZRpT6sndyPLzQdmO4odrwEYBy1d49g9KJ/63Df8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720800248; c=relaxed/simple; bh=LiCm3tBJ7AYWSQZO/TCKsxT1uryLYML0nN19d4B4ZF8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=pWw76Tb2V+2EO2Jq06JHkCYB0OP8G6uwmhhHbGXAUuVUHRzstMho8SPR/TIajLaocR36OpzHhJAcS2f++T4RLXm6r+ZZXo1wcQalPNtpqlCI/k5qTwKDF/u4tannpjGeYtTs24ojc1I4A8GuJNS4bE9r4eXsLRE1n7zwlIGuJTI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b=KeMt8SQl; arc=none smtp.client-ip=209.85.160.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b="KeMt8SQl" Received: by mail-oa1-f53.google.com with SMTP id 586e51a60fabf-25e1610e359so930599fac.1 for ; Fri, 12 Jul 2024 09:04:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1720800246; x=1721405046; 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=6yfWKG0y/JQs2Xv+AEtYK/Qt5yfxPJbz/kYQptJy6iA=; b=KeMt8SQlM0UjK4ie+NebsRt8QVaRmBzyREDsbvp7BBBBXeUmIwCVV5au67+bk861oH IsXsIQH3dygQEvxQoRPNyhGIxOf8yJuEho4nI5YEMbeimzXkOpx0NxjRhaVYJKwwtyYz cOx8nSo/DmI68jo9Z16I+/oZzrqnOXz26e3kAVXvF3a7rRh0xO/eQDScyzb99PTmNGAG /Iu9RWgUogGmojxW/iFu0ohf4Pf8/pDH6uPShT1o1p/5y6e32OVoEuphuGzaksFqB618 R6QuWo8qXf3i9ylXRnMw8uOg/JxnaPTRSevR327PEuRzrtd8Fh/B+PwPHsRXW7WxhypW 2TmA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720800246; x=1721405046; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=6yfWKG0y/JQs2Xv+AEtYK/Qt5yfxPJbz/kYQptJy6iA=; b=Z2WNWkYc6HtB5HN0mFvtxwoS1q7noJI50eLdKBEdJtJBXRt/AqKaWeQzEDOLYPTnR7 KAt+84bBz/ALa63Ce0DqggQaym71lngJoctebdJwn9X6WWtstvRRhjumqAQvnjhPKWMy V9+yHkRkGpeYhK6qMXHe8d7BNA/hq3RA6YeXINc+w62Rm9sFoiGyX2UJq7Tax24ZeVG1 ELFD/JpU1A4k3mBGorhzjilIpRwq9j3ZYfutJKTRys+x6zxRNbw7UGJLQK7QRoT0ZSGe K4dfhqcbnvTV+pMG65qLNu9FQOkOkzd2n6v96q7lpK9Jc0AFyayK8tJPzBsHUsU/oH1r 9RPg== X-Forwarded-Encrypted: i=1; AJvYcCUdX2FI4hMxDyFPYtmz1kRpa4Q1d6vQM1ZSL/43KC+xRcp6kzO3L+oFmYDWe/MpBC4FJEpOStb5OoonM2jP2g04jreoeWQEduqatY/a X-Gm-Message-State: AOJu0YwhC4aKHIynhOLV/eiZq/9rTpUv3vtRAd0GPs9gwT7ATTHSMWbw QLWyNCSfVCkRN+ZQ0UDGp1sYJa8N+eHDF33ystDNobwNqJctHhiDueQd7KaZxK8= X-Google-Smtp-Source: AGHT+IFZ4u28V0aXqe1EKH1JX+VjsznMpOJ+/9Zy0MPgBrfQDd+ZR7G8IEC/bVTMldowmHzd8Hm2Ug== X-Received: by 2002:a05:6870:a11a:b0:254:a57e:1aed with SMTP id 586e51a60fabf-25eae84e38dmr10560652fac.26.1720800245795; Fri, 12 Jul 2024 09:04:05 -0700 (PDT) Received: from localhost.localdomain (ip98-183-112-25.ok.ok.cox.net. [98.183.112.25]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-70374f78d35sm1615131a34.23.2024.07.12.09.04.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 12 Jul 2024 09:04:05 -0700 (PDT) From: David Lechner To: Jonathan Cameron , Marius Cristea , Marcus Folkesson , Kent Gustavsson Cc: David Lechner , Liam Girdwood , Mark Brown , linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 3/6] iio: dac: mcp4922: use devm_regulator_get_enable_read_voltage() Date: Fri, 12 Jul 2024 11:03:54 -0500 Message-ID: <20240712-iio-regulator-refactor-round-3-v1-3-835017bae43d@baylibre.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240712-iio-regulator-refactor-round-3-v1-0-835017bae43d@baylibre.com> References: <20240712-iio-regulator-refactor-round-3-v1-0-835017bae43d@baylibre.com> 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" X-Mailer: b4 0.14.0 Content-Transfer-Encoding: quoted-printable This makes use of the new devm_regulator_get_enable_read_voltage() helper function to reduce boilerplate code in the MCP4922 DAC driver. The error message is slightly different because there is only one error return path now. Signed-off-by: David Lechner --- drivers/iio/dac/mcp4922.c | 30 ++++-------------------------- 1 file changed, 4 insertions(+), 26 deletions(-) diff --git a/drivers/iio/dac/mcp4922.c b/drivers/iio/dac/mcp4922.c index da4327624d45..f89af70fa5af 100644 --- a/drivers/iio/dac/mcp4922.c +++ b/drivers/iio/dac/mcp4922.c @@ -30,7 +30,6 @@ struct mcp4922_state { struct spi_device *spi; unsigned int value[MCP4922_NUM_CHANNELS]; unsigned int vref_mv; - struct regulator *vref_reg; u8 mosi[2] __aligned(IIO_DMA_MINALIGN); }; =20 @@ -132,24 +131,11 @@ static int mcp4922_probe(struct spi_device *spi) =20 state =3D iio_priv(indio_dev); state->spi =3D spi; - state->vref_reg =3D devm_regulator_get(&spi->dev, "vref"); - if (IS_ERR(state->vref_reg)) - return dev_err_probe(&spi->dev, PTR_ERR(state->vref_reg), - "Vref regulator not specified\n"); =20 - ret =3D regulator_enable(state->vref_reg); - if (ret) { - dev_err(&spi->dev, "Failed to enable vref regulator: %d\n", - ret); - return ret; - } + ret =3D devm_regulator_get_enable_read_voltage(&spi->dev, "vref"); + if (ret < 0) + return dev_err_probe(&spi->dev, ret, "Failed to get vref voltage\n"); =20 - ret =3D regulator_get_voltage(state->vref_reg); - if (ret < 0) { - dev_err(&spi->dev, "Failed to read vref regulator: %d\n", - ret); - goto error_disable_reg; - } state->vref_mv =3D ret / 1000; =20 spi_set_drvdata(spi, indio_dev); @@ -167,25 +153,17 @@ static int mcp4922_probe(struct spi_device *spi) if (ret) { dev_err(&spi->dev, "Failed to register iio device: %d\n", ret); - goto error_disable_reg; + return ret; } =20 return 0; - -error_disable_reg: - regulator_disable(state->vref_reg); - - return ret; } =20 static void mcp4922_remove(struct spi_device *spi) { struct iio_dev *indio_dev =3D spi_get_drvdata(spi); - struct mcp4922_state *state; =20 iio_device_unregister(indio_dev); - state =3D iio_priv(indio_dev); - regulator_disable(state->vref_reg); } =20 static const struct spi_device_id mcp4922_id[] =3D { --=20 2.43.0 From nobody Wed Dec 17 08:55:55 2025 Received: from mail-ot1-f45.google.com (mail-ot1-f45.google.com [209.85.210.45]) (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 904A817622F for ; Fri, 12 Jul 2024 16:04:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720800249; cv=none; b=h246FTkydE3u8XOY19q/su3xskm7a7RMzh0V7Km3RxkqRNgCQQ+2XXmRrb+wvEVYN/N0Js9CpDQ7a5ukOScMYYChS1zW6wjR4yaYXoxeFydVdgTL7DphcXuhaw1/+c0uhWfdnvuDKQTSdOXrIq4a0q79ILQ8+NstPCBagwX7frE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720800249; c=relaxed/simple; bh=jcbI0ILmzg2rz8ajY9fDpFx5bxGc9dBImltD76qGtXE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=I506oqGvfnF2AReoVklFUegUgvUgSANul3viLLcJL23cGb8R8KPz7L+Zy0jxCEQxl7HdqXJCf69AMTczQOFxDOczyKM5t5AS0xFnu/Or4s9Ap+Hn4i+2USehxAAmWTtLVddS6+JN5d0rLsuYhzZoSjP56M4Sp+iiWGb46t3SX6s= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b=XADlh/Ml; arc=none smtp.client-ip=209.85.210.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b="XADlh/Ml" Received: by mail-ot1-f45.google.com with SMTP id 46e09a7af769-703ba2477bdso1037463a34.2 for ; Fri, 12 Jul 2024 09:04:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1720800247; x=1721405047; 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=60eUVwKVeZ7BrLO6pxv9nbYIZ9oGCgCB8H4hO/TeI/g=; b=XADlh/MlstSnuIy9Po0NBK6gB/5MwLA2JBwujo5/dxAw6HK0PCWcxbpCuQbYr9lAi5 0H33dyyCBQ2Sh4TlCY5zASlVDiQSwtO0/Z63h5e0evVqQMXRuk0voySi52RFC6M/fjv4 Yl+tMyWXs36VMO3BlJRCfGiyIcbVRC99BQieuhqLE49y7jzQ20VtPMVN9cUigcnV9/6F 2mgqm9Mz7ZY3BtRzObZa2u+5Sjj47f/PzIk2vz4CQ9TLsJvJRoB9LiPgYGNCcKbd8s3U iuS9s/N/hZtvLJVMexCHFs2cSu48EcWtl3u6ximw+xehO740PWhBn6RK5lnhZ8FoOwLe iufQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720800247; x=1721405047; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=60eUVwKVeZ7BrLO6pxv9nbYIZ9oGCgCB8H4hO/TeI/g=; b=GO9sby822n3/WYkZtaleN6nwW0froQN96sDJVhOxutnwNdxrTLXuj1ir3qsRc+fbmy LhiApPEy/Xqs6TtYUMhHCxg0TZIExtfo6UkA5J0ooFBfkHkHMT2ICPT/0MzFUFQIWLyQ He5fFUSQc2b1LQBkOpOsnlCUqXMLmhC/pmKKm8Rb9IO/Hxc6k8w7HG4gYHvuIHt27f1j kuseuZCsERsu12xoHZE2SznHg37a+wvMQrd+GgaHgkcYSTgoU06pv0aBg4Ob7p8N82oT viCPfIBYbClMG3IiEZRjzCVOl77BvckyKvgQWLjxEcIcTj94JYg3chsqs+yaZDHIAG16 CcIQ== X-Forwarded-Encrypted: i=1; AJvYcCUlahOXhBMoxYpYPNZdoxcgA2b4tTpr8sJTQMU9OoYUOFEP7IwfDktvTHREm6s2mb7b+50AjupQqieqa8Y+/NVNnObhoyZYIkmF5ynJ X-Gm-Message-State: AOJu0YxdRo/G9Q9TuJF9licF1Pv4xXxF90Od320FEs+gnleaI6JqH1JD 0CvEGblEelPMdN6P06pEHq2iR9PHDgkwrLRs4uQTT+3bfpGt7hlAbNmCbOAqTPzrrqkQKSpRX8X A X-Google-Smtp-Source: AGHT+IEuQNhkpjMbmrtQ5ogRBVhUZBpJ4I4zgpDiKAPbDUpxqOcQNOVerUGUqq5HZO5btAfIiNVRjw== X-Received: by 2002:a9d:6a56:0:b0:704:45bb:267f with SMTP id 46e09a7af769-70445bb3223mr13140566a34.5.1720800246613; Fri, 12 Jul 2024 09:04:06 -0700 (PDT) Received: from localhost.localdomain (ip98-183-112-25.ok.ok.cox.net. [98.183.112.25]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-70374f78d35sm1615131a34.23.2024.07.12.09.04.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 12 Jul 2024 09:04:06 -0700 (PDT) From: David Lechner To: Jonathan Cameron , Marius Cristea , Marcus Folkesson , Kent Gustavsson Cc: David Lechner , Liam Girdwood , Mark Brown , linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 4/6] iio: dac: mcp4922: drop remove() callback Date: Fri, 12 Jul 2024 11:03:55 -0500 Message-ID: <20240712-iio-regulator-refactor-round-3-v1-4-835017bae43d@baylibre.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240712-iio-regulator-refactor-round-3-v1-0-835017bae43d@baylibre.com> References: <20240712-iio-regulator-refactor-round-3-v1-0-835017bae43d@baylibre.com> 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" X-Mailer: b4 0.14.0 Content-Transfer-Encoding: quoted-printable By using devm_iio_device_register(), we can drop the remove() callback in the mcp4922 driver. We can also remove spi_set_drvdata() since there are no more callers of spi_get_drvdata(). Also use dev_err_probe() while we are at it. Signed-off-by: David Lechner --- drivers/iio/dac/mcp4922.c | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) diff --git a/drivers/iio/dac/mcp4922.c b/drivers/iio/dac/mcp4922.c index f89af70fa5af..26aa99059813 100644 --- a/drivers/iio/dac/mcp4922.c +++ b/drivers/iio/dac/mcp4922.c @@ -138,7 +138,6 @@ static int mcp4922_probe(struct spi_device *spi) =20 state->vref_mv =3D ret / 1000; =20 - spi_set_drvdata(spi, indio_dev); id =3D spi_get_device_id(spi); indio_dev->info =3D &mcp4922_info; indio_dev->modes =3D INDIO_DIRECT_MODE; @@ -149,22 +148,13 @@ static int mcp4922_probe(struct spi_device *spi) indio_dev->num_channels =3D MCP4922_NUM_CHANNELS; indio_dev->name =3D id->name; =20 - ret =3D iio_device_register(indio_dev); - if (ret) { - dev_err(&spi->dev, "Failed to register iio device: %d\n", - ret); - return ret; - } + 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 return 0; } =20 -static void mcp4922_remove(struct spi_device *spi) -{ - struct iio_dev *indio_dev =3D spi_get_drvdata(spi); - - iio_device_unregister(indio_dev); -} =20 static const struct spi_device_id mcp4922_id[] =3D { {"mcp4902", ID_MCP4902}, @@ -180,7 +170,6 @@ static struct spi_driver mcp4922_driver =3D { .name =3D "mcp4922", }, .probe =3D mcp4922_probe, - .remove =3D mcp4922_remove, .id_table =3D mcp4922_id, }; module_spi_driver(mcp4922_driver); --=20 2.43.0 From nobody Wed Dec 17 08:55:55 2025 Received: from mail-oa1-f47.google.com (mail-oa1-f47.google.com [209.85.160.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 74AD2176254 for ; Fri, 12 Jul 2024 16:04:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.160.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720800250; cv=none; b=h5tbP6YHTV5HlsJC9wBiQ9ohVQBUnQB1CIxIgwSXjftXT6rKIusEgbvyDTA6PPiNziifIq/R6CNu6bKwI+Y2y98yAPBmx96JFtUqurQL9VNbPqt+RTmiIH0AAvuZxL+NQf0DHlxGa8X3cOdhfcOy2aDtzuqZW8CqBuZxiP7ho2o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720800250; c=relaxed/simple; bh=mIcfdse/+rlP58eFFA/PEI/fcZHOFfe3jGuPELWLLNY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=uRu8HNTh1NMkm3Pm+eXn5v/DL0Vxi27a3wwky69vDJYY45fpJqE+UAYb6R/6vNzWZRKRmhz1/htp/PGVTFQmEyrcKA3KpdOmhiavtKyJDDzaMMFpwUOnKpi7HY9pHJxp3AQ114RnGFPdR0spee9LHuWnBYmbEFZM+Out2V6VfDc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b=hyVDVXVd; arc=none smtp.client-ip=209.85.160.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b="hyVDVXVd" Received: by mail-oa1-f47.google.com with SMTP id 586e51a60fabf-25e3d8d9f70so1209235fac.2 for ; Fri, 12 Jul 2024 09:04:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1720800247; x=1721405047; 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=z+LRn09+VizRf0JvYt3kqJDUqFvXhYNVL1CgwtRvMbM=; b=hyVDVXVdn8zVBcBwnsijd87+hvKjKmk9DpM8yFsXqEv2ffQPrY5ait+aLtvhjdJ6zB 0sMQWmrEJP6Rsb0XDA8BLosrNpuIkU/zMl+lVv8itTpDN2G4z3/qsoZBcnX9ybaZoefy J/vCkUm13mnVOg95cnwQr/tIpMfOuQ9fHsZ0lWNgQn0V+PK0VmVzZabzdvGy0X1uohl2 LVx0h0JwnEi63kjGr+5Eu0+MMxvnHbGrxe8wivdGP0H7i5bCsqwONGUrLaqUNR3kVCsS EibPBag1O2ggWfdW2NrZyblueo7QnNCzG+s3d1hCeI5Zo8yowJcltiDxHptKiFgTHJlz zDtw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720800247; x=1721405047; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=z+LRn09+VizRf0JvYt3kqJDUqFvXhYNVL1CgwtRvMbM=; b=ai5uzHZxoo7mvDZEYuR9VdThEPElBBteQ9Fm9VZ53jhjUgo/P8jElwRTa3s1jia2o2 9rKkGk5AIUg/av76HlWxdO7QMO25arkUThiHUXbPpx4hmRTFGTMdmckndu7T4K5tPjyQ rmHc4UF9FvYOZq7i3bH03X5lv7li7Vtwoj/M6ZmZRf7miKPLACQgUIb24Ht+WJV5FNZY 5YZ30jyRYqTDdnakGhqKR2z4ghkGrvl6HdsafHZXfjVfnHM0Msf26DKI/fWEgdFCKoJx eynF/TyedM/gfW88USce+4YcyTsjYgERY/ki/A2Sw76ktzxM92kOrPK9q7XcA+mzgz0o YUYA== X-Forwarded-Encrypted: i=1; AJvYcCU+bJpUT/J8xNMs7qH49w1D8WSeOz0Ba+Gbt9aLX/8+4w5p7I/1pyodOBb6eh+X6qWDe1Qd6gNW4kI35PL9GDv41QYtjMXNGKltT1J/ X-Gm-Message-State: AOJu0Yyzj7KHvakct43mqQe6johlrKkZsBh5MzTpAwlaaWW5i/lah/K0 y5JQD1CcIj4KjUmQHLDmz71oxer1o1vgiM4Yg/sXOqUjMqsSmrfLxjRf2tDVZdo= X-Google-Smtp-Source: AGHT+IFJqQ4jVYwcPc+YyB6lTtaO4ZRCyIF+arWnpBOToBO1d5MfWdt5nWxhs6AalNLw9FExThA36Q== X-Received: by 2002:a05:6870:c110:b0:25e:1f67:b3bb with SMTP id 586e51a60fabf-25eae784d0cmr10096191fac.10.1720800247429; Fri, 12 Jul 2024 09:04:07 -0700 (PDT) Received: from localhost.localdomain (ip98-183-112-25.ok.ok.cox.net. [98.183.112.25]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-70374f78d35sm1615131a34.23.2024.07.12.09.04.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 12 Jul 2024 09:04:07 -0700 (PDT) From: David Lechner To: Jonathan Cameron , Marius Cristea , Marcus Folkesson , Kent Gustavsson Cc: David Lechner , Liam Girdwood , Mark Brown , linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 5/6] iio: adc: mcp3564: use devm_regulator_get_enable_read_voltage() Date: Fri, 12 Jul 2024 11:03:56 -0500 Message-ID: <20240712-iio-regulator-refactor-round-3-v1-5-835017bae43d@baylibre.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240712-iio-regulator-refactor-round-3-v1-0-835017bae43d@baylibre.com> References: <20240712-iio-regulator-refactor-round-3-v1-0-835017bae43d@baylibre.com> 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" X-Mailer: b4 0.14.0 Content-Transfer-Encoding: quoted-printable This makes use of the new devm_regulator_get_enable_read_voltage() helper function to reduce boilerplate code in the MCP3564 ADC driver. The error message is slightly changed since there are fewer error return paths. Setting adc->vref_mv is consolidated into a single place to make the logic easier to follow. A use_auto_zeroing_ref_attr local variable is added to make it more obvious what the difference between the two iio info structures is. The return value of the "Unknown Vref" dev_err_probe() is hard-coded to -ENODEV instead of ret since it was getting a bit far from where ret was set and logically that is the only value it could have. Signed-off-by: David Lechner --- drivers/iio/adc/mcp3564.c | 54 ++++++++++++++-----------------------------= ---- 1 file changed, 16 insertions(+), 38 deletions(-) diff --git a/drivers/iio/adc/mcp3564.c b/drivers/iio/adc/mcp3564.c index d83bed0e63d2..34903b7b3cc4 100644 --- a/drivers/iio/adc/mcp3564.c +++ b/drivers/iio/adc/mcp3564.c @@ -349,8 +349,6 @@ struct mcp3564_chip_info { * struct mcp3564_state - working data for a ADC device * @chip_info: chip specific data * @spi: SPI device structure - * @vref: the regulator device used as a voltage reference in case - * external voltage reference is used * @vref_mv: voltage reference value in miliVolts * @lock: synchronize access to driver's state members * @dev_addr: hardware device address @@ -369,7 +367,6 @@ struct mcp3564_chip_info { struct mcp3564_state { const struct mcp3564_chip_info *chip_info; struct spi_device *spi; - struct regulator *vref; unsigned short vref_mv; struct mutex lock; /* Synchronize access to driver's state members */ u8 dev_addr; @@ -1085,11 +1082,6 @@ static int mcp3564_parse_fw_children(struct iio_dev = *indio_dev) return 0; } =20 -static void mcp3564_disable_reg(void *reg) -{ - regulator_disable(reg); -} - static void mcp3564_fill_scale_tbls(struct mcp3564_state *adc) { unsigned int pow =3D adc->chip_info->resolution - 1; @@ -1110,7 +1102,7 @@ static void mcp3564_fill_scale_tbls(struct mcp3564_st= ate *adc) } } =20 -static int mcp3564_config(struct iio_dev *indio_dev) +static int mcp3564_config(struct iio_dev *indio_dev, bool *use_auto_zeroin= g_ref_attr) { struct mcp3564_state *adc =3D iio_priv(indio_dev); struct device *dev =3D &adc->spi->dev; @@ -1119,6 +1111,7 @@ static int mcp3564_config(struct iio_dev *indio_dev) enum mcp3564_ids ids; int ret =3D 0; unsigned int tmp =3D 0x01; + bool internal_vref; bool err =3D false; =20 /* @@ -1218,36 +1211,22 @@ static int mcp3564_config(struct iio_dev *indio_dev) =20 dev_dbg(dev, "Found %s chip\n", adc->chip_info->name); =20 - adc->vref =3D devm_regulator_get_optional(dev, "vref"); - if (IS_ERR(adc->vref)) { - if (PTR_ERR(adc->vref) !=3D -ENODEV) - return dev_err_probe(dev, PTR_ERR(adc->vref), - "failed to get regulator\n"); + ret =3D devm_regulator_get_enable_read_voltage(dev, "vref"); + if (ret < 0 && ret !=3D -ENODEV) + return dev_err_probe(dev, ret, "Failed to get vref voltage\n"); + + internal_vref =3D ret =3D=3D -ENODEV; + adc->vref_mv =3D internal_vref ? MCP3564R_INT_VREF_MV : ret / MILLI; + *use_auto_zeroing_ref_attr =3D internal_vref; =20 + if (internal_vref) { /* Check if chip has internal vref */ if (!adc->have_vref) - return dev_err_probe(dev, PTR_ERR(adc->vref), - "Unknown Vref\n"); - adc->vref =3D NULL; + return dev_err_probe(dev, -ENODEV, "Unknown Vref\n"); + dev_dbg(dev, "%s: Using internal Vref\n", __func__); } else { - ret =3D regulator_enable(adc->vref); - if (ret) - return ret; - - ret =3D devm_add_action_or_reset(dev, mcp3564_disable_reg, - adc->vref); - if (ret) - return ret; - dev_dbg(dev, "%s: Using External Vref\n", __func__); - - ret =3D regulator_get_voltage(adc->vref); - if (ret < 0) - return dev_err_probe(dev, ret, - "Failed to read vref regulator\n"); - - adc->vref_mv =3D ret / MILLI; } =20 ret =3D mcp3564_parse_fw_children(indio_dev); @@ -1350,10 +1329,8 @@ static int mcp3564_config(struct iio_dev *indio_dev) tmp_reg |=3D FIELD_PREP(MCP3564_CONFIG0_CLK_SEL_MASK, MCP3564_CONFIG0_USE= _INT_CLK); tmp_reg |=3D MCP3456_CONFIG0_BIT6_DEFAULT; =20 - if (!adc->vref) { + if (internal_vref) tmp_reg |=3D FIELD_PREP(MCP3456_CONFIG0_VREF_MASK, 1); - adc->vref_mv =3D MCP3564R_INT_VREF_MV; - } =20 ret =3D mcp3564_write_8bits(adc, MCP3564_CONFIG0_REG, tmp_reg); =20 @@ -1412,6 +1389,7 @@ static int mcp3564_probe(struct spi_device *spi) int ret; struct iio_dev *indio_dev; struct mcp3564_state *adc; + bool use_auto_zeroing_ref_attr; =20 indio_dev =3D devm_iio_device_alloc(&spi->dev, sizeof(*adc)); if (!indio_dev) @@ -1428,7 +1406,7 @@ static int mcp3564_probe(struct spi_device *spi) * enable/disable certain channels * change the sampling rate to the requested value */ - ret =3D mcp3564_config(indio_dev); + ret =3D mcp3564_config(indio_dev, &use_auto_zeroing_ref_attr); if (ret) return dev_err_probe(&spi->dev, ret, "Can't configure MCP356X device\n"); @@ -1440,7 +1418,7 @@ static int mcp3564_probe(struct spi_device *spi) indio_dev->name =3D adc->chip_info->name; indio_dev->modes =3D INDIO_DIRECT_MODE; =20 - if (!adc->vref) + if (use_auto_zeroing_ref_attr) indio_dev->info =3D &mcp3564r_info; else indio_dev->info =3D &mcp3564_info; --=20 2.43.0 From nobody Wed Dec 17 08:55:55 2025 Received: from mail-oo1-f41.google.com (mail-oo1-f41.google.com [209.85.161.41]) (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 4D38B176ABD for ; Fri, 12 Jul 2024 16:04:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.161.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720800251; cv=none; b=G8pWhGiG7beECZRrE5wGnGDgeDT3fylr+GFt9B++v8KBVM2+SW2rOaoyjI+Gy6XNxz5cXXHLuVzPbAuSn0mj48VcAwutkx2YQOsv/MjsasYpoH3kW/mk2oqBTW+lq80uqqJrCWQHf4isqzVfRNRWnMFe2CDyQgK5ysd9KoBVh+I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720800251; c=relaxed/simple; bh=NF0ttJPPJHx2bQ6REVEW0ZebK541cG8BKuKiRadWNyA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=I7ScXBr2uIGLuo8zZzdbBRzuLib/RTRKytFj9y580iqEh578yLWFj4AW4DWsIcrU8bPtLJAWMlsDWzsvZCJ/FnTqUX2VC2p7+r744qF5jD8Qvx0csZ5vni3xDX73hkIycZMK81JuH1X29OGSKFmJ1WNjbam5i9x3J/8Rhi9A4Q4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b=LR+SA9hH; arc=none smtp.client-ip=209.85.161.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b="LR+SA9hH" Received: by mail-oo1-f41.google.com with SMTP id 006d021491bc7-5c7b6c6a581so976285eaf.0 for ; Fri, 12 Jul 2024 09:04:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1720800248; x=1721405048; 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=6TvJj9OS9pLYtOuscI8ghIcPdBvxWYcRECb9BgIFeXA=; b=LR+SA9hHdA7x/xxy9MhsYIXz5RKJ57gGHaBGlhMWcExbf5o2l4eId0ZowoQDVnA/zJ ZtWvAffuQIRCSrPB5zgea8oi9ywOO0HNq5Y7TsD4wlqYVneMafVQjAhav2kknAy2xbld 2XgsrlFHNeUAgfByF2z5YoCkhyRGsE4fsH1pGMUkI+nRG5vlhXFYb/H6vI+eWMLyMSaP E15l4jmU9+lUgEik+GSmzDEed80R7DvUiNNFjv3E01DVLEsswIcudASc9OmZRWOoCheh bGhcdU/q0jXPwwG0rt8pk17XSgqZ9VvVLgRFUMoUMnykRnWh3X8SfJA7igKJf/6NGF5u 7eAA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720800248; x=1721405048; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=6TvJj9OS9pLYtOuscI8ghIcPdBvxWYcRECb9BgIFeXA=; b=QKmbvyPSDUtEmW9RrPS6ThnbXj7ZJhD1vmKau+6tBSoiswVTQWn6XivzDBdFONjYMb tQTdDBUJan+oXqUCmr+vZjm14g+oxCrKqq9lLAE0VXTyZq5dwgM7la0m4nsGsySxpJgE DRo/XhfE19+0cm2WmmzMXLv6UO0ffiJP9BxAcBHyFJGMQdXSVJYNWCenqX5hmju3j1Ed gQXZQKIq+RW1+1CgsyDP8EFX82rsIBawwIcWMdLRfK44IbtomtUkt/ZsFuFv/3lY+/M/ 4aWBXvlEMhx3zShzt8SUNtcJQEdzBCXyk+nNPT6H0C68bRlMTOYDr5CSC02D4Qy3qeBu +hCA== X-Forwarded-Encrypted: i=1; AJvYcCXQ87UJsl3V8VvTzTYo3/Gs0Oz7cjJZ9ppCkRAHzmX9UATgQOGfzTalU0Jrs5nUJxAyhkmwMSIMZ0Ov9zll8Lh98Qv3KWg33F1qdwE1 X-Gm-Message-State: AOJu0YyybEo451Jki4hrIU0ZgnN154DVa44uUqdPs06aD1O5Kho8x4R7 GX8cHf10UNdxN+rRgfca8KezlQqyv/SkSDibAiIS+iSW0lhkfm+78q0437oNK9Q= X-Google-Smtp-Source: AGHT+IGr7GtUz90d3Lh/5u99HidVD4eSXHr2INczAl7WDJoabqqvA5RKlDdYHdNqgwfxm7B6k4j9qg== X-Received: by 2002:a05:6870:6387:b0:25e:4365:c5d6 with SMTP id 586e51a60fabf-25eae7b880emr9984254fac.20.1720800248273; Fri, 12 Jul 2024 09:04:08 -0700 (PDT) Received: from localhost.localdomain (ip98-183-112-25.ok.ok.cox.net. [98.183.112.25]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-70374f78d35sm1615131a34.23.2024.07.12.09.04.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 12 Jul 2024 09:04:07 -0700 (PDT) From: David Lechner To: Jonathan Cameron , Marius Cristea , Marcus Folkesson , Kent Gustavsson Cc: David Lechner , Liam Girdwood , Mark Brown , linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 6/6] iio: adc: mcp3911: use devm_regulator_get_enable_read_voltage() Date: Fri, 12 Jul 2024 11:03:57 -0500 Message-ID: <20240712-iio-regulator-refactor-round-3-v1-6-835017bae43d@baylibre.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240712-iio-regulator-refactor-round-3-v1-0-835017bae43d@baylibre.com> References: <20240712-iio-regulator-refactor-round-3-v1-0-835017bae43d@baylibre.com> 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" X-Mailer: b4 0.14.0 Content-Transfer-Encoding: quoted-printable This makes use of the new devm_regulator_get_enable_read_voltage() helper function to reduce boilerplate code in the MCP3911 ADC driver. The error message is slightly changed since there are fewer error return paths. An extra parameter is added to the config callback to avoid adding state that is not used outside of the probe() function. Signed-off-by: David Lechner Reviewed-by: Marcus Folkesson --- drivers/iio/adc/mcp3911.c | 59 +++++++++++++------------------------------= ---- 1 file changed, 16 insertions(+), 43 deletions(-) diff --git a/drivers/iio/adc/mcp3911.c b/drivers/iio/adc/mcp3911.c index 7a32e7a1be9d..5076028f541d 100644 --- a/drivers/iio/adc/mcp3911.c +++ b/drivers/iio/adc/mcp3911.c @@ -103,7 +103,7 @@ struct mcp3911_chip_info { const struct iio_chan_spec *channels; unsigned int num_channels; =20 - int (*config)(struct mcp3911 *adc); + int (*config)(struct mcp3911 *adc, bool external_vref); int (*get_osr)(struct mcp3911 *adc, u32 *val); int (*set_osr)(struct mcp3911 *adc, u32 val); int (*enable_offset)(struct mcp3911 *adc, bool enable); @@ -115,7 +115,6 @@ struct mcp3911_chip_info { struct mcp3911 { struct spi_device *spi; struct mutex lock; - struct regulator *vref; struct clk *clki; u32 dev_addr; struct iio_trigger *trig; @@ -385,23 +384,11 @@ static int mcp3911_write_raw(struct iio_dev *indio_de= v, } } =20 -static int mcp3911_calc_scale_table(struct mcp3911 *adc) +static int mcp3911_calc_scale_table(u32 vref_mv) { - struct device *dev =3D &adc->spi->dev; - u32 ref =3D MCP3911_INT_VREF_MV; u32 div; - int ret; u64 tmp; =20 - if (adc->vref) { - ret =3D regulator_get_voltage(adc->vref); - if (ret < 0) { - return dev_err_probe(dev, ret, "failed to get vref voltage\n"); - } - - ref =3D ret / 1000; - } - /* * For 24-bit Conversion * Raw =3D ((Voltage)/(Vref) * 2^23 * Gain * 1.5 @@ -412,7 +399,7 @@ static int mcp3911_calc_scale_table(struct mcp3911 *adc) */ for (int i =3D 0; i < MCP3911_NUM_SCALES; i++) { div =3D 12582912 * BIT(i); - tmp =3D div_s64((s64)ref * 1000000000LL, div); + tmp =3D div_s64((s64)vref_mv * 1000000000LL, div); =20 mcp3911_scale_table[i][0] =3D 0; mcp3911_scale_table[i][1] =3D tmp; @@ -544,7 +531,7 @@ static const struct iio_info mcp3911_info =3D { .write_raw_get_fmt =3D mcp3911_write_raw_get_fmt, }; =20 -static int mcp3911_config(struct mcp3911 *adc) +static int mcp3911_config(struct mcp3911 *adc, bool external_vref) { struct device *dev =3D &adc->spi->dev; u32 regval; @@ -555,7 +542,7 @@ static int mcp3911_config(struct mcp3911 *adc) return ret; =20 regval &=3D ~MCP3911_CONFIG_VREFEXT; - if (adc->vref) { + if (external_vref) { dev_dbg(dev, "use external voltage reference\n"); regval |=3D FIELD_PREP(MCP3911_CONFIG_VREFEXT, 1); } else { @@ -610,7 +597,7 @@ static int mcp3911_config(struct mcp3911 *adc) return mcp3911_write(adc, MCP3911_REG_GAIN, regval, 1); } =20 -static int mcp3910_config(struct mcp3911 *adc) +static int mcp3910_config(struct mcp3911 *adc, bool external_vref) { struct device *dev =3D &adc->spi->dev; u32 regval; @@ -621,7 +608,7 @@ static int mcp3910_config(struct mcp3911 *adc) return ret; =20 regval &=3D ~MCP3910_CONFIG1_VREFEXT; - if (adc->vref) { + if (external_vref) { dev_dbg(dev, "use external voltage reference\n"); regval |=3D FIELD_PREP(MCP3910_CONFIG1_VREFEXT, 1); } else { @@ -677,11 +664,6 @@ static int mcp3910_config(struct mcp3911 *adc) return adc->chip->enable_offset(adc, 0); } =20 -static void mcp3911_cleanup_regulator(void *vref) -{ - regulator_disable(vref); -} - static int mcp3911_set_trigger_state(struct iio_trigger *trig, bool enable) { struct mcp3911 *adc =3D iio_trigger_get_drvdata(trig); @@ -704,6 +686,8 @@ static int mcp3911_probe(struct spi_device *spi) struct device *dev =3D &spi->dev; struct iio_dev *indio_dev; struct mcp3911 *adc; + bool external_vref; + u32 vref_mv; int ret; =20 indio_dev =3D devm_iio_device_alloc(dev, sizeof(*adc)); @@ -714,23 +698,12 @@ static int mcp3911_probe(struct spi_device *spi) adc->spi =3D spi; adc->chip =3D spi_get_device_match_data(spi); =20 - adc->vref =3D devm_regulator_get_optional(dev, "vref"); - if (IS_ERR(adc->vref)) { - if (PTR_ERR(adc->vref) =3D=3D -ENODEV) { - adc->vref =3D NULL; - } else { - return dev_err_probe(dev, PTR_ERR(adc->vref), "failed to get regulator\= n"); - } + ret =3D devm_regulator_get_enable_read_voltage(dev, "vref"); + if (ret < 0 && ret !=3D -ENODEV) + return dev_err_probe(dev, ret, "failed to get vref voltage\n"); =20 - } else { - ret =3D regulator_enable(adc->vref); - if (ret) - return ret; - - ret =3D devm_add_action_or_reset(dev, mcp3911_cleanup_regulator, adc->vr= ef); - if (ret) - return ret; - } + external_vref =3D ret !=3D -ENODEV; + vref_mv =3D external_vref ? ret / 1000 : MCP3911_INT_VREF_MV; =20 adc->clki =3D devm_clk_get_enabled(dev, NULL); if (IS_ERR(adc->clki)) { @@ -755,11 +728,11 @@ static int mcp3911_probe(struct spi_device *spi) } dev_dbg(dev, "use device address %i\n", adc->dev_addr); =20 - ret =3D adc->chip->config(adc); + ret =3D adc->chip->config(adc, external_vref); if (ret) return ret; =20 - ret =3D mcp3911_calc_scale_table(adc); + ret =3D mcp3911_calc_scale_table(vref_mv); if (ret) return ret; =20 --=20 2.43.0