Module Name: src
Committed By: ryo
Date: Tue Aug 23 05:32:18 UTC 2022
Modified Files:
src/sys/arch/arm/rockchip: rk3399_cru.c rk_cru.h rk_cru_arm.c
Log Message:
Make .reg1 and .reg2 of struct rk_cru_cpu_rate into array, and change the type
of those to bus_size_t and uint32_t.
Array size may increase in the future.
To generate a diff of this commit:
cvs rdiff -u -r1.23 -r1.24 src/sys/arch/arm/rockchip/rk3399_cru.c
cvs rdiff -u -r1.8 -r1.9 src/sys/arch/arm/rockchip/rk_cru.h
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/arm/rockchip/rk_cru_arm.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/arch/arm/rockchip/rk3399_cru.c
diff -u src/sys/arch/arm/rockchip/rk3399_cru.c:1.23 src/sys/arch/arm/rockchip/rk3399_cru.c:1.24
--- src/sys/arch/arm/rockchip/rk3399_cru.c:1.23 Fri Nov 12 22:02:08 2021
+++ src/sys/arch/arm/rockchip/rk3399_cru.c Tue Aug 23 05:32:18 2022
@@ -1,4 +1,4 @@
-/* $NetBSD: rk3399_cru.c,v 1.23 2021/11/12 22:02:08 jmcneill Exp $ */
+/* $NetBSD: rk3399_cru.c,v 1.24 2022/08/23 05:32:18 ryo Exp $ */
/*-
* Copyright (c) 2018 Jared McNeill <[email protected]>
@@ -28,7 +28,7 @@
#include <sys/cdefs.h>
-__KERNEL_RCSID(1, "$NetBSD: rk3399_cru.c,v 1.23 2021/11/12 22:02:08 jmcneill Exp $");
+__KERNEL_RCSID(1, "$NetBSD: rk3399_cru.c,v 1.24 2022/08/23 05:32:18 ryo Exp $");
#include <sys/param.h>
#include <sys/bus.h>
@@ -143,15 +143,22 @@ static const struct rk_cru_pll_rate pll_
#define RK3399_ATCLK_MASK __BITS(4,0)
#define RK3399_PDBG_MASK __BITS(12,8)
+#define RK3399_CPU_RATE(_rate, _reg0, _reg0_mask, _reg0_val, _reg1, _reg1_mask, _reg1_val)\
+ { \
+ .rate = (_rate), \
+ .divs[0] = { .reg = (_reg0), .mask = (_reg0_mask), .val = (_reg0_val) },\
+ .divs[1] = { .reg = (_reg1), .mask = (_reg1_mask), .val = (_reg1_val) },\
+ }
+
#define RK3399_CPUL_RATE(_rate, _aclkm, _atclk, _pdbg) \
- RK_CPU_RATE(_rate, \
+ RK3399_CPU_RATE(_rate, \
CLKSEL_CON(0), RK3399_ACLKM_MASK, \
__SHIFTIN((_aclkm), RK3399_ACLKM_MASK), \
CLKSEL_CON(1), RK3399_ATCLK_MASK|RK3399_PDBG_MASK, \
__SHIFTIN((_atclk), RK3399_ATCLK_MASK)|__SHIFTIN((_pdbg), RK3399_PDBG_MASK))
#define RK3399_CPUB_RATE(_rate, _aclkm, _atclk, _pdbg) \
- RK_CPU_RATE(_rate, \
+ RK3399_CPU_RATE(_rate, \
CLKSEL_CON(2), RK3399_ACLKM_MASK, \
__SHIFTIN((_aclkm), RK3399_ACLKM_MASK), \
CLKSEL_CON(3), RK3399_ATCLK_MASK|RK3399_PDBG_MASK, \
Index: src/sys/arch/arm/rockchip/rk_cru.h
diff -u src/sys/arch/arm/rockchip/rk_cru.h:1.8 src/sys/arch/arm/rockchip/rk_cru.h:1.9
--- src/sys/arch/arm/rockchip/rk_cru.h:1.8 Fri Nov 12 22:02:08 2021
+++ src/sys/arch/arm/rockchip/rk_cru.h Tue Aug 23 05:32:18 2022
@@ -1,4 +1,4 @@
-/* $NetBSD: rk_cru.h,v 1.8 2021/11/12 22:02:08 jmcneill Exp $ */
+/* $NetBSD: rk_cru.h,v 1.9 2022/08/23 05:32:18 ryo Exp $ */
/*-
* Copyright (c) 2018 Jared McNeill <[email protected]>
@@ -141,18 +141,16 @@ struct rk_cru_arm_rate {
.div = (_div), \
}
-struct rk_cru_cpu_rate {
- u_int rate;
- u_int reg1, reg1_mask, reg1_val;
- u_int reg2, reg2_mask, reg2_val;
+struct rk_regmaskval {
+ bus_size_t reg;
+ uint32_t mask;
+ uint32_t val;
};
-#define RK_CPU_RATE(_rate, _reg1, _reg1_mask, _reg1_val, _reg2, _reg2_mask, _reg2_val) \
- { \
- .rate = (_rate), \
- .reg1 = (_reg1), .reg1_mask = (_reg1_mask), .reg1_val = (_reg1_val), \
- .reg2 = (_reg2), .reg2_mask = (_reg2_mask), .reg2_val = (_reg2_val), \
- }
+struct rk_cru_cpu_rate {
+ u_int rate;
+ struct rk_regmaskval divs[2];
+};
struct rk_cru_arm {
bus_size_t reg;
Index: src/sys/arch/arm/rockchip/rk_cru_arm.c
diff -u src/sys/arch/arm/rockchip/rk_cru_arm.c:1.2 src/sys/arch/arm/rockchip/rk_cru_arm.c:1.3
--- src/sys/arch/arm/rockchip/rk_cru_arm.c:1.2 Sat Sep 1 19:35:53 2018
+++ src/sys/arch/arm/rockchip/rk_cru_arm.c Tue Aug 23 05:32:18 2022
@@ -1,4 +1,4 @@
-/* $NetBSD: rk_cru_arm.c,v 1.2 2018/09/01 19:35:53 jmcneill Exp $ */
+/* $NetBSD: rk_cru_arm.c,v 1.3 2022/08/23 05:32:18 ryo Exp $ */
/*-
* Copyright (c) 2018 Jared McNeill <[email protected]>
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rk_cru_arm.c,v 1.2 2018/09/01 19:35:53 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rk_cru_arm.c,v 1.3 2022/08/23 05:32:18 ryo Exp $");
#include <sys/param.h>
#include <sys/bus.h>
@@ -147,13 +147,11 @@ rk_cru_arm_set_rate_cpurates(struct rk_c
if (error != 0)
goto done;
- write_mask = cpu_rate->reg1_mask << 16;
- write_val = cpu_rate->reg1_val;
- CRU_WRITE(sc, cpu_rate->reg1, write_mask | write_val);
-
- write_mask = cpu_rate->reg2_mask << 16;
- write_val = cpu_rate->reg2_val;
- CRU_WRITE(sc, cpu_rate->reg2, write_mask | write_val);
+ for (int i = 0; i < __arraycount(cpu_rate->divs); i++) {
+ write_mask = cpu_rate->divs[i].mask << 16;
+ write_val = cpu_rate->divs[i].val;
+ CRU_WRITE(sc, cpu_rate->divs[i].reg, write_mask | write_val);
+ }
write_mask = arm->div_mask << 16;
write_val = __SHIFTIN(0, arm->div_mask);