diff options
| -rw-r--r-- | drivers/devfreq/event/rockchip-dfi.c | 23 | ||||
| -rw-r--r-- | include/soc/rockchip/rk3399_grf.h | 21 |
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 | |||
| 51 | enum { | ||
| 52 | DDR3 = 3, | ||
| 53 | LPDDR3 = 6, | ||
| 54 | LPDDR4 = 7, | ||
| 55 | UNUSED = 0xFF | ||
| 56 | }; | ||
| 57 | |||
| 58 | struct dmc_usage { | 48 | struct 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 | ||
