Skip to content

Commit b8b5677

Browse files
Nicolas FrattaroliYuryNorov
authored andcommitted
clk: sp7021: switch to FIELD_PREP_WM16 macro
The sp7021 clock driver has its own shifted high word mask macro, similar to the ones many Rockchip drivers have. Remove it, and replace instances of it with hw_bitfield.h's FIELD_PREP_WM16 macro, which does the same thing except in a common macro that also does compile-time error checking. This was compile-tested with 32-bit ARM with Clang, no runtime tests were performed as I lack the hardware. However, I verified that fix commit 5c667d5 ("clk: sp7021: Adjust width of _m in HWM_FIELD_PREP()") is not regressed. No warning is produced. Signed-off-by: Nicolas Frattaroli <nicolas.frattaroli@collabora.com> Reviewed-by: Heiko Stuebner <heiko@sntech.de> Acked-by: Stephen Boyd <sboyd@kernel.org> Signed-off-by: Yury Norov (NVIDIA) <yury.norov@gmail.com>
1 parent 30e9195 commit b8b5677

1 file changed

Lines changed: 8 additions & 14 deletions

File tree

drivers/clk/clk-sp7021.c

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
#include <linux/clk-provider.h>
88
#include <linux/of.h>
99
#include <linux/bitfield.h>
10+
#include <linux/hw_bitfield.h>
1011
#include <linux/slab.h>
1112
#include <linux/io.h>
1213
#include <linux/err.h>
@@ -38,13 +39,6 @@ enum {
3839
#define MASK_DIVN GENMASK(7, 0)
3940
#define MASK_DIVM GENMASK(14, 8)
4041

41-
/* HIWORD_MASK FIELD_PREP */
42-
#define HWM_FIELD_PREP(mask, value) \
43-
({ \
44-
u64 _m = mask; \
45-
(_m << 16) | FIELD_PREP(_m, value); \
46-
})
47-
4842
struct sp_pll {
4943
struct clk_hw hw;
5044
void __iomem *reg;
@@ -313,15 +307,15 @@ static int plltv_set_rate(struct sp_pll *clk)
313307
u32 r0, r1, r2;
314308

315309
r0 = BIT(clk->bp_bit + 16);
316-
r0 |= HWM_FIELD_PREP(MASK_SEL_FRA, clk->p[SEL_FRA]);
317-
r0 |= HWM_FIELD_PREP(MASK_SDM_MOD, clk->p[SDM_MOD]);
318-
r0 |= HWM_FIELD_PREP(MASK_PH_SEL, clk->p[PH_SEL]);
319-
r0 |= HWM_FIELD_PREP(MASK_NFRA, clk->p[NFRA]);
310+
r0 |= FIELD_PREP_WM16(MASK_SEL_FRA, clk->p[SEL_FRA]);
311+
r0 |= FIELD_PREP_WM16(MASK_SDM_MOD, clk->p[SDM_MOD]);
312+
r0 |= FIELD_PREP_WM16(MASK_PH_SEL, clk->p[PH_SEL]);
313+
r0 |= FIELD_PREP_WM16(MASK_NFRA, clk->p[NFRA]);
320314

321-
r1 = HWM_FIELD_PREP(MASK_DIVR, clk->p[DIVR]);
315+
r1 = FIELD_PREP_WM16(MASK_DIVR, clk->p[DIVR]);
322316

323-
r2 = HWM_FIELD_PREP(MASK_DIVN, clk->p[DIVN] - 1);
324-
r2 |= HWM_FIELD_PREP(MASK_DIVM, clk->p[DIVM] - 1);
317+
r2 = FIELD_PREP_WM16(MASK_DIVN, clk->p[DIVN] - 1);
318+
r2 |= FIELD_PREP_WM16(MASK_DIVM, clk->p[DIVM] - 1);
325319

326320
spin_lock_irqsave(&clk->lock, flags);
327321
writel(r0, clk->reg);

0 commit comments

Comments
 (0)