| Message ID | 20260903153836.373267-3-dario.binacchi@amarulasolutions.com |
|---|---|
| State | New |
| Headers |
Return-Path:
<linux-amarula+bncBCQ4XFG47UFRBENJ43KAMGQEQYQQSVY@amarulasolutions.com>
X-Original-To: linux-amarula@patchwork.amarulasolutions.com
Delivered-To: linux-amarula@patchwork.amarulasolutions.com
Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com
[209.85.128.72])
by ganimede.amarulasolutions.com (Postfix) with ESMTPS id 6C9393F0E6
for <linux-amarula@patchwork.amarulasolutions.com>;
Thu, 3 Sep 2026 17:38:58 +0200 (CEST)
Received: by mail-wm1-f72.google.com with SMTP id
5b1f17b1804b1-49b0d7a07acsf27906855e9.3
for <linux-amarula@patchwork.amarulasolutions.com>;
Thu, 03 Sep 2026 08:38:58 -0700 (PDT)
ARC-Seal: i=2; a=rsa-sha256; t=1788449938; cv=pass;
d=google.com; s=arc-20260327;
b=lyTEOTJBOCu2vjASoh0kLn59CZvK4PIuVNmTQj267MEFTuqHLhXoz3dQt+yTDnwV24
h6g72bg9/Spx8vqK7oxHiCiGcTeSH8NibkWCj9jj/siwzCKJWEFQJgkYbdm53zvM7I54
DAXDJPnE3SqYkU3BYDKkumuRKg7wDaLgx7l/JR8SK3Z+PE3XXZlesJphHHYXbI6aWQbI
TziGO9dVeN4vm4tU9BerCdecMxkRzjTgKEm/2rAQqJlgRI6Df7jCqpJuGq53uavA6TyU
bfDYNrCAN9eKNVdwZRpK9ASm8lQZwC4maG1SPGgLY5WR/lKIZ4zydjWiHpZTR0l2YmTJ
TsSA==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com;
s=arc-20260327;
h=list-unsubscribe:list-archive:list-help:list-post:list-id
:mailing-list:precedence:mime-version:references:in-reply-to
:message-id:date:subject:cc:to:from:dkim-signature;
bh=FUGPljnPGyGjm9qSRMzQKA5zs1fmKl/g9j5yxyPnY2Y=;
fh=xjMXdK3vAib5rBYnuoK6iRvkjDQ1M59EqtrxUfx3YlE=;
b=r82LxfSWYiPacWDBvaZoaPj9rOAz8mRXdGKbzJ7BPmOliOjRT/U8+tZG1EYNu3Jrjj
84OTBLKP+ccEEL9nu3QbqTiA4SBjmrvD3T+wRkWktIFimScsBbLzSqpTrA3NsrYEAKf9
nPdWgks5CMV91k/KzMulfpvpE0/lAZUptXI0MqE5BOc9xQMwZI9SlHmszDmaKKZgyG3x
kc2yQ5AfIshhebNIV/n31ArqiOQTnX9+0+/00xEsGvt/DSabMyAXN7qLT5WkrkfmoYLd
UJeDUJsKiNK7WcUqw/q2CCceQGIADsvWRR2fNHGwJ15HWA4KTC0aoUoSegNyZRgfZODz
+W+g==;
darn=patchwork.amarulasolutions.com
ARC-Authentication-Results: i=2; mx.google.com;
dkim=pass header.i=@amarulasolutions.com header.s=google
header.b=NFqX85tp;
spf=pass (google.com: domain of dario.binacchi@amarulasolutions.com
designates 209.85.220.41 as permitted sender)
smtp.mailfrom=dario.binacchi@amarulasolutions.com;
dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=amarulasolutions.com;
dara=neutral header.i=@amarulasolutions.com
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=amarulasolutions.com; s=google; t=1788449938; x=1789054738;
darn=patchwork.amarulasolutions.com;
h=list-unsubscribe:list-archive:list-help:list-post:list-id
:mailing-list:precedence:content-type
:x-original-authentication-results:x-original-sender:mime-version
:references:in-reply-to:message-id:date:subject:cc:to:from:from:to
:cc:subject:date:message-id:reply-to:content-type;
bh=FUGPljnPGyGjm9qSRMzQKA5zs1fmKl/g9j5yxyPnY2Y=;
b=hn7s7U21uf1x6rNEmH9mA44rumzymAiY+o4RZKu1EXtqLv0vrJEvP6zRtPucBeYSFb
V5/V1YiMw1WYINhs3DFGDdzafrdDYh6NlPiSeqY9NUPkJYlaP7XhSGdhb3nlYW2j5Vqb
d5fPDU0tn6S1O0FfWfeavWhE0fSU+8epuJXj8=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20251104; t=1788449938; x=1789054738;
h=list-unsubscribe:list-archive:list-help:list-post
:x-spam-checked-in-group:list-id:mailing-list:precedence
:content-type:x-original-authentication-results:x-original-sender
:mime-version:references:in-reply-to:message-id:date:subject:cc:to
:from:x-gm-gg:x-beenthere:x-gm-message-state:from:to:cc:subject:date
:message-id:reply-to:content-type;
bh=FUGPljnPGyGjm9qSRMzQKA5zs1fmKl/g9j5yxyPnY2Y=;
b=B8qodO7UswX8wXv/0g21VQOV8z9d0e9FUf0P3hAUdnGnXRs9Kq5uFpBQdELfFP8G+p
296Ze4mMUEUPf8rh+fHeZt0fjRfLed0oewgRkn/vpi9U5F8P4h25mgNDQJXEgMem6uH7
aS4y858Sy27zeNaxqO4U9CF3U/GYtdpfsBT6iOUSUDDQQXU5Oi88hXh0eZHr2idWpi9R
3hYsA9GpCIx9pNA1K8CeQbJRgw82oUe5WUkorTKbZviHOAdDqYmatMdFSCnesdZQ1y/z
WaJx6yZKF2IwPbMTAHmC+5kk3oe2O9hjsNUppC9L9bDsjo6GssPPrNV1w6yG+GPUNT8L
hW9Q==
X-Forwarded-Encrypted: i=2;
AKwUvByUyhC4CtSRUnjYedV1iKypf6CBuFtjL0Bt4pFGIV6rf+CvY4/rh/XYqKvoGo9zTrgQC67EaMsywbLi9TQv@patchwork.amarulasolutions.com
X-Gm-Message-State: AFuF++km8BjPTa2aQu2u7z0LXrJYbhl1e8AwO6TkeR+3K5nXy6HzaNAn
xdB4mMwjLYw+h78T6HbrALuO3Sutd/POMDuv6rWZp8jSYY6rriatHkfaDAUMP7nHBXiUrLz/6dO
z3Q==
X-Received: by 2002:a05:600c:4e03:b0:499:60bf:c6f7 with SMTP id
5b1f17b1804b1-49cf5be1652mr17508885e9.13.1788449938047;
Thu, 03 Sep 2026 08:38:58 -0700 (PDT)
X-BeenThere: linux-amarula@amarulasolutions.com;
h="ATskLdfv/xTEak3o54K/OxQM/ljFdMAfOZs/aBtQyUGmHUgWwA=="
Received: by 2002:a05:600c:19cd:b0:496:b3a3:20bb with SMTP id
5b1f17b1804b1-49cf6613375ls430905e9.0.-pod-prod-09-eu; Thu, 03 Sep 2026
08:38:56 -0700 (PDT)
X-Forwarded-Encrypted: i=2;
AKwUvBwMQbROorBX0y0fKJqZCKQNftICcPVxQbrf5dbbtB1aXr+zGGUJCk9UFR/HawyfxFONXkpx+YE7LUQ4qvg+@amarulasolutions.com
X-Received: by 2002:a5d:4562:0:b0:484:373b:5f12 with SMTP id
ffacd0b85a97d-485860c48dcmr2198359f8f.24.1788449936324;
Thu, 03 Sep 2026 08:38:56 -0700 (PDT)
ARC-Seal: i=1; a=rsa-sha256; t=1788449936; cv=none;
d=google.com; s=arc-20260327;
b=II3RFpJBxf9zjAx7ofVydMf00OTnb3npWxVp4MDWW1N/LikSB5KNOH3inPSTzwj6Ob
BlXPOzXpFw8REQV2M+RSEE/nehjermUU1aueJmu8smDVWlEulTF1X98TMbYwu+KBn1wi
WYvHWeDeAnCfdoI7WjHUAkFmHJscAxp6GcXZXvLYyEUdN604JC6VVtZr7KY1ANFsiPnE
WK5vgPXPR/OAzczD62ImBB+KZM2uNmZ88ZVVAWfFQtAEl0XBSfXbjKZZkhVGChyvv6ve
FKB+z7Xvx2iCWV8ubbXPzga2B8gv65N/1KIyamE/noPJtyHBShz+Ramm0Q3bXZmBrrhx
emzg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com;
s=arc-20260327;
h=content-transfer-encoding:mime-version:references:in-reply-to
:message-id:date:subject:cc:to:from:dkim-signature;
bh=f1yqnW0S/sSBoLbGGpdBGirLwApxYqu22jjVHzyaFhI=;
fh=2FkePlqUjdQJsmMhHm1BWwQFnKCMemt1aWLqiXq9eI4=;
b=EWa+QqihQ4UfOfoGbH6KRpeT7hw8bDL7svtGX4z2yoepKZ2yxKAXr6p/svFeqi2fes
Cd4fDU2kbrDQrhYhfn1URylFN4eWthps6Mw4hbjO/Glwu2rBqpaFUZr01Fq9cKb1wrWD
CDWpf+IrjYwrNwWIIxGQ1Vo0j7hNUSWhKuhJZUevefNNGWjyceO7AdxZKrWdC5Kntujg
fjVcofzkB9vR28tFvH2Fw0l/lmYnh4dCSGNY7Gxdm8SWhUd8S0byJ54LHtsTxHfoP6C3
KhspPPJdFnEiWGo+O2wOmlDTe0x3ON4aq6JZ0KMktKezXteUq23AGelDiEmIjX5eGJ2c
WBwg==;
dara=google.com
ARC-Authentication-Results: i=1; mx.google.com;
dkim=pass header.i=@amarulasolutions.com header.s=google
header.b=NFqX85tp;
spf=pass (google.com: domain of dario.binacchi@amarulasolutions.com
designates 209.85.220.41 as permitted sender)
smtp.mailfrom=dario.binacchi@amarulasolutions.com;
dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=amarulasolutions.com;
dara=neutral header.i=@amarulasolutions.com
Received: from mail-sor-f41.google.com (mail-sor-f41.google.com.
[209.85.220.41])
by mx.google.com with SMTPS id
ffacd0b85a97d-484494cc9c2sor1178249f8f.19.2026.09.03.08.38.56
for <linux-amarula@amarulasolutions.com>
(Google Transport Security);
Thu, 03 Sep 2026 08:38:56 -0700 (PDT)
Received-SPF: pass (google.com: domain of dario.binacchi@amarulasolutions.com
designates 209.85.220.41 as permitted sender) client-ip=209.85.220.41;
X-Forwarded-Encrypted: i=1;
AKwUvBy/v/+emTsmbzsF/LsZ7EG2eiee34R2qeFGz/pOXuYvq9gLjSnasCtIDkPGwTeU+xx5noN/In7tZN1+LgYr@amarulasolutions.com
X-Gm-Gg: AYBFou37rwmo62cuzQVEy1htefKMpZG4NFtlaeXX3xpD0VsHXvG2/vpRTDJVcfmom/F
6rSQyCSztzBPbJAA/XRbjcnhPLOjDn9bVVves+GWTgTOfJ3SRe1W15enWmB0kWgNcdvyDVKfk9Z
IpGK8d3Fgv3LIuHxOPapE0uE5XIGhjUAdTJZoZ6yZ9Pj70gDeg7ZlFz1YkXuIT3i7hgRc17ZqvP
PHCXIaBMTVFPQd3s4KRUS1mqaIo9gq/R1Sg/393AjpAhP0tqab8cQ/WWZAN1bZLqOWDA7Gc9K1x
dZ/m4rx3U+nRicHdncCs0Cq6Gy/ZNLvHX8xmwcSSKAw8bOcHdb+ljle11yO9b/VxE3vjSv7XyjD
K1BMfIt6b/VC04jGOuajZn7+ito8KssE3Rj+xvW1Au5Wur+rTcVGaifhyWJmlARLwrfLjbrJNRS
pxxCNCnnih7v2kPMSv/X82h3kmsKx2WSsFNsfxY8AkC8tyGWn/rcSoKuvL1+B5iCbFQ0qFjwdQO
f/H0lC2B4JJpmgHCBbeArzwzhT8BZ7dJ5QD+B/MGF5DoCHFfi9WPbZvq4jm61AHNqT39eZOldNB
QRLEqKAdVBhmaA7G2GUPjZmmOHsgxDFfw9gshxiCwU49U1UihJZIkgE=
X-Received: by 2002:adf:e3c1:0:b0:485:847f:fd82 with SMTP id
ffacd0b85a97d-48586034408mr1988754f8f.8.1788449935865;
Thu, 03 Sep 2026 08:38:55 -0700 (PDT)
Received: from dario-ThinkPad-P14s-Gen-5.amarulasolutions.com
(host-95-245-93-90.retail.telecomitalia.it. [95.245.93.90])
by smtp.gmail.com with ESMTPSA id
ffacd0b85a97d-48448e72df2sm15366301f8f.1.2026.09.03.08.38.54
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Thu, 03 Sep 2026 08:38:55 -0700 (PDT)
From: Dario Binacchi <dario.binacchi@amarulasolutions.com>
To: linux-kernel@vger.kernel.org
Cc: michael@amarulasolutions.com,
linux-amarula@amarulasolutions.com,
Dario Binacchi <dario.binacchi@amarulasolutions.com>,
Brian Masney <bmasney+clk@redhat.com>,
Jerome Brunet <jbrunet+clk@baylibre.com>,
Stephen Boyd <sboyd@kernel.org>,
linux-clk@vger.kernel.org
Subject: [PATCH v13 2/4] clk: scmi: reject SSC configuration out of the OEM
field range
Date: Thu, 3 Sep 2026 17:32:14 +0200
Message-ID: <20260903153836.373267-3-dario.binacchi@amarulasolutions.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20260903153836.373267-1-dario.binacchi@amarulasolutions.com>
References: <20260903153836.373267-1-dario.binacchi@amarulasolutions.com>
MIME-Version: 1.0
X-Original-Sender: dario.binacchi@amarulasolutions.com
X-Original-Authentication-Results: mx.google.com; dkim=pass
header.i=@amarulasolutions.com header.s=google header.b=NFqX85tp;
spf=pass (google.com: domain of dario.binacchi@amarulasolutions.com
designates 209.85.220.41 as permitted sender)
smtp.mailfrom=dario.binacchi@amarulasolutions.com;
dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=amarulasolutions.com;
dara=neutral header.i=@amarulasolutions.com
Content-Type: text/plain; charset="UTF-8"
Precedence: list
Mailing-list: list linux-amarula@amarulasolutions.com;
contact linux-amarula+owners@amarulasolutions.com
List-ID: <linux-amarula.amarulasolutions.com>
X-Spam-Checked-In-Group: linux-amarula@amarulasolutions.com
X-Google-Group-Id: 476853432473
List-Post:
<https://groups.google.com/a/amarulasolutions.com/group/linux-amarula/post>,
<mailto:linux-amarula@amarulasolutions.com>
List-Help:
<https://support.google.com/a/amarulasolutions.com/bin/topic.py?topic=25838>,
<mailto:linux-amarula+help@amarulasolutions.com>
List-Archive:
<https://groups.google.com/a/amarulasolutions.com/group/linux-amarula/>
List-Unsubscribe:
<mailto:googlegroups-manage+476853432473+unsubscribe@googlegroups.com>,
<https://groups.google.com/a/amarulasolutions.com/group/linux-amarula/subscribe>
|
| Series |
Support spread spectrum clocking for i.MX8M PLLs
|
|
Commit Message
Dario Binacchi
Sept. 3, 2026, 3:32 p.m. UTC
The i.MX SCMI OEM extension stores the spread in an 8-bit field, in
tenths of a percent, and the modulation frequency in a 16-bit field.
FIELD_PREP() silently truncates values that do not fit in the target
field. Moreover, the conversion from permyriad to tenths of a percent
turns values below 10 permyriad into zero, which is then passed to the
firmware as no spread at all.
Reject these cases with a warning instead of silently programming a
configuration different from the requested one.
Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>
---
Changes in v13:
- New patch
drivers/clk/clk-scmi-oem.c | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)
Comments
On Thu, Sep 03, 2026 at 05:32:14PM +0200, Dario Binacchi wrote: >The i.MX SCMI OEM extension stores the spread in an 8-bit field, in >tenths of a percent, and the modulation frequency in a 16-bit field. > >FIELD_PREP() silently truncates values that do not fit in the target >field. Moreover, the conversion from permyriad to tenths of a percent >turns values below 10 permyriad into zero, which is then passed to the >firmware as no spread at all. > >Reject these cases with a warning instead of silently programming a >configuration different from the requested one. > >Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com> > >--- > >Changes in v13: > - New patch > > drivers/clk/clk-scmi-oem.c | 15 ++++++++++++++- > 1 file changed, 14 insertions(+), 1 deletion(-) > >diff --git a/drivers/clk/clk-scmi-oem.c b/drivers/clk/clk-scmi-oem.c >index c1ebbdc6bbc5..4dac608edd4c 100644 >--- a/drivers/clk/clk-scmi-oem.c >+++ b/drivers/clk/clk-scmi-oem.c >@@ -35,6 +35,7 @@ scmi_clk_imx_set_spread_spectrum(struct clk_hw *hw, > const struct clk_spread_spectrum *ss_conf) > { > struct scmi_clk *clk = to_scmi_clk(hw); >+ u32 spread_pm = ss_conf->spread_bp / 10; > int ret; > u32 val; > >@@ -44,7 +45,19 @@ scmi_clk_imx_set_spread_spectrum(struct clk_hw *hw, > * extConfigValue[24] - Enable/Disable > * extConfigValue[31:25] - Reserved > */ >- val = FIELD_PREP(SCMI_CLOCK_IMX_SS_PERCENTAGE_MASK, ss_conf->spread_bp / 10); >+ if (!spread_pm || spread_pm > FIELD_MAX(SCMI_CLOCK_IMX_SS_PERCENTAGE_MASK)) { >+ dev_warn(clk->dev, "%s: spread (%u permyriad) out of range\n", >+ clk_hw_get_name(hw), ss_conf->spread_bp); >+ return -EINVAL; sashiko's comments is valid. And patch 1 & 3 have fixes tag. Patch 2 and 4 are new patches. If you would like patch 1 & 3 to be accepted in this 7.13, better post them as separate patchset. Then CLK maintainer may pick them up for this release. Regards Peng >+ } >+ >+ if (ss_conf->modfreq_hz > FIELD_MAX(SCMI_CLOCK_IMX_SS_MOD_FREQ_MASK)) { >+ dev_warn(clk->dev, "%s: modulation frequency (%u Hz) out of range\n", >+ clk_hw_get_name(hw), ss_conf->modfreq_hz); >+ return -EINVAL; >+ } >+ >+ val = FIELD_PREP(SCMI_CLOCK_IMX_SS_PERCENTAGE_MASK, spread_pm); > val |= FIELD_PREP(SCMI_CLOCK_IMX_SS_MOD_FREQ_MASK, ss_conf->modfreq_hz); > if (ss_conf->method != CLK_SPREAD_NO) > val |= SCMI_CLOCK_IMX_SS_ENABLE_MASK; >-- >2.43.0 > > To unsubscribe from this group and stop receiving emails from it, send an email to linux-amarula+unsubscribe@amarulasolutions.com.
Hi Peng, On Fri, Sep 4, 2026 at 6:34 AM Peng Fan <peng.fan@oss.nxp.com> wrote: > > On Thu, Sep 03, 2026 at 05:32:14PM +0200, Dario Binacchi wrote: > >The i.MX SCMI OEM extension stores the spread in an 8-bit field, in > >tenths of a percent, and the modulation frequency in a 16-bit field. > > > >FIELD_PREP() silently truncates values that do not fit in the target > >field. Moreover, the conversion from permyriad to tenths of a percent > >turns values below 10 permyriad into zero, which is then passed to the > >firmware as no spread at all. > > > >Reject these cases with a warning instead of silently programming a > >configuration different from the requested one. > > > >Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com> > > > >--- > > > >Changes in v13: > > - New patch > > > > drivers/clk/clk-scmi-oem.c | 15 ++++++++++++++- > > 1 file changed, 14 insertions(+), 1 deletion(-) > > > >diff --git a/drivers/clk/clk-scmi-oem.c b/drivers/clk/clk-scmi-oem.c > >index c1ebbdc6bbc5..4dac608edd4c 100644 > >--- a/drivers/clk/clk-scmi-oem.c > >+++ b/drivers/clk/clk-scmi-oem.c > >@@ -35,6 +35,7 @@ scmi_clk_imx_set_spread_spectrum(struct clk_hw *hw, > > const struct clk_spread_spectrum *ss_conf) > > { > > struct scmi_clk *clk = to_scmi_clk(hw); > >+ u32 spread_pm = ss_conf->spread_bp / 10; > > int ret; > > u32 val; > > > >@@ -44,7 +45,19 @@ scmi_clk_imx_set_spread_spectrum(struct clk_hw *hw, > > * extConfigValue[24] - Enable/Disable > > * extConfigValue[31:25] - Reserved > > */ > >- val = FIELD_PREP(SCMI_CLOCK_IMX_SS_PERCENTAGE_MASK, ss_conf->spread_bp / 10); > >+ if (!spread_pm || spread_pm > FIELD_MAX(SCMI_CLOCK_IMX_SS_PERCENTAGE_MASK)) { > >+ dev_warn(clk->dev, "%s: spread (%u permyriad) out of range\n", > >+ clk_hw_get_name(hw), ss_conf->spread_bp); > >+ return -EINVAL; > > sashiko's comments is valid. > > And patch 1 & 3 have fixes tag. Patch 2 and 4 are new patches. > If you would like patch 1 & 3 to be accepted in this 7.13, better post them > as separate patchset. Then CLK maintainer may pick them up for this release. I'd rather keep a single series, since patch 2 depends on patch 1. In v14 the two fixes come first so they can be picked up separately. Sashiko's comment is addressed in v14. Thanks and regards, Dario > > Regards > Peng > > >+ } > >+ > >+ if (ss_conf->modfreq_hz > FIELD_MAX(SCMI_CLOCK_IMX_SS_MOD_FREQ_MASK)) { > >+ dev_warn(clk->dev, "%s: modulation frequency (%u Hz) out of range\n", > >+ clk_hw_get_name(hw), ss_conf->modfreq_hz); > >+ return -EINVAL; > >+ } > >+ > >+ val = FIELD_PREP(SCMI_CLOCK_IMX_SS_PERCENTAGE_MASK, spread_pm); > > val |= FIELD_PREP(SCMI_CLOCK_IMX_SS_MOD_FREQ_MASK, ss_conf->modfreq_hz); > > if (ss_conf->method != CLK_SPREAD_NO) > > val |= SCMI_CLOCK_IMX_SS_ENABLE_MASK; > >-- > >2.43.0 > > > >
diff --git a/drivers/clk/clk-scmi-oem.c b/drivers/clk/clk-scmi-oem.c index c1ebbdc6bbc5..4dac608edd4c 100644 --- a/drivers/clk/clk-scmi-oem.c +++ b/drivers/clk/clk-scmi-oem.c @@ -35,6 +35,7 @@ scmi_clk_imx_set_spread_spectrum(struct clk_hw *hw, const struct clk_spread_spectrum *ss_conf) { struct scmi_clk *clk = to_scmi_clk(hw); + u32 spread_pm = ss_conf->spread_bp / 10; int ret; u32 val; @@ -44,7 +45,19 @@ scmi_clk_imx_set_spread_spectrum(struct clk_hw *hw, * extConfigValue[24] - Enable/Disable * extConfigValue[31:25] - Reserved */ - val = FIELD_PREP(SCMI_CLOCK_IMX_SS_PERCENTAGE_MASK, ss_conf->spread_bp / 10); + if (!spread_pm || spread_pm > FIELD_MAX(SCMI_CLOCK_IMX_SS_PERCENTAGE_MASK)) { + dev_warn(clk->dev, "%s: spread (%u permyriad) out of range\n", + clk_hw_get_name(hw), ss_conf->spread_bp); + return -EINVAL; + } + + if (ss_conf->modfreq_hz > FIELD_MAX(SCMI_CLOCK_IMX_SS_MOD_FREQ_MASK)) { + dev_warn(clk->dev, "%s: modulation frequency (%u Hz) out of range\n", + clk_hw_get_name(hw), ss_conf->modfreq_hz); + return -EINVAL; + } + + val = FIELD_PREP(SCMI_CLOCK_IMX_SS_PERCENTAGE_MASK, spread_pm); val |= FIELD_PREP(SCMI_CLOCK_IMX_SS_MOD_FREQ_MASK, ss_conf->modfreq_hz); if (ss_conf->method != CLK_SPREAD_NO) val |= SCMI_CLOCK_IMX_SS_ENABLE_MASK;