From nobody Tue Apr 7 00:45:49 2026 Received: from smtpout-04.galae.net (smtpout-04.galae.net [185.171.202.116]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B81FB283FC9; Tue, 17 Mar 2026 13:33:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.171.202.116 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773754425; cv=none; b=GNmKtQJZyRcU6/q9KyiZYG3rl27pa5UBUmy9BWVuNFVOfSyFTcZDHZICIOEbR7kyXFfxrL4na5NnUzQLKws2XYnMS2VJ/mkYrjpDJ4KJijIaZPgNOnRlfq61cLxNdwYSLgFnV/jrno6/RJMIvok9n92BUmPCsAtxjjcNbQ0Q1l4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773754425; c=relaxed/simple; bh=1d5jwm/HXf+1jopHHwdBEsJurqsfrBJka01HmjVnAuE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=tGhrZQRR8brs6mpZVHBH9Bc9FaQp/xEcYIBuncnd6LpFrQgfQ2bfyslew7AklTT40IUI4gOr+n2jjW2vASR1D1KUI61PCVgL1XYqec3LFXfpo8ySkU3q+JPwl34GgfsoAcciuGO+SiaDc0vw2YZrrTgZnvLVLicmmnmcRO28CzI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com; spf=pass smtp.mailfrom=bootlin.com; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b=2dC0/RvC; arc=none smtp.client-ip=185.171.202.116 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bootlin.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b="2dC0/RvC" Received: from smtpout-01.galae.net (smtpout-01.galae.net [212.83.139.233]) by smtpout-04.galae.net (Postfix) with ESMTPS id 78D5CC55042; Tue, 17 Mar 2026 13:34:04 +0000 (UTC) Received: from mail.galae.net (mail.galae.net [212.83.136.155]) by smtpout-01.galae.net (Postfix) with ESMTPS id 6DA795FC9A; Tue, 17 Mar 2026 13:33:40 +0000 (UTC) Received: from [127.0.0.1] (localhost [127.0.0.1]) by localhost (Mailerdaemon) with ESMTPSA id C4F2B104505EB; Tue, 17 Mar 2026 14:33:37 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=dkim; t=1773754419; h=from:subject:date:message-id:to:cc:mime-version:content-type: content-transfer-encoding:in-reply-to:references; bh=aUYUflWYXCNMFkVZDsoHMMnLEv02bLTB8mbRpGNIxfo=; b=2dC0/RvCd6o6IcNU6LnR1S/sCsRyNTjyJSOTurvhH5HvwqW+GGfC8c9mYzxC/6yrYpP2KD LG3h5K3DGwzLAQsNKjoUO36m6+9jgMS9KY6wu72PpaQ+DeFfNPyhoHuVRJJHjx86xWA7G/ 93nUU8xZRBFbyXNgUKqAHK3ue4LQyt/XvCXSN1oh2I8am4fcAuA3FWo/goRqpPFFjcKd3n d9GM2UbeRd5f2uoqfAQMCu+JmRd9PBxPu+o1gDBUlcX6E1Mdqk/5zTwDtFWJg1ss8EIKkZ B8U43WMStqY+fgt/vxuojs17gLGefjJo951Me1iA+aT/cinL9Fymw7A7vi4SjA== From: =?utf-8?q?Beno=C3=AEt_Monin?= Date: Tue, 17 Mar 2026 14:33:07 +0100 Subject: [PATCH v5 05/10] clk: eyeq: Prefix the PLL registers with the PLL type Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260317-clk-eyeq7-v5-5-6f6daa2c2367@bootlin.com> References: <20260317-clk-eyeq7-v5-0-6f6daa2c2367@bootlin.com> In-Reply-To: <20260317-clk-eyeq7-v5-0-6f6daa2c2367@bootlin.com> To: Vladimir Kondratiev , Gregory CLEMENT , =?utf-8?q?Th=C3=A9o_Lebrun?= , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Michael Turquette , Stephen Boyd , Philipp Zabel , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti Cc: Thomas Petazzoni , Tawfik Bayouk , linux-riscv@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, linux-mips@vger.kernel.org, =?utf-8?q?Beno=C3=AEt_Monin?= X-Mailer: b4 0.14.3 X-Last-TLS-Session-Version: TLSv1.3 Rename the PLL registers to make room for other PLL types that are present in the eyeQ7H. Move the access to the PLL register inside the function parsing it as both call sites were doing the same thing. Signed-off-by: Beno=C3=AEt Monin --- drivers/clk/clk-eyeq.c | 76 +++++++++++++++++++++++-----------------------= ---- 1 file changed, 35 insertions(+), 41 deletions(-) diff --git a/drivers/clk/clk-eyeq.c b/drivers/clk/clk-eyeq.c index d9303c2c7aa5..e4e690a12a23 100644 --- a/drivers/clk/clk-eyeq.c +++ b/drivers/clk/clk-eyeq.c @@ -48,28 +48,28 @@ #include =20 /* In frac mode, it enables fractional noise canceling DAC. Else, no funct= ion. */ -#define PCSR0_DAC_EN BIT(0) +#define FRACG_PCSR0_DAC_EN BIT(0) /* Fractional or integer mode */ -#define PCSR0_DSM_EN BIT(1) -#define PCSR0_PLL_EN BIT(2) +#define FRACG_PCSR0_DSM_EN BIT(1) +#define FRACG_PCSR0_PLL_EN BIT(2) /* All clocks output held at 0 */ -#define PCSR0_FOUTPOSTDIV_EN BIT(3) -#define PCSR0_POST_DIV1 GENMASK(6, 4) -#define PCSR0_POST_DIV2 GENMASK(9, 7) -#define PCSR0_REF_DIV GENMASK(15, 10) -#define PCSR0_INTIN GENMASK(27, 16) -#define PCSR0_BYPASS BIT(28) +#define FRACG_PCSR0_FOUTPOSTDIV_EN BIT(3) +#define FRACG_PCSR0_POST_DIV1 GENMASK(6, 4) +#define FRACG_PCSR0_POST_DIV2 GENMASK(9, 7) +#define FRACG_PCSR0_REF_DIV GENMASK(15, 10) +#define FRACG_PCSR0_INTIN GENMASK(27, 16) +#define FRACG_PCSR0_BYPASS BIT(28) /* Bits 30..29 are reserved */ -#define PCSR0_PLL_LOCKED BIT(31) +#define FRACG_PCSR0_PLL_LOCKED BIT(31) =20 -#define PCSR1_RESET BIT(0) -#define PCSR1_SSGC_DIV GENMASK(4, 1) +#define FRACG_PCSR1_RESET BIT(0) +#define FRACG_PCSR1_SSGC_DIV GENMASK(4, 1) /* Spread amplitude (% =3D 0.1 * SPREAD[4:0]) */ -#define PCSR1_SPREAD GENMASK(9, 5) -#define PCSR1_DIS_SSCG BIT(10) +#define FRACG_PCSR1_SPREAD GENMASK(9, 5) +#define FRACG_PCSR1_DIS_SSCG BIT(10) /* Down-spread or center-spread */ -#define PCSR1_DOWN_SPREAD BIT(11) -#define PCSR1_FRAC_IN GENMASK(31, 12) +#define FRACG_PCSR1_DOWN_SPREAD BIT(11) +#define FRACG_PCSR1_FRAC_IN GENMASK(31, 12) =20 struct eqc_pll { unsigned int index; @@ -162,34 +162,40 @@ static void eqc_pll_downshift_factors(unsigned long *= mult, unsigned long *div) *div >>=3D shift; } =20 -static int eqc_pll_parse_registers(u32 r0, u32 r1, unsigned long *mult, - unsigned long *div, unsigned long *acc) +static int eqc_pll_parse_fracg(void __iomem *base, unsigned long *mult, + unsigned long *div, unsigned long *acc) { unsigned long spread; + u32 r0, r1; + u64 val; =20 - if (r0 & PCSR0_BYPASS) { + val =3D readq(base); + r0 =3D val; + r1 =3D val >> 32; + + if (r0 & FRACG_PCSR0_BYPASS) { *mult =3D 1; *div =3D 1; *acc =3D 0; return 0; } =20 - if (!(r0 & PCSR0_PLL_LOCKED)) + if (!(r0 & FRACG_PCSR0_PLL_LOCKED)) return -EINVAL; =20 - *mult =3D FIELD_GET(PCSR0_INTIN, r0); - *div =3D FIELD_GET(PCSR0_REF_DIV, r0); + *mult =3D FIELD_GET(FRACG_PCSR0_INTIN, r0); + *div =3D FIELD_GET(FRACG_PCSR0_REF_DIV, r0); =20 /* Fractional mode, in 2^20 (0x100000) parts. */ - if (r0 & PCSR0_DSM_EN) { + if (r0 & FRACG_PCSR0_DSM_EN) { *div *=3D (1ULL << 20); - *mult =3D *mult * (1ULL << 20) + FIELD_GET(PCSR1_FRAC_IN, r1); + *mult =3D *mult * (1ULL << 20) + FIELD_GET(FRACG_PCSR1_FRAC_IN, r1); } =20 if (!*mult || !*div) return -EINVAL; =20 - if (r1 & (PCSR1_RESET | PCSR1_DIS_SSCG)) { + if (r1 & (FRACG_PCSR1_RESET | FRACG_PCSR1_DIS_SSCG)) { *acc =3D 0; return 0; } @@ -204,10 +210,10 @@ static int eqc_pll_parse_registers(u32 r0, u32 r1, un= signed long *mult, * * Care is taken to avoid overflowing or losing precision. */ - spread =3D FIELD_GET(PCSR1_SPREAD, r1); + spread =3D FIELD_GET(FRACG_PCSR1_SPREAD, r1); *acc =3D DIV_ROUND_CLOSEST(spread * 1000000000, 1024 * 2); =20 - if (r1 & PCSR1_DOWN_SPREAD) { + if (r1 & FRACG_PCSR1_DOWN_SPREAD) { /* * Downspreading: the central frequency is half a * spread lower. @@ -232,18 +238,12 @@ static void eqc_probe_init_plls(struct device *dev, c= onst struct eqc_match_data const struct eqc_pll *pll; struct clk_hw *hw; unsigned int i; - u32 r0, r1; - u64 val; int ret; =20 for (i =3D 0; i < data->pll_count; i++) { pll =3D &data->plls[i]; =20 - val =3D readq(base + pll->reg64); - r0 =3D val; - r1 =3D val >> 32; - - ret =3D eqc_pll_parse_registers(r0, r1, &mult, &div, &acc); + ret =3D eqc_pll_parse_fracg(base + pll->reg64, &mult, &div, &acc); if (ret) { dev_warn(dev, "failed parsing state of %s\n", pll->name); cells->hws[pll->index] =3D ERR_PTR(ret); @@ -799,14 +799,8 @@ static void __init eqc_early_init(struct device_node *= np, const struct eqc_pll *pll =3D &early_data->early_plls[i]; unsigned long mult, div, acc; struct clk_hw *hw; - u32 r0, r1; - u64 val; =20 - val =3D readq(base + pll->reg64); - r0 =3D val; - r1 =3D val >> 32; - - ret =3D eqc_pll_parse_registers(r0, r1, &mult, &div, &acc); + ret =3D eqc_pll_parse_fracg(base + pll->reg64, &mult, &div, &acc); if (ret) { pr_err("failed parsing state of %s\n", pll->name); goto err; --=20 2.53.0