From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f43.google.com (mail-wm1-f43.google.com [209.85.128.43]) (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 9381C3DF018 for ; Wed, 11 Mar 2026 12:04:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.43 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773230666; cv=none; b=uVMczC7k7xov0J0+UNhQDM8qp5pgstyRaXyX5UBZVJGQH2QxAUqEEO6M8fRFYYsXonJevBT2CldVqWwsRnkMk/+J+i2SZVvDYrQuRSVf9ylGm7hJOXgCqgSaDtPCUnkL7n+cdPiovNdxit6Gj0Ub8j2jpj9ijFFcMKdWx6gEiKY= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773230666; c=relaxed/simple; bh=NBN4EYs7xt7jqIXewQhOoqZ3pl2OD60sVTf4oEtRNyw=; h=Message-ID:Subject:From:To:Cc:Date:In-Reply-To:References: Content-Type:MIME-Version; b=HgCV+CDsrGDpsRcmkJqgGE2tu+pOdsPBL6kYSaa7UVUnN+2ZJsY1E3MnJtO/VAgbPTzCLfxgHZsl3V+DUwlOaoRJsshUGelwL41hEufMgq9HN1+4cWNKmUnRfJ96rY9uhh1DNkcHuQVyB4uIVhHGDJkd+7sczTuWw5L0jX5Kk40= 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=S9ZyC9mF; arc=none smtp.client-ip=209.85.128.43 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="S9ZyC9mF" Received: by mail-wm1-f43.google.com with SMTP id 5b1f17b1804b1-4852a9c6309so45429485e9.0 for ; Wed, 11 Mar 2026 05:04:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773230663; x=1773835463; darn=vger.kernel.org; h=mime-version:user-agent:content-transfer-encoding:references :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject :date:message-id:reply-to; bh=jIB3UajcKC7uFG6gjs/tsitE9iXxd/jUwRngeL3b5Yc=; b=S9ZyC9mFbmn0KcGhQ5cDnm7yUIiOWLCvQv2+adNqktzO+NslLdZV85jWqEkta7Z2CA XqhxIutckRxv+caQxgYSpsDAMx5e6V/HOb0+6B/ryaC314kDpzEynG08p6ArsIOkN6W2 nZuAfoXbUMVASHDNs6e3wHStvTIt8SP/ypKVXN+8iHybO7dofoefoaRtTJMQpsBCFh6Y 5hYQocoslTTJ0KKarSxJySRFdoEULwzk2ZZuXFNz6VKcNXpE4HNZItow6B9WRD2uH5+h kgIGuGU0y7qA6+uN8oLht9lEqNrQjCx5NWsJvdg9rKtn4R4WB3rVbFGLXGjfPcmdzQ4q pAHQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773230663; x=1773835463; h=mime-version:user-agent:content-transfer-encoding:references :in-reply-to:date:cc:to:from:subject:message-id:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=jIB3UajcKC7uFG6gjs/tsitE9iXxd/jUwRngeL3b5Yc=; b=q4CSuO5gCI8kO6TOE3VuAXIfO2tvFuuFcZ5H7jtbn451McN3wjTfpJmHCBc5jzWM6B va0suB8/BTgSzsi57TuSXlrJRl3AgqSJMF8Wwh0tlx45MElRuNI9iBf46MwYJRyCVGLL 8jtUP36UTdY3TPfd7O1m+CyCQ4xOZhNpKjLSAaX9lKE3EgD4rL8XcCaW2GZMdgxofx2b mTEgFTWzxBDILBqB2u8HevlU3GWHnUagld8PBhlnxeFKgAyhG3jAS40FyWXXtc5t+iNY c/UHetL6HAquEx2BidnL1MI3Pch1E6eyHig2D7WXC2diSzMQqTrD5RownSRUSk38RYKe FRwQ== X-Forwarded-Encrypted: i=1; AJvYcCUIWiQ2KjKFS93YHqrH1QRGNt9DE7WwHBEGrBT2XTeZEO+9Bxyafv2eZO3O+ANb8rkPtOvccIgKX29RRos=@vger.kernel.org X-Gm-Message-State: AOJu0YzsEXRV6I+yOpxKr35OexvGXSJ64Te73HYBeOOc1/QwrMmNco6/ B1IPqVmbVvUUhTzZMlrUe1oo9g/pEh9BBZ3bUOW+cAQFduvHGY8nJBON X-Gm-Gg: ATEYQzzKV5Fta5YFGMMZ2z8ZgAOVaubviWjUqBykRtdcSEOcyrHNBgovDlbrJnJ8LAs gUH27t8u3pFl3inS/zI/kMvjpGxovogo09ZiuG7qMoWWt31WVSs48F/3ZYCv/FFwqrbB/SzUma7 0NUXFiRBoxbGCyDyvCAOnuPEBcJX3mn4RQalXv/6il9PSnKclfqMiAGBWw/AglGB2JHZn9WpWWS G/szAuzUzlB85HsIvTqCPVME14ikHqZBdtBeFbqKaumPQWmkJXqU+sindzCJCcH8UIznQN+uTlB r+4hK6iGcvl2IkCwS1CKgxLqOiHx2KWYq61R3gbyz7NvSDRJ+P5IeV5KgZBkduNn0FfVZP0YeJF dS6A6D87lNJX3Y6Wu5BkpmEVM1v7Ql+n4gf6x4Jt2XUWEG3fD+f24W50VyimPEdAJQ2ezvPDiKG x6Toro9WAbonDMlorcGDgO2lkVGiBF9qcGZeR63uPs5A== X-Received: by 2002:a05:600c:46d2:b0:485:410c:119b with SMTP id 5b1f17b1804b1-4854b10f69fmr36440635e9.13.1773230662587; Wed, 11 Mar 2026 05:04:22 -0700 (PDT) Received: from [192.168.1.187] ([148.63.225.166]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4854b0b906esm24685175e9.4.2026.03.11.05.04.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Mar 2026 05:04:22 -0700 (PDT) Message-ID: <35205bd9f56e042ffc4a1e469060880b0db2e90a.camel@gmail.com> Subject: Re: [PATCH v2 4/5] iio: dac: ad5504: fix scale via output-range-microvolt From: Nuno =?ISO-8859-1?Q?S=E1?= To: Andy Shevchenko , Taha Ed-Dafili <0rayn.dev@gmail.com> Cc: lars@metafoo.de, Michael.Hennerich@analog.com, jic23@kernel.org, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, 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 Date: Wed, 11 Mar 2026 12:05:07 +0000 In-Reply-To: References: <20260310174835.24209-1-0rayn.dev@gmail.com> <20260310174835.24209-5-0rayn.dev@gmail.com> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable User-Agent: Evolution 3.58.3 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 On Tue, 2026-03-10 at 21:16 +0200, Andy Shevchenko wrote: > On Tue, Mar 10, 2026 at 05:48:34PM +0000, Taha Ed-Dafili wrote: > > 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. > >=20 > > Update the probe function to read the standard "output-range-microvolt" > > property as a two-element array to determine the correct full-scale ran= ge. > > Use the MILLI macro for clearer millivolt assignments and simplify the > > probe logic using a local device pointer. >=20 > ... >=20 > > =C2=A0static int ad5504_probe(struct spi_device *spi) > > =C2=A0{ > > - const struct ad5504_platform_data *pdata =3D dev_get_platdata(&spi->d= ev); > > + struct device *dev =3D &spi->dev; > > + const struct ad5504_platform_data *pdata =3D dev_get_platdata(dev); > > =C2=A0 struct iio_dev *indio_dev; > > =C2=A0 struct ad5504_state *st; > > =C2=A0 int ret; > > + u32 range[2]; >=20 > Preserve the reversed xmas tree order. >=20 > > - indio_dev =3D devm_iio_device_alloc(&spi->dev, sizeof(*st)); > > + indio_dev =3D devm_iio_device_alloc(dev, sizeof(*st)); >=20 > Unrelated change. This should be split into another patch that makes use > of it here and there. >=20 > I have a d=C3=A9j=C3=A0 vu about these comments... >=20 > > =C2=A0 if (!indio_dev) > > =C2=A0 return -ENOMEM; > > =C2=A0 > > =C2=A0 st =3D iio_priv(indio_dev); > > =C2=A0 > > - ret =3D devm_regulator_get_enable_read_voltage(&spi->dev, "vcc"); > > - if (ret < 0 && ret !=3D -ENODEV) > > + ret =3D devm_regulator_get_enable(dev, "vcc"); > > + if (ret) > > =C2=A0 return ret; >=20 > > - if (ret =3D=3D -ENODEV) { >=20 > Why remove this condition? >=20 > This might break use of the driver on ACPI systems. >=20 > > - if (pdata->vref_mv) > > - st->vref_mv =3D pdata->vref_mv; > > - else > > - dev_warn(&spi->dev, "reference voltage unspecified\n"); > > - } else { > > - st->vref_mv =3D ret / 1000; > > - } > > + > > + st->vref_mv =3D 60 * MILLI; > > + ret =3D device_property_read_u32_array(dev, "output-range-microvolt", > > + =C2=A0=C2=A0=C2=A0=C2=A0 range, 2); >=20 > ARRAY_SIZE() > (will require array_size.h) >=20 > > + if (!ret && range[1] =3D=3D 30 * MICRO) > > + st->vref_mv =3D 30 * MILLI; >=20 > This looks unusual and hard to follow. It also misses the validation > of the min of the range. And the max FWIW. If the property is given we should be strict about it and= make sure only valid inputs are given.=20 - Nuno S=C3=A1 >=20 > > + if (pdata && pdata->vref_mv) > > + st->vref_mv =3D pdata->vref_mv; >=20 > No, pdata should go. >=20 > > =C2=A0 > > =C2=A0 st->spi =3D spi; > > =C2=A0 indio_dev->name =3D spi_get_device_id(st->spi)->name; >=20 > ... >=20 > > =C2=A0 indio_dev->modes =3D INDIO_DIRECT_MODE; > > =C2=A0 > > =C2=A0 if (spi->irq) { > > - ret =3D devm_request_threaded_irq(&spi->dev, spi->irq, > > - =C2=A0=C2=A0 NULL, > > - =C2=A0=C2=A0 &ad5504_event_handler, > > - =C2=A0=C2=A0 IRQF_TRIGGER_FALLING | IRQF_ONESHOT, > > - =C2=A0=C2=A0 spi_get_device_id(st->spi)->name, > > - =C2=A0=C2=A0 indio_dev); > > + ret =3D 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); > > =C2=A0 if (ret) > > =C2=A0 return ret; > > =C2=A0 } > > =C2=A0 > > - return devm_iio_device_register(&spi->dev, indio_dev); > > + return devm_iio_device_register(dev, indio_dev); > > =C2=A0} >=20 > Unrelated changes.