From patchwork Fri Sep 4 10:06:32 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dario Binacchi X-Patchwork-Id: 4840 Return-Path: X-Original-To: linux-amarula@patchwork.amarulasolutions.com Delivered-To: linux-amarula@patchwork.amarulasolutions.com Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by ganimede.amarulasolutions.com (Postfix) with ESMTPS id AF7093F182 for ; Fri, 4 Sep 2026 12:12:57 +0200 (CEST) Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-49cc954a3edsf6238675e9.2 for ; Fri, 04 Sep 2026 03:12:57 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1788516777; cv=pass; d=google.com; s=arc-20260327; b=BPlU+jY9oDlyWuXQT7cVQPQZE2jnHKsp2xLpbLdd3OMcaIFq9O0Q9Ejn2eBbmLBi6P GCUOYsRsps6c6nDTBQI+o8Y6512SmkoRfXbDCzds1Ib/Po+GBujj/Pp/b56+OXO4B9Ik 9YSklNTqwVHjFyMT5RSNSR+uyuPcB19/846sK22jU9qqYZhVVTAmPBSd5xe+hyPclnTH yX8lzzhRcT6SarwkOWX5sSJy6glxFin85ZFjAoHx871r32eEzb3rIEtdoaI4cKcui/yu OqQoi7Si343F7FBH/65+nl3hMrk4HMb/nPLkpcuUEYTpxcEIvVfqUm/G0JgpaMzS1tEI a0kw== 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=AHxupVROvdGzYTvCkQ/5g19jYGLAsD/M8OByqZUzjFk=; fh=AkK7pZbl3lRc11/r2TpDzBzzeyr7rFpOoEUXniGHgYU=; b=UART1TpdspOB99xs/5osCb/7rsl8gGq+63oqnTGISewLXAartrzI0UgfC/0hkKr+UT rUst7P8d6tHca4biEx4xU+mHYfcdblTx+YRlk9ph+uB7I289n6yaERQKqRBtyswKHwj/ Ogx7Lz1ZymhrqDpAHuVmy0/PsuabSSNmOjm0g9Af5paALmILNeeZcibkd9V+S2cD8M8r 7cbXSzjE+tjAruQ+5/Pa86cl7JRW1xv4OLbYE2bM+rOzAt9I7Y1buJcUNjMlHXBHAgPo h0II7QonmTSdA0Tpf/egbdUcTYbccqDAasKjO+7hkdVgyN9X57ur277UTxdlHdI5b6c0 6euA==; darn=patchwork.amarulasolutions.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=RbOMx1n3; 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=1788516777; x=1789121577; 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=AHxupVROvdGzYTvCkQ/5g19jYGLAsD/M8OByqZUzjFk=; b=IkbzNQ5PF2f5FB1YaX817f1vGOGgo6fcTFZYEKOuoHLPKgz+tpuUm4xXYqZlqEmH23 UEEW6fJkO3r8DlYg2SBiGP6eUwe/BE26IyEq1XqpS28sTAUetHnezo3zHHCGN+4f9CxJ fc7PlXa1q5UhYpNBz3oRJKR9joYe+6laBuV58= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788516777; x=1789121577; 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=AHxupVROvdGzYTvCkQ/5g19jYGLAsD/M8OByqZUzjFk=; b=Y1k9b80R5SxyyD1FSP1CWnCzk4URFekSkWeMvYqv/oEMQopP3UMRerMWOzQ2OAi7nf NCwvKyNff3sS65SLHgiNDG01iqAUfqa0AiDBZ/MtKYPReyvtFAPTYKdQk54HukaYG2nO OGSz6TLp6y8I6+TL3HRDRMEbCziM/cyOKggYRakW34480PrHAjCmbCxy07z+LB63OXWP L1WmRSfr0fx9npyPtFDd359Ybr/kfRW1z5Be06XO14ucX50xGulvxKWPryoyP2qW2Ydq Uh5hWQni+yjI07dtlfuu8kt/eSfYGgcRn89od70nBqdDWBjqSRbtPheNo6SLlNl2IGic RYlg== X-Forwarded-Encrypted: i=2; AKwUvByh3WopbzfoSf579dsd1nMOwb7Y0Tl0lOJiTksNoIGCipHR8UYRxPioVGw7j+ac/o9o0heCtclVlRtaUbrx@patchwork.amarulasolutions.com X-Gm-Message-State: AFuF++kTrlDHYG71oAkgxXN+ABN50lWECQOOfFrSoNoTOM4HmyWrvxQ9 70w+q+6jyopGdEq0MZrgIjH8q+641r6i5xZI4l7RXxTy+9AUXLRdEYvf9/NvP5L9y5iAIA== X-Received: by 2002:a05:600c:64c6:b0:49c:fa20:cc02 with SMTP id 5b1f17b1804b1-49cfa20ccaemr27063445e9.25.1788516777231; Fri, 04 Sep 2026 03:12:57 -0700 (PDT) X-BeenThere: linux-amarula@amarulasolutions.com; h="ATskLdd11yJq0PWOeQWKHMIr1hSEK+Z9YVNPpciP84FcCHcuRQ==" Received: by 2002:adf:e009:0:20b0:461:9ef2:cae6 with SMTP id ffacd0b85a97d-485864dd386ls460652f8f.1.-pod-prod-04-eu; Fri, 04 Sep 2026 03:12:55 -0700 (PDT) X-Forwarded-Encrypted: i=2; AKwUvBx3BFy0ui/RyxPU7TGp/HdpjtyY2iYH1ERyrduFs3aCkt7s2Bn/5Y9RtHG31krf5pZlJXWWbRHyS5raay6j@amarulasolutions.com X-Received: by 2002:a05:6000:2084:b0:485:8a46:b3d0 with SMTP id ffacd0b85a97d-4858a46b5a1mr3531370f8f.56.1788516775232; Fri, 04 Sep 2026 03:12:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1788516775; cv=none; d=google.com; s=arc-20260327; b=swfTdDP+4nD+o3UvAC38RId6vsmlk8P3Pt2mN3+wWIGdJgu1GakHWVe02xMB2+pom/ pM5HhynVVHCFCEf1lYTH80aI5j/rGqo6x7nMfjH8aNnmB6kAP43gcq3K6tMOVQaDrpJn ACu1FkKQ8UwtfLtdyoVfoewylDojSbYJ8+4zxeEKfvHe6ggACaj9a1tO1jRwc/3HZCWm 1YVMd4+XqhrxWIp3qG7YxlwILl4SjzLj8VrilRbiMkWli7YkZfB//mj0NidZLvbh7W+H 2vZumM+PNudddCMcbArbgJmLQg98vaHYE9BpHlwJEBtDd5ETuVgq/zWLrV8I+QdkEAQx GBNA== 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=fjBHI89nbApApOn8aT/Os8kMb1n8Jfct1CD1+zTK8UU=; fh=2j39MjyE4kkhkLlxm00RRh0IjGtIFMkQLqS5+CKIsVg=; b=NzeGZtDsoGK0kfK8w/cSqae4CBnMa+t93cXNOPCa+FwJ9KTJZ0p40mH7hLuLPCRGOh a+V4Mra7rAxbegrRrC7N2lio2uMKImuAjZ1ePVNiHzhb1PTCw2EP4sNmFvnHwF9UwBtt OBYVZE8B/XKrW8HWmKUjTuM535rRhQJYufiWiIQ/vPY0ojqoC5R24YtC6zEPmwZegsLs a7MRoAVu0GAlhkHUUcnT/LsGF3I1Xl1SRSznQe0YHIOMvSMqwq+GSsaTdhH5K+p7Vqej cMDxrXGnyl0lnSMiZDhAHtNTLHk+PuGdck63h0Hh9OFzBidMAJubzYC0zwNQiTS5GbEE 1mMQ==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=RbOMx1n3; 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-485885b566fsor219770f8f.15.2026.09.04.03.12.55 for (Google Transport Security); Fri, 04 Sep 2026 03:12:55 -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; AKwUvBwBkBxk7d4Z8ydT+c6hdM6Qxj2M9ozsIvEUEFNHrerM+4kZYYf79eRhE2mCZghXrrYUBe/2Rrh1rpwIwqRd@amarulasolutions.com X-Gm-Gg: AYBFou0ISRmzufJlezl4FWfSu/2QzrqLdvl7e8CGEUyQyGxQ7AVhdi50mMgwSn+zQjP iVhh1SXMsU2ovIk0ZnC8V859hLkwVZZR2ITlkc8nq+A/Enm6X9+9YVYJnoKThvpsC5+QYYR37zg 80r9soQTvQYg8Rysd2XLCMXqrRh4JeTfnXe9sE4oNJQIHQ9ouXQBCyCM2KdvtbhOW8mdtQXD8LE snf1t9r0GmRUBycaXSgx0WYPOKwyQ7hoE82X0zvMRsDtGXE5KZjKlpAvG2hLOrrfzbFTYX7/pd6 HQhZLkut+vKzfA+9T9ovlpam/aTY4YuOLQWsDYHzXh72L1RMu5MIXUST1xcgX1fgMrIkSaH8YNh cUOO5mptVlUIo/o9bfhfxn8S7tlaSqHWUFbr+BUFS/TEIVbkJme3bHDYjbtuBjjCK9PVsI9yCYX FflE+BqcDW3m78/EfR5gDsD55kRt0oQ9k42uMa4mZFdnJtJETlTjqXY2nAWSVRbhkW0THXf5/w4 qjche4xUw5QPq0V5ibsMkAd940LSP6gZwdm8xp3yF+3jk4Tpl4XuU0xC6t/SYQ9ScVACd8DATjl ShDKzSyMaI7KWG/qv4FJCx4z5+YVo1WjzPc99RxHFAzaDmMbM6WYUkw= X-Received: by 2002:a05:6000:26d3:b0:482:f5f6:d253 with SMTP id ffacd0b85a97d-4858728a2ddmr6662967f8f.12.1788516774774; Fri, 04 Sep 2026 03:12:54 -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-48588390e30sm5317990f8f.7.2026.09.04.03.12.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 04 Sep 2026 03:12:53 -0700 (PDT) From: Dario Binacchi To: linux-kernel@vger.kernel.org Cc: michael@amarulasolutions.com, linux-amarula@amarulasolutions.com, Dario Binacchi , Brian Masney , Jerome Brunet , Stephen Boyd , linux-clk@vger.kernel.org Subject: [PATCH v14 3/4] clk: scmi: reject SSC configuration out of the OEM field range Date: Fri, 4 Sep 2026 12:06:32 +0200 Message-ID: <20260904101243.412006-4-dario.binacchi@amarulasolutions.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260904101243.412006-1-dario.binacchi@amarulasolutions.com> References: <20260904101243.412006-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=RbOMx1n3; 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: X-Spam-Checked-In-Group: linux-amarula@amarulasolutions.com X-Google-Group-Id: 476853432473 List-Post: , List-Help: , List-Archive: List-Unsubscribe: , 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. A request with no spread method disables SSC, so send a zeroed configuration to the firmware in that case, without checking the spread and the modulation frequency, which are meaningless then. Signed-off-by: Dario Binacchi --- Changes in v14: - Send a zeroed configuration when no spread method is requested, instead of rejecting it, so that SSC can still be disabled. Changes in v13: - New patch drivers/clk/clk-scmi-oem.c | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/drivers/clk/clk-scmi-oem.c b/drivers/clk/clk-scmi-oem.c index c1ebbdc6bbc5..29acd2923fd6 100644 --- a/drivers/clk/clk-scmi-oem.c +++ b/drivers/clk/clk-scmi-oem.c @@ -35,19 +35,38 @@ 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; + if (ss_conf->method == CLK_SPREAD_NO) { + val = 0; + goto oem_set; + } + /* * extConfigValue[7:0] - spread percentage in tenths of a percent * extConfigValue[23:8] - Modulation Frequency * 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; + val |= SCMI_CLOCK_IMX_SS_ENABLE_MASK; + +oem_set: ret = scmi_proto_clk_ops->config_oem_set(clk->ph, clk->id, SCMI_CLOCK_CFG_IMX_SSC, val, false);