From nobody Fri Jul 24 04:50:30 2026 Received: from mail-pj1-f44.google.com (mail-pj1-f44.google.com [209.85.216.44]) (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 B9947317155 for ; Fri, 24 Jul 2026 01:41:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784857304; cv=none; b=maQxY1wubRsOi9yyw5A11j5uiC0urAKJ+rUDLyvTPAhk7GUEvgNhO6FC7+I3y3wNywh7JkNbYKtFM3P77xft7LHIBxuQzW9C5e6IYwCjzE/9Czn8+neWhFK/zi1WKVtsq+tnWcVs6yvH3t7ZW30ieyqVd3YHLuImDCT5/Lgikyw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784857304; c=relaxed/simple; bh=DvBwH0NQHjvvw9ziWfdcW4i4bHx6yrf4acar/wnIfAY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=lg/ZFot7lqTfi2yf3a/WGt8ag35N63CYevEneiVLMdYCFpgLJLJdt9JJ9J+1l61NAgKFO6IWE27u1YK125/CX4l0cXpPdzSXGxJF9AcWbGMtohdimvwjwusFXwnmfUvgw6zI21uuc1BYyGLn269Z5AGcgACBk+ce1DfyvhMCoLo= 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=kafMxd3J; arc=none smtp.client-ip=209.85.216.44 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="kafMxd3J" Received: by mail-pj1-f44.google.com with SMTP id 98e67ed59e1d1-382ef647e20so1338622a91.1 for ; Thu, 23 Jul 2026 18:41:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1784857302; x=1785462102; 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:content-type; bh=PshXx6UhghPZU9ZufEEpQoWo1ibLdgLZX+tS27SichE=; b=kafMxd3JV75WzclaXaB6I9RpPqVJGr3FhjniBk7XTXp2bL4LeAnGmNbkAq5vTzdPor y3GKW9Oz10rRtv+CcxWDFRDW5FDEwOxaGGIrGZ2rskgv8rGTWDlIpo45c8PFoSUQB0cF Wcf2+SRMlyNOVz28+JLjexcxBNKx4ZBLf1KyIyeA0t5CjvcAob2A+7hBIHhIHqclqx0S pXA3yKPmdtmtUzMQF/8jfXkC/KW6M8GD9pVmyXdIWK9V7Qw+DPsdtMp7vDU8nqNilagj sIjbA2V6KWL9T53wONZTqW9BeycfQAjHQ4EUF2pGdhA9Q6+WmlmrShjrUYsLbPlATiVM yrxg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784857302; x=1785462102; 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:content-type; bh=PshXx6UhghPZU9ZufEEpQoWo1ibLdgLZX+tS27SichE=; b=pZLkngXkXM7eJlhR/27e7QhL8CNIQgloj7uV8SLp06QDUzQq89e/ZrBS60db1n1Ry2 g6/ssQfFMh0oQDXEOl5jcmiRAN7TpWkZZEHAHt+0xYn9Vk2MX9NKxy9Givd+oUv6yDby DhOlNTsKAmBtbxDpmsBpSSSSZPRlfviXe6M+bvJINuJxW+ItdoVyELxNX6Jk3WO4NDrc w8ME7kqjK5j3BwYbnwJwkpbhJiv/1+dm3/X9CqqIvjWS4uLXmQcRAeH0GjdLz+cN5tI3 REZBEJPATphxKeB3d+2WOH03UC0EhpKdZRUkxLx/b3JlGHVxzKb/XnlqE9bA5QgITi18 wPLA== X-Forwarded-Encrypted: i=1; AHgh+Rp/sskA1ZD1q/BbxSiMYaGDgRKMOg1oZCxX5QOT+qWYdSAygDO3CONQzfTl22HtMjSdlfW63uFebSveZeM=@vger.kernel.org X-Gm-Message-State: AOJu0YwVsg/yIIqUP3i0OoGEETnbDVWKL0U6P4Ka6ER+MGOWZlHfVfgB GPdwUIO4gy6gMOFepzjf+tHwZn03pW3k59fF0rOD+IBmZuYpwPc/9OHd X-Gm-Gg: AR+sD10J0EBVjncgig0tiNsLeFYaf0D7vU7yIGvTOrQWPB1HnooDTteRnidpFr98muv qOBUkQSRyBef2zGxnOVxBZbqR2407Y7E89EjXHfMRbpfyJD1HURXRQGOblBf2qyz2mrLCdlRJvy 3q3p81o1Iya5Bo2H4yptRT00nOyFzI6eGfCFWvMnUiYNRyWZz5MJQjgrovtNv8e7Rz3H7OCwP18 w4DNAtmR396wqOJZoUQaZ5u1w5Lq8KdRisDjW/IFmQMbfACLuTM9jB2WRQo8ZvSBuQcIQ21y/AP L0B+IV8zoSUk7/xv4CkW/1cDFCLWeLqsmWaZuc0rysRKtK3sXoLm5NHqnQVl4pepLfiKy6ciYqT FxPFVoRviqFNevJ58iRBqniBJvO3bRqGy24dPikmBrCKQgDJ3hgQWTSCBTxZBulaYQyi6zyzA+o bE/QcJu1aMQ5CalrJWkWOqSikRUDvcflWrWJlAG9hSg5n5y4RUxgp6PIrrSn4/cnk= X-Received: by 2002:a17:90b:2d46:b0:381:a766:efc9 with SMTP id 98e67ed59e1d1-38ec6453ea7mr5581001a91.7.1784857301888; Thu, 23 Jul 2026 18:41:41 -0700 (PDT) Received: from localhost.localdomain (60-250-196-139.hinet-ip.hinet.net. [60.250.196.139]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-38f03b0e976sm647015a91.5.2026.07.23.18.41.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Jul 2026 18:41:41 -0700 (PDT) From: Joey Lu To: mturquette@baylibre.com, sboyd@kernel.org Cc: ychuang3@nuvoton.com, schung@nuvoton.com, yclu4@nuvoton.com, linux-arm-kernel@lists.infradead.org, linux-clk@vger.kernel.org, linux-kernel@vger.kernel.org, Joey Lu , Brian Masney , Alexandre Mergnat Subject: [PATCH v5 1/3] clk: nuvoton: ma35d1: fix ignored div_u64 return values in PLL freq calculation Date: Fri, 24 Jul 2026 09:40:37 +0800 Message-ID: <20260724014039.1239552-2-a0987203069@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260724014039.1239552-1-a0987203069@gmail.com> References: <20260724014039.1239552-1-a0987203069@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: quoted-printable Content-Type: text/plain; charset="utf-8" div_u64() does not modify its argument in place; the return value must be assigned. Both ma35d1_calc_smic_pll_freq() and ma35d1_calc_pll_freq() called div_u64() and discarded the result, leaving pll_freq holding the undivided product and thus returning a frequency orders of magnitude too high. Fixes: 691521a367cf ("clk: nuvoton: Add clock driver for ma35d1 clock contr= oller") Signed-off-by: Joey Lu Reviewed-by: Brian Masney Reviewed-by: Alexandre Mergnat --- drivers/clk/nuvoton/clk-ma35d1-pll.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/clk/nuvoton/clk-ma35d1-pll.c b/drivers/clk/nuvoton/clk= -ma35d1-pll.c index 4620acfe47e8..bfedd45bd04b 100644 --- a/drivers/clk/nuvoton/clk-ma35d1-pll.c +++ b/drivers/clk/nuvoton/clk-ma35d1-pll.c @@ -92,7 +92,7 @@ static unsigned long ma35d1_calc_smic_pll_freq(u32 pll0_c= tl0, p =3D FIELD_GET(SPLL0_CTL0_OUTDIV, pll0_ctl0); outdiv =3D 1 << p; pll_freq =3D (u64)parent_rate * n; - div_u64(pll_freq, m * outdiv); + pll_freq =3D div_u64(pll_freq, m * outdiv); return pll_freq; } =20 @@ -110,7 +110,7 @@ static unsigned long ma35d1_calc_pll_freq(u8 mode, u32 = *reg_ctl, unsigned long p =20 if (mode =3D=3D PLL_MODE_INT) { pll_freq =3D (u64)parent_rate * n; - div_u64(pll_freq, m * p); + pll_freq =3D div_u64(pll_freq, m * p); } else { x =3D FIELD_GET(PLL_CTL1_FRAC, reg_ctl[1]); /* 2 decimal places floating to integer (ex. 1.23 to 123) */ --=20 2.43.0 From nobody Fri Jul 24 04:50:30 2026 Received: from mail-pj1-f52.google.com (mail-pj1-f52.google.com [209.85.216.52]) (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 20C331A681C for ; Fri, 24 Jul 2026 01:41:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784857306; cv=none; b=cBzEFA7muk3kYn8Hahgo+mlPc6bNLbeWpnyuqbFYl0bp1lUuLzvED+PgSAd1CFJcSKJoRqj7O/iLDODaU0EWyYwTxCENw/jwTkYBmOCTq8ZeeQNd4R8vmoasO3uMzKR60zTbfPXK9D+Efp9bLSPd9wCMMZ1g0sZ/QYfkWKsVD60= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784857306; c=relaxed/simple; bh=8VGV5J35M3tEQUvGItdWTIvWf/PwbtRYeVaQ5Dk3FCk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=gPpToTlQtHIf693M7OGPG5HoYkRAtGW/FxntaC4/lmrH+8tiTOB6LJ1HPtS6cg0KPss8jQC7tMIzWr9FVRZOD342Qb1Lcm3eiftq3JmdZZiA4dh7Gh77aWilwZTp+QM4VtU6P3O346xlm01DJQQAGnPv8O0ECi9B4GbkMjgHZV0= 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=fX8AhajK; arc=none smtp.client-ip=209.85.216.52 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="fX8AhajK" Received: by mail-pj1-f52.google.com with SMTP id 98e67ed59e1d1-38e347638adso1431227a91.0 for ; Thu, 23 Jul 2026 18:41:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1784857304; x=1785462104; 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:content-type; bh=DLZq0Oq4iriy5IZuUphLNLAdeQc/1NhQeDrqKXhuu30=; b=fX8AhajKAVePuvTM+Mqsp0keqyVBy5IjLvu8l+T5D8R1uQAW/8NZFg7Lcx/S1qOOci dk3aHPopT2ueMy31xYLRbAWJdJdOGKPdPaeKvqiDLmBsQuL0FP000kTgY6QYvCGm1Fju d/e2IJdrc/BG0G4x8E1rfu7F0MLFBcCROjHZFr0QFU89/+4khffOeHWlSfV+Tfzt9VGY stKHX2WJTaaajAG+yZz53KMbPruagVLeMOy3HfHAagKwQx9gXb1r5+vVuGMlWKhVqols dUfkyFraKnTnZDeJUWTaDObB+Va3EGxkm3RIqKtKhJcZOCT/kXSIv67lc75NYiFDgoQz r0Dg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784857304; x=1785462104; 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:content-type; bh=DLZq0Oq4iriy5IZuUphLNLAdeQc/1NhQeDrqKXhuu30=; b=ChcbIr/s5lv0Y32mAGzLHOvRVZ1bMEtTARXO5viJAEcXYYo3haWQlaMA9ALpGtu2Fu BCszZHwkDULeVSGh/yrSFb8rcQ8A0+wUGdMc+BRIzveilXRAdbldIggjTm7Ad8zEJOCN zty3IvZq1D8tmek7k2dVlQ/B191sjg1uL0a6JfcFhyZeSw6CObCEGf5VtCzvosgm04TM Lu1Hq6abxxFQLjiY2H/5CWv7Dsa9rWiC8sFfqoT+cXXFf7FLdw2xvKfgPHIoThEx5UFr 31pGVuHQzbH/e/HNJsK+0bp2Qknvi0hkwjA1Hwd8DgpqhYWrUT7QSHxMnlC+AzS64ISw W91A== X-Forwarded-Encrypted: i=1; AHgh+RqzORUcvBr3rgE6m2AoCq+HH0Tv+M5I2eYVgeNegSdbnW4qQtjuXhT46OgirDfOe3VxYtGWrTVM6bYmUQY=@vger.kernel.org X-Gm-Message-State: AOJu0YyKjTTbpiJoMtPfT9dbiQP6Wjb4ZB2y1TwBSagCSKFBArygOrWS D2th1WR3V2NRh4YP/4J/TagoUFx2Bvj81mi32Jnm4/tNJpnTCZ1N0TNOXE5x1w== X-Gm-Gg: AR+sD118/vKAT+Kss65XqbLyhR69R9fyY6KiKfkHwo1WsTDc2hBSGTpPnTIxGSzSFX0 yIhHknNhJ7B7EuVaGpJnqrxHpCw+mMgc6SPwCfYPbvIix+QS65RUzPkeYYICHMTy3JtiepLJhUp lrLo12QM3KPYI+VAPPgddOqnnDUDsypnvMeQ5Hh1HPA4EmN6j33wEKnm7m3Bbv+nOpdycK26jMb HBvaQAittVTzpyYJxZ6MGEwmrXu08mKoOAmebbDpawcyiyaxI+5OGG5hNw0zmEl7L4bv16Kd9gW aCT9c2jlv1ePJmXNLbcA1vlUd/fVMkLdj/d6ubmm8uH6UZTB7HpFcy83cLQWGmLWMt6SwIyIsBM TrjWwaG4LY30qt+r5hsn/8bt0DGOvyKF2iM9V4xUfLtEwl/ajNHZPb0B3MSRXeoQQAVIWmM9rH/ A7Hh9vD9rGp5H/slG07AuvSnjzHwpfr3DlCuBFwII+9+OA5D/3NmyKryyqYzJOIZACt720D/OOf w== X-Received: by 2002:a17:90b:57e4:b0:38e:79f:76ad with SMTP id 98e67ed59e1d1-38ec6566203mr5592434a91.23.1784857304339; Thu, 23 Jul 2026 18:41:44 -0700 (PDT) Received: from localhost.localdomain (60-250-196-139.hinet-ip.hinet.net. [60.250.196.139]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-38f03b0e976sm647015a91.5.2026.07.23.18.41.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Jul 2026 18:41:43 -0700 (PDT) From: Joey Lu To: mturquette@baylibre.com, sboyd@kernel.org Cc: ychuang3@nuvoton.com, schung@nuvoton.com, yclu4@nuvoton.com, linux-arm-kernel@lists.infradead.org, linux-clk@vger.kernel.org, linux-kernel@vger.kernel.org, Joey Lu , Brian Masney , Alexandre Mergnat Subject: [PATCH v5 2/3] clk: nuvoton: ma35d1: fix PLL_CTL1_FRAC bit field width and fractional calc Date: Fri, 24 Jul 2026 09:40:38 +0800 Message-ID: <20260724014039.1239552-3-a0987203069@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260724014039.1239552-1-a0987203069@gmail.com> References: <20260724014039.1239552-1-a0987203069@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: quoted-printable Content-Type: text/plain; charset="utf-8" PLL_CTL1_FRAC was defined as GENMASK(31, 24), covering only 8 bits. The hardware fractional field occupies bits [31:8] (24 bits), so the mask must be GENMASK(31, 8). The previous fractional-mode calculation used FIELD_MAX(PLL_CTL1_FRAC) as the denominator to obtain 2 decimal places. With the corrected 24-bit mask the old divisor is wrong; replace the arithmetic with a proper 24-bit fixed-point rounding to 3 decimal places using the kernel's DIV_ROUND_CLOSEST_ULL helper: n_frac =3D n * 1000 + DIV_ROUND_CLOSEST_ULL(x * 1000, 1 << 24) Fixes: 691521a367cf ("clk: nuvoton: Add clock driver for ma35d1 clock contr= oller") Signed-off-by: Joey Lu Reviewed-by: Brian Masney Reviewed-by: Alexandre Mergnat --- drivers/clk/nuvoton/clk-ma35d1-pll.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/clk/nuvoton/clk-ma35d1-pll.c b/drivers/clk/nuvoton/clk= -ma35d1-pll.c index bfedd45bd04b..eb9d69d2077b 100644 --- a/drivers/clk/nuvoton/clk-ma35d1-pll.c +++ b/drivers/clk/nuvoton/clk-ma35d1-pll.c @@ -48,7 +48,7 @@ #define PLL_CTL1_PD BIT(0) #define PLL_CTL1_BP BIT(1) #define PLL_CTL1_OUTDIV GENMASK(6, 4) -#define PLL_CTL1_FRAC GENMASK(31, 24) +#define PLL_CTL1_FRAC GENMASK(31, 8) #define PLL_CTL2_SLOPE GENMASK(23, 0) =20 #define INDIV_MIN 1 @@ -113,9 +113,9 @@ static unsigned long ma35d1_calc_pll_freq(u8 mode, u32 = *reg_ctl, unsigned long p pll_freq =3D div_u64(pll_freq, m * p); } else { x =3D FIELD_GET(PLL_CTL1_FRAC, reg_ctl[1]); - /* 2 decimal places floating to integer (ex. 1.23 to 123) */ - n =3D n * 100 + ((x * 100) / FIELD_MAX(PLL_CTL1_FRAC)); - pll_freq =3D div_u64(parent_rate * n, 100 * m * p); + /* convert 24-bit fraction to 3 decimal digits, rounding to closest */ + n =3D n * 1000 + DIV_ROUND_CLOSEST_ULL((u64)x * 1000, 1ULL << 24); + pll_freq =3D div_u64((u64)parent_rate * n, 1000 * m * p); } return pll_freq; } --=20 2.43.0 From nobody Fri Jul 24 04:50:30 2026 Received: from mail-pj1-f43.google.com (mail-pj1-f43.google.com [209.85.216.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 14C41317170 for ; Fri, 24 Jul 2026 01:41:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784857308; cv=none; b=U0BA4BkEOCy8OWvlP977JFXxhlzbE3qwrV8xkZZZlVZ4UQHliEQwCunv4gBJGJJzj1ZprI8TsbORKw3wVGIkW2eMOmOEYft28JDT8y94XLKvvVvnJ4pKOVOmWXXXo8GQYa9ZnRy7OJaOofPuP4v2m/Rq67BPNGC9m6rELV1KHL4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784857308; c=relaxed/simple; bh=KuG8MDBTpthoJNnM9iON1DWMOZcezFRIP9XzzRbktA0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=sQDDTlYlIajbpXViJjGKshi5tfImbl1wJGDekCW+DUtPPHdZM21xgljg9aEwNQWk2MgxY9YnJ8NgaUZzL7EEBS/5NxXR8ncSRet+QOHtHEapqq6eaUhQQqbxZzxZxQ3lS9Rr4ndZyzyOFLCFlTOFD0myzCy44e58KtcrY+T2bJ4= 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=SB/MNQiH; arc=none smtp.client-ip=209.85.216.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="SB/MNQiH" Received: by mail-pj1-f43.google.com with SMTP id 98e67ed59e1d1-38e041ea211so1219950a91.0 for ; Thu, 23 Jul 2026 18:41:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1784857306; x=1785462106; 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:content-type; bh=LauzpK5k+m8ljBN6uorqAHomRi6T7VJzQA2WK3Zl7bA=; b=SB/MNQiHrryOG20/DQMXrR1+/7fyXTq96ieTXEDOFr5fZrWtJwr2XC0b/xzOza16Yw Ayfqh77vYh2dDRHj6l0gQLhebmmwHW78J2cd1khpxnULdrp4dG4mQUd4KaWs+DdvUvU0 QjX4BXgtG5QludvYMFviMNR/Sn1EtBGMnGnFr0+wXqSH7sbYqy1iL0YCPThhwkIA9or3 H38rbKm/IxmiFfXuIZLlF1jRTueFwwcgSRo2p3GZdwFleGjjnLhtHRuUGteXSveaSKFC EQg1VT/CyLizWImT/wKqRu4FxIMgY/YdVsn35+qoNjgvVa1oL7Oz6zQHRBNdZtnO5YxQ 6MmA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784857306; x=1785462106; 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:content-type; bh=LauzpK5k+m8ljBN6uorqAHomRi6T7VJzQA2WK3Zl7bA=; b=FFGAkEP+1eRi8cr6DqnEoITrLr/S94wYHCZk11Y5jzDI8uSAkXT2zRcp8j8rPKdqGF cX9UPRlShtLviY5ol1Ou4ptP84tJ2sWL3z71qIx6uaP42xDFE5WeHrV2fqDUh7k2cTw2 /xnpQ2t5MK01ZjL9uJSe9Ml6gX2367z4+H/nVgMG1ia52eMMdF76KHX02b9ux6o7AXB7 iGUqL+7DfuojKzmGfJZ+5ykL5JxG3KkHo/QD3FfPEpJ/qW4fmk8W/x5UIrrIaXM9Ybmy e6FY4tlU91EtkNSB2Zp91SyqYG5cMWZ03VcAV0B+IwZ6Q3qfRHrN2Kg5LMasbr2dmYzF vm3A== X-Forwarded-Encrypted: i=1; AHgh+RpSIf9KN06uOAiy225kLfuu+ARMlZ/xj9s/SfF3C8xRpbB7t+37CIjIG7jm5d+WxyyC6fgIM+8ulzf3lVE=@vger.kernel.org X-Gm-Message-State: AOJu0YxtBWbt8iEBNrP6iQ/l7ewRdBWJEmC+DZw83IRXLbASqq9nAO7s aKYLlreUmJPK+Ms9E6d87afFlsqa0PU5Uc/7CAVw1sYBg+XxOz5Nry6IKQiq5A== X-Gm-Gg: AR+sD11kkvT0hCz2l5GRXiQFe1Duoh9lrwdGPi1Eo8YGYM4X6agoSsNllXTLfBusBCG i30kO6gUu90h03mPyF8s1pXnLaSH3SHpgd2U/K5KbxXHQ0L0r7F8dEDBrClc+3V1iRDdz69DoFR 8zuKk6ByB37eXCHLVQRGd5gNr3sYcWLzOaZwRyfSryKkBSI9J/3kFVBZKwSRilkUVJByL7jtPpb L+1ak77meh5xz/UYFkVp9JdcE4gNaTKPGAXgIbos8VuNqzr2M4Y/O/2s0OLIHtbA+uMCQbJKeIW Akld5SidRyz+B9MVjdjM11YU9UE+f8AsiDSh2AFxCfJ7bX5pBLl4gNvG9nTiLX0cS0ks17R+RAk 1fomPpWk7VnIHmdm0wlf97SLZCozgKIRDfaXz6ShByhX7sXGk+RpQHOdBAHIGHWsFvSdK7eRTrp b+GVLed4itWRD22ULhnAcwFHTsUtu1dnhcINSHTNrZUWk2RoMHZP+0duqWZzXgcWk= X-Received: by 2002:a17:90b:57e4:b0:37d:f206:a2ac with SMTP id 98e67ed59e1d1-38ec694a6a2mr4903557a91.7.1784857306433; Thu, 23 Jul 2026 18:41:46 -0700 (PDT) Received: from localhost.localdomain (60-250-196-139.hinet-ip.hinet.net. [60.250.196.139]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-38f03b0e976sm647015a91.5.2026.07.23.18.41.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Jul 2026 18:41:46 -0700 (PDT) From: Joey Lu To: mturquette@baylibre.com, sboyd@kernel.org Cc: ychuang3@nuvoton.com, schung@nuvoton.com, yclu4@nuvoton.com, linux-arm-kernel@lists.infradead.org, linux-clk@vger.kernel.org, linux-kernel@vger.kernel.org, Joey Lu , Alexandre Mergnat Subject: [PATCH v5 3/3] clk: nuvoton: ma35d1: fix ma35d1_clk_pll_determine_rate logic Date: Fri, 24 Jul 2026 09:40:39 +0800 Message-ID: <20260724014039.1239552-4-a0987203069@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260724014039.1239552-1-a0987203069@gmail.com> References: <20260724014039.1239552-1-a0987203069@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: quoted-printable Content-Type: text/plain; charset="utf-8" ma35d1_clk_pll_determine_rate() called ma35d1_pll_find_closest() unconditionally before the switch statement, and then every case branch overwrote pll_freq by reading the current hardware registers. For CAPLL and DDRPLL this means find_closest() ran unnecessarily (and incorrectly, since those PLLs are read-only) and its result was silently discarded. Fix by moving the find_closest() call inside the APLL/EPLL/VPLL branch where it belongs. Split CAPLL and DDRPLL into separate case labels mirroring ma35d1_clk_pll_recalc_rate(), with a shared req->rate =3D pll_freq tail after the switch and an explicit default label for unknown PLL IDs. Fixes: 691521a367cf ("clk: nuvoton: Add clock driver for ma35d1 clock contr= oller") Signed-off-by: Joey Lu Reviewed-by: Alexandre Mergnat --- drivers/clk/nuvoton/clk-ma35d1-pll.c | 31 ++++++++++++++-------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/drivers/clk/nuvoton/clk-ma35d1-pll.c b/drivers/clk/nuvoton/clk= -ma35d1-pll.c index eb9d69d2077b..878b23bb5918 100644 --- a/drivers/clk/nuvoton/clk-ma35d1-pll.c +++ b/drivers/clk/nuvoton/clk-ma35d1-pll.c @@ -255,32 +255,33 @@ static int ma35d1_clk_pll_determine_rate(struct clk_h= w *hw, if (req->best_parent_rate < PLL_FREF_MIN_FREQ || req->best_parent_rate > = PLL_FREF_MAX_FREQ) return -EINVAL; =20 - ret =3D ma35d1_pll_find_closest(pll, req->rate, req->best_parent_rate, - reg_ctl, &pll_freq); - if (ret < 0) - return ret; - switch (pll->id) { case CAPLL: + /* SMIC design: single control register */ reg_ctl[0] =3D readl_relaxed(pll->ctl0_base); pll_freq =3D ma35d1_calc_smic_pll_freq(reg_ctl[0], req->best_parent_rate= ); - req->rate =3D pll_freq; - - return 0; + break; case DDRPLL: - case APLL: - case EPLL: - case VPLL: + /* Standard design: read current rate, not configurable */ reg_ctl[0] =3D readl_relaxed(pll->ctl0_base); reg_ctl[1] =3D readl_relaxed(pll->ctl1_base); pll_freq =3D ma35d1_calc_pll_freq(pll->mode, reg_ctl, req->best_parent_r= ate); - req->rate =3D pll_freq; - + break; + case APLL: + case EPLL: + case VPLL: + /* Configurable PLLs: find closest achievable rate */ + ret =3D ma35d1_pll_find_closest(pll, req->rate, req->best_parent_rate, + reg_ctl, &pll_freq); + if (ret < 0) + return ret; + break; + default: + req->rate =3D 0; return 0; } =20 - req->rate =3D 0; - + req->rate =3D pll_freq; return 0; } =20 --=20 2.43.0