Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

PM / devfreq: rk3399_dmc,dfi: generalize DDRTYPE defines

The DDRTYPE defines are named to be RK3399 specific, but they can be
used for other Rockchip SoCs as well, so replace the RK3399_PMUGRF_
prefix with ROCKCHIP_. They are defined in a SoC specific header
file, so when generalizing the prefix also move the new defines to
a SoC agnostic header file. While at it use GENMASK to define the
DDRTYPE bitfield and give it a name including the full register name.

Link: https://lore.kernel.org/all/20231018061714.3553817-9-s.hauer@pengutronix.de/
Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.com>
Acked-by: Chanwoo Choi <cw00.choi@samsung.com>
Acked-by: Heiko Stuebner <heiko@sntech.de>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>

authored by

Sascha Hauer and committed by
Chanwoo Choi
74002e66 63dcf38e

+28 -15
+5 -4
drivers/devfreq/event/rockchip-dfi.c
··· 18 18 #include <linux/list.h> 19 19 #include <linux/of.h> 20 20 #include <linux/of_device.h> 21 + #include <linux/bitfield.h> 21 22 #include <linux/bits.h> 22 23 24 + #include <soc/rockchip/rockchip_grf.h> 23 25 #include <soc/rockchip/rk3399_grf.h> 24 26 25 27 #define DMC_MAX_CHANNELS 2 ··· 77 75 writel_relaxed(CLR_DDRMON_CTRL, dfi_regs + DDRMON_CTRL); 78 76 79 77 /* set ddr type to dfi */ 80 - if (dfi->ddr_type == RK3399_PMUGRF_DDRTYPE_LPDDR3) 78 + if (dfi->ddr_type == ROCKCHIP_DDRTYPE_LPDDR3) 81 79 writel_relaxed(LPDDR3_EN, dfi_regs + DDRMON_CTRL); 82 - else if (dfi->ddr_type == RK3399_PMUGRF_DDRTYPE_LPDDR4) 80 + else if (dfi->ddr_type == ROCKCHIP_DDRTYPE_LPDDR4) 83 81 writel_relaxed(LPDDR4_EN, dfi_regs + DDRMON_CTRL); 84 82 85 83 /* enable count, use software mode */ ··· 194 192 195 193 /* get ddr type */ 196 194 regmap_read(regmap_pmu, RK3399_PMUGRF_OS_REG2, &val); 197 - dfi->ddr_type = (val >> RK3399_PMUGRF_DDRTYPE_SHIFT) & 198 - RK3399_PMUGRF_DDRTYPE_MASK; 195 + dfi->ddr_type = FIELD_GET(RK3399_PMUGRF_OS_REG2_DDRTYPE, val); 199 196 200 197 dfi->channel_mask = GENMASK(1, 0); 201 198 dfi->max_channels = 2;
+5 -5
drivers/devfreq/rk3399_dmc.c
··· 22 22 #include <linux/suspend.h> 23 23 24 24 #include <soc/rockchip/pm_domains.h> 25 + #include <soc/rockchip/rockchip_grf.h> 25 26 #include <soc/rockchip/rk3399_grf.h> 26 27 #include <soc/rockchip/rockchip_sip.h> 27 28 ··· 382 381 } 383 382 384 383 regmap_read(data->regmap_pmu, RK3399_PMUGRF_OS_REG2, &val); 385 - ddr_type = (val >> RK3399_PMUGRF_DDRTYPE_SHIFT) & 386 - RK3399_PMUGRF_DDRTYPE_MASK; 384 + ddr_type = FIELD_GET(RK3399_PMUGRF_OS_REG2_DDRTYPE, val); 387 385 388 386 switch (ddr_type) { 389 - case RK3399_PMUGRF_DDRTYPE_DDR3: 387 + case ROCKCHIP_DDRTYPE_DDR3: 390 388 data->odt_dis_freq = data->ddr3_odt_dis_freq; 391 389 break; 392 - case RK3399_PMUGRF_DDRTYPE_LPDDR3: 390 + case ROCKCHIP_DDRTYPE_LPDDR3: 393 391 data->odt_dis_freq = data->lpddr3_odt_dis_freq; 394 392 break; 395 - case RK3399_PMUGRF_DDRTYPE_LPDDR4: 393 + case ROCKCHIP_DDRTYPE_LPDDR4: 396 394 data->odt_dis_freq = data->lpddr4_odt_dis_freq; 397 395 break; 398 396 default:
+1 -6
include/soc/rockchip/rk3399_grf.h
··· 11 11 12 12 /* PMU GRF Registers */ 13 13 #define RK3399_PMUGRF_OS_REG2 0x308 14 - #define RK3399_PMUGRF_DDRTYPE_SHIFT 13 15 - #define RK3399_PMUGRF_DDRTYPE_MASK 7 16 - #define RK3399_PMUGRF_DDRTYPE_DDR3 3 17 - #define RK3399_PMUGRF_DDRTYPE_LPDDR2 5 18 - #define RK3399_PMUGRF_DDRTYPE_LPDDR3 6 19 - #define RK3399_PMUGRF_DDRTYPE_LPDDR4 7 14 + #define RK3399_PMUGRF_OS_REG2_DDRTYPE GENMASK(15, 13) 20 15 21 16 #endif
+17
include/soc/rockchip/rockchip_grf.h
··· 1 + /* SPDX-License-Identifier: GPL-2.0+ */ 2 + /* 3 + * Rockchip General Register Files definitions 4 + */ 5 + 6 + #ifndef __SOC_ROCKCHIP_GRF_H 7 + #define __SOC_ROCKCHIP_GRF_H 8 + 9 + /* Rockchip DDRTYPE defines */ 10 + enum { 11 + ROCKCHIP_DDRTYPE_DDR3 = 3, 12 + ROCKCHIP_DDRTYPE_LPDDR2 = 5, 13 + ROCKCHIP_DDRTYPE_LPDDR3 = 6, 14 + ROCKCHIP_DDRTYPE_LPDDR4 = 7, 15 + }; 16 + 17 + #endif /* __SOC_ROCKCHIP_GRF_H */