aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/devfreq/event/rockchip-dfi.c23
-rw-r--r--include/soc/rockchip/rk3399_grf.h21
2 files changed, 28 insertions, 16 deletions
diff --git a/drivers/devfreq/event/rockchip-dfi.c b/drivers/devfreq/event/rockchip-dfi.c
index fcbf76ebf55d..a436ec4901bb 100644
--- a/drivers/devfreq/event/rockchip-dfi.c
+++ b/drivers/devfreq/event/rockchip-dfi.c
@@ -26,6 +26,8 @@
26#include <linux/list.h> 26#include <linux/list.h>
27#include <linux/of.h> 27#include <linux/of.h>
28 28
29#include <soc/rockchip/rk3399_grf.h>
30
29#define RK3399_DMC_NUM_CH 2 31#define RK3399_DMC_NUM_CH 2
30 32
31/* DDRMON_CTRL */ 33/* DDRMON_CTRL */
@@ -43,18 +45,6 @@
43#define DDRMON_CH1_COUNT_NUM 0x3c 45#define DDRMON_CH1_COUNT_NUM 0x3c
44#define DDRMON_CH1_DFI_ACCESS_NUM 0x40 46#define DDRMON_CH1_DFI_ACCESS_NUM 0x40
45 47
46/* pmu grf */
47#define PMUGRF_OS_REG2 0x308
48#define DDRTYPE_SHIFT 13
49#define DDRTYPE_MASK 7
50
51enum {
52 DDR3 = 3,
53 LPDDR3 = 6,
54 LPDDR4 = 7,
55 UNUSED = 0xFF
56};
57
58struct dmc_usage { 48struct dmc_usage {
59 u32 access; 49 u32 access;
60 u32 total; 50 u32 total;
@@ -83,16 +73,17 @@ static void rockchip_dfi_start_hardware_counter(struct devfreq_event_dev *edev)
83 u32 ddr_type; 73 u32 ddr_type;
84 74
85 /* get ddr type */ 75 /* get ddr type */
86 regmap_read(info->regmap_pmu, PMUGRF_OS_REG2, &val); 76 regmap_read(info->regmap_pmu, RK3399_PMUGRF_OS_REG2, &val);
87 ddr_type = (val >> DDRTYPE_SHIFT) & DDRTYPE_MASK; 77 ddr_type = (val >> RK3399_PMUGRF_DDRTYPE_SHIFT) &
78 RK3399_PMUGRF_DDRTYPE_MASK;
88 79
89 /* clear DDRMON_CTRL setting */ 80 /* clear DDRMON_CTRL setting */
90 writel_relaxed(CLR_DDRMON_CTRL, dfi_regs + DDRMON_CTRL); 81 writel_relaxed(CLR_DDRMON_CTRL, dfi_regs + DDRMON_CTRL);
91 82
92 /* set ddr type to dfi */ 83 /* set ddr type to dfi */
93 if (ddr_type == LPDDR3) 84 if (ddr_type == RK3399_PMUGRF_DDRTYPE_LPDDR3)
94 writel_relaxed(LPDDR3_EN, dfi_regs + DDRMON_CTRL); 85 writel_relaxed(LPDDR3_EN, dfi_regs + DDRMON_CTRL);
95 else if (ddr_type == LPDDR4) 86 else if (ddr_type == RK3399_PMUGRF_DDRTYPE_LPDDR4)
96 writel_relaxed(LPDDR4_EN, dfi_regs + DDRMON_CTRL); 87 writel_relaxed(LPDDR4_EN, dfi_regs + DDRMON_CTRL);
97 88
98 /* enable count, use software mode */ 89 /* enable count, use software mode */
diff --git a/include/soc/rockchip/rk3399_grf.h b/include/soc/rockchip/rk3399_grf.h
new file mode 100644
index 000000000000..3eebabcb2812
--- /dev/null
+++ b/include/soc/rockchip/rk3399_grf.h
@@ -0,0 +1,21 @@
1/* SPDX-License-Identifier: GPL-2.0+ */
2/*
3 * Rockchip General Register Files definitions
4 *
5 * Copyright (c) 2018, Collabora Ltd.
6 * Author: Enric Balletbo i Serra <enric.balletbo@collabora.com>
7 */
8
9#ifndef __SOC_RK3399_GRF_H
10#define __SOC_RK3399_GRF_H
11
12/* PMU GRF Registers */
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
20
21#endif