Skip to content

Commit 076b059

Browse files
saschahauerchanwoochoi
authored andcommitted
PM / devfreq: rockchip-dfi: Add RK3568 support
This adds RK3568 support to the DFI driver. Only iniitialization differs from the currently supported RK3399. Link: https://lore.kernel.org/all/[email protected]/ Signed-off-by: Sascha Hauer <[email protected]> Acked-by: Heiko Stuebner <[email protected]> Signed-off-by: Chanwoo Choi <[email protected]>
1 parent d3b0f6a commit 076b059

File tree

2 files changed

+39
-0
lines changed

2 files changed

+39
-0
lines changed

drivers/devfreq/event/rockchip-dfi.c

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323

2424
#include <soc/rockchip/rockchip_grf.h>
2525
#include <soc/rockchip/rk3399_grf.h>
26+
#include <soc/rockchip/rk3568_grf.h>
2627

2728
#define DMC_MAX_CHANNELS 2
2829

@@ -211,10 +212,36 @@ static int rk3399_dfi_init(struct rockchip_dfi *dfi)
211212
return 0;
212213
};
213214

215+
static int rk3568_dfi_init(struct rockchip_dfi *dfi)
216+
{
217+
struct regmap *regmap_pmu = dfi->regmap_pmu;
218+
u32 reg2, reg3;
219+
220+
regmap_read(regmap_pmu, RK3568_PMUGRF_OS_REG2, &reg2);
221+
regmap_read(regmap_pmu, RK3568_PMUGRF_OS_REG3, &reg3);
222+
223+
/* lower 3 bits of the DDR type */
224+
dfi->ddr_type = FIELD_GET(RK3568_PMUGRF_OS_REG2_DRAMTYPE_INFO, reg2);
225+
226+
/*
227+
* For version three and higher the upper two bits of the DDR type are
228+
* in RK3568_PMUGRF_OS_REG3
229+
*/
230+
if (FIELD_GET(RK3568_PMUGRF_OS_REG3_SYSREG_VERSION, reg3) >= 0x3)
231+
dfi->ddr_type |= FIELD_GET(RK3568_PMUGRF_OS_REG3_DRAMTYPE_INFO_V3, reg3) << 3;
232+
233+
dfi->channel_mask = BIT(0);
234+
dfi->max_channels = 1;
235+
236+
return 0;
237+
};
238+
214239
static const struct of_device_id rockchip_dfi_id_match[] = {
215240
{ .compatible = "rockchip,rk3399-dfi", .data = rk3399_dfi_init },
241+
{ .compatible = "rockchip,rk3568-dfi", .data = rk3568_dfi_init },
216242
{ },
217243
};
244+
218245
MODULE_DEVICE_TABLE(of, rockchip_dfi_id_match);
219246

220247
static int rockchip_dfi_probe(struct platform_device *pdev)

include/soc/rockchip/rk3568_grf.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
/* SPDX-License-Identifier: GPL-2.0+ */
2+
#ifndef __SOC_RK3568_GRF_H
3+
#define __SOC_RK3568_GRF_H
4+
5+
#define RK3568_PMUGRF_OS_REG2 0x208
6+
#define RK3568_PMUGRF_OS_REG2_DRAMTYPE_INFO GENMASK(15, 13)
7+
8+
#define RK3568_PMUGRF_OS_REG3 0x20c
9+
#define RK3568_PMUGRF_OS_REG3_DRAMTYPE_INFO_V3 GENMASK(13, 12)
10+
#define RK3568_PMUGRF_OS_REG3_SYSREG_VERSION GENMASK(31, 28)
11+
12+
#endif /* __SOC_RK3568_GRF_H */

0 commit comments

Comments
 (0)