From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wr1-f48.google.com (mail-wr1-f48.google.com [209.85.221.48]) (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 4EED93D47DE for ; Tue, 10 Mar 2026 17:48:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.48 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773164937; cv=none; b=K3eH8DZkHOYHn4UmKnCYLmxq/HTKdlB+MjzWBMLJW3CPTw1OlUuBM1VKFTNIYVX7MeF85+DJ72+oRwrs+RQTki+nFrWkcKHBduFpuT7MutcGt/pbzSnlkfP7n/3KzdyYrA5wCPag0oEaoKVboCI6qf7RWdg3Bt6kA4GAZRNvh+4= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773164937; c=relaxed/simple; bh=xeXVTSZzQuuFD+lMKWTOiRIKsLFrz54VBr0660xK+CQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=EhgwUBdP85L4RjXcUF3QFblJIac2jCh0NBi0mfafslti6J+zkZS/8qKmCaw2aqAPTkw8bRhcz3gaOZdbTABbaQbxNQ22ifjDtRgh60/VJPsaY9ifLBfFdpUhbNDIRc0pwvt4AiRIoRZz5eqW+hfuTrLyeeV9PkVga1itmcYTIg0= 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=jJRk7KuO; arc=none smtp.client-ip=209.85.221.48 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="jJRk7KuO" Received: by mail-wr1-f48.google.com with SMTP id ffacd0b85a97d-439af00d33cso10287292f8f.1 for ; Tue, 10 Mar 2026 10:48:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773164932; x=1773769732; 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=BslQrBMKlw57se9odRgPPZj4HtuVGPf12Q60E4FhFEw=; b=jJRk7KuOfLQOtFkoENv5UgV8Bzc0kQ3GSLDG+Br+orZehGkqgCPSNzWO7QKuXvefeb S+ES0XN7v0Dv8A753dNyxGJNITsdwBKVOiV/p8b4q3KRkcGkhsUdZHn0CWKD17pAjYDI SUtkmpWLamfIGMtux/ZYafXtBdfiD8Efl7ydzlTLYVRtQzzrdor0Y7uO8BQRYiuGWE+B bLA3fG+WJGu4WkZCSX32JO/IsUcDHoFtpQhrrUg2hUskrS5jvkQqTAkHi/2t86+flRJ8 w8VXiOUE4ko/kXRwYQeTcUbGZ1rx2ApBomAjY86/wy/VOP7hk68UPR6bHBzhs104bp5h ijJw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773164932; x=1773769732; 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=BslQrBMKlw57se9odRgPPZj4HtuVGPf12Q60E4FhFEw=; b=DHH+4cepXMAxST9k3xfHP00VQBDBAujjga9EDN+L5GcXqgfygzA6ibol9ssMZvFdev MCPrT/d9Q7Wu9R87/6uaiZHCjEUmQuDUlfCijGkdinvP2iaOkTzZe5/ENxG7kIqeCt1X craXGvDKadcxSB+p4xU/x+TPw31mNtakYUHer84aXSI5d0bsNBAHxGJGddckVA83qQLy YrbiPzLCni9PRM8FesEv4G8TO777ARf6YBBXna8hPn7b6iF2L8HQJvTYAbqQkpeZpjjX Z5rK2WcNd0XKMinDTI8EJej8LzGtpOsmxu9W0WLfpZDCN1ksaXcpGO1FsecsSUVTFcbu 5IrQ== X-Forwarded-Encrypted: i=1; AJvYcCXMrqTPLBby59xzUe21p6NHmgNC32nSmJKXYggkTrQTj/a3o5jfgoW2YZjBVXoax4Z/Gycfb/dPICXWeuc=@vger.kernel.org X-Gm-Message-State: AOJu0YxQuHk4H9L4rUEbdP3V0IPju8lybD6KNODDmsJZwJ8/tCsR/3Kf AOX4xUmWJPflRBZQtaZeg+cgU2SoSf66Ud+N7fgwyAUuWpctCjJHUrtY X-Gm-Gg: ATEYQzy/pUVavC+ecwDrGsO/B7NBfmWUtvGXGHHHsfOWcf/7hmB/EnUA7IyaflfWbgw EPW+U5J++A5xTv6Ah4aEPTuz7dUjJuuKiQSUZGpjbj7GWnApI/Lq2zhS8t26sIA1j10hquIcF7o 2xv4aHO9J66tT5vgY+enDx0ALOXob2zkP3dq0y00M2zLuebSU+0Feazv9D+LsTXPJpQIFOcpg5p SXr2FyIp0kBt4qq9/u6Let9USyTq2swUKevRP30RhZjJJ1HnZkDO+7KFhGdRk9rqCLndV6NNyXO UCYmreXfmbrnLTYAzzCb6yZBKlksgWUt5X0WCeVPMsWTEFobmpLBQx3p/OsaYSSREgKxwBIhLSe qGNeml3fNs5IJRHFjI4yMfmddCbVjSo4sU96HHiUSu8WwUnXnYCJlcSj9aaQQkK64+RrLEhnMLA EQwFm8jWVQyjvJ/3xmBmqOMqoPW6RPOl7UbGi/s37d+ByVS7h2tr11tXT3mg== X-Received: by 2002:adf:e802:0:b0:439:f61a:e005 with SMTP id ffacd0b85a97d-439f61ae05emr1742261f8f.32.1773164931625; Tue, 10 Mar 2026 10:48:51 -0700 (PDT) Received: from db07.1337.ma ([197.230.240.146]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-439dae45786sm42986166f8f.32.2026.03.10.10.48.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Mar 2026 10:48:51 -0700 (PDT) From: Taha Ed-Dafili <0rayn.dev@gmail.com> To: lars@metafoo.de, Michael.Hennerich@analog.com, jic23@kernel.org, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org Cc: dlechner@baylibre.com, nuno.sa@analog.com, andy@kernel.org, skhan@linuxfoundation.org, me@brighamcampbell.com, linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Taha Ed-Dafili <0rayn.dev@gmail.com> Subject: [PATCH v2 4/5] iio: dac: ad5504: fix scale via output-range-microvolt Date: Tue, 10 Mar 2026 17:48:34 +0000 Message-ID: <20260310174835.24209-5-0rayn.dev@gmail.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260310174835.24209-1-0rayn.dev@gmail.com> References: <20260310174835.24209-1-0rayn.dev@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit The AD5504 full-scale range is hardware-determined by the R_SEL pin (0-30V or 0-60V). Previously, the driver incorrectly used the VCC regulator voltage to calculate the scale. Update the probe function to read the standard "output-range-microvolt" property as a two-element array to determine the correct full-scale range. Use the MILLI macro for clearer millivolt assignments and simplify the probe logic using a local device pointer. Suggested-by: David Lechner Suggested-by: Andy Shevchenko Signed-off-by: Taha Ed-Dafili <0rayn.dev@gmail.com> --- drivers/iio/dac/ad5504.c | 43 ++++++++++++++++++++++------------------ 1 file changed, 24 insertions(+), 19 deletions(-) diff --git a/drivers/iio/dac/ad5504.c b/drivers/iio/dac/ad5504.c index e71218c44982..cd563460fc0a 100644 --- a/drivers/iio/dac/ad5504.c +++ b/drivers/iio/dac/ad5504.c @@ -12,10 +12,12 @@ #include #include #include +#include #include #include #include #include +#include #include #include @@ -271,28 +273,31 @@ static const struct iio_chan_spec ad5504_channels[] = { static int ad5504_probe(struct spi_device *spi) { - const struct ad5504_platform_data *pdata = dev_get_platdata(&spi->dev); + struct device *dev = &spi->dev; + const struct ad5504_platform_data *pdata = dev_get_platdata(dev); struct iio_dev *indio_dev; struct ad5504_state *st; int ret; + u32 range[2]; - indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st)); + indio_dev = devm_iio_device_alloc(dev, sizeof(*st)); if (!indio_dev) return -ENOMEM; st = iio_priv(indio_dev); - ret = devm_regulator_get_enable_read_voltage(&spi->dev, "vcc"); - if (ret < 0 && ret != -ENODEV) + ret = devm_regulator_get_enable(dev, "vcc"); + if (ret) return ret; - if (ret == -ENODEV) { - if (pdata->vref_mv) - st->vref_mv = pdata->vref_mv; - else - dev_warn(&spi->dev, "reference voltage unspecified\n"); - } else { - st->vref_mv = ret / 1000; - } + + st->vref_mv = 60 * MILLI; + ret = device_property_read_u32_array(dev, "output-range-microvolt", + range, 2); + if (!ret && range[1] == 30 * MICRO) + st->vref_mv = 30 * MILLI; + + if (pdata && pdata->vref_mv) + st->vref_mv = pdata->vref_mv; st->spi = spi; indio_dev->name = spi_get_device_id(st->spi)->name; @@ -305,17 +310,17 @@ static int ad5504_probe(struct spi_device *spi) indio_dev->modes = INDIO_DIRECT_MODE; if (spi->irq) { - ret = devm_request_threaded_irq(&spi->dev, spi->irq, - NULL, - &ad5504_event_handler, - IRQF_TRIGGER_FALLING | IRQF_ONESHOT, - spi_get_device_id(st->spi)->name, - indio_dev); + ret = devm_request_threaded_irq(dev, spi->irq, + NULL, + &ad5504_event_handler, + IRQF_TRIGGER_FALLING | IRQF_ONESHOT, + spi_get_device_id(st->spi)->name, + indio_dev); if (ret) return ret; } - return devm_iio_device_register(&spi->dev, indio_dev); + return devm_iio_device_register(dev, indio_dev); } static const struct spi_device_id ad5504_id[] = { -- 2.47.3