Skip to content

Commit 524f264

Browse files
Elaine Zhangkeveryang
authored andcommitted
clk: rockchip: rk3066: print arm enter and init rate
Change-Id: Iaf4ffbb61830b7bb7cef31843f0e9b75c34d08ec Signed-off-by: Elaine Zhang <[email protected]>
1 parent 441bfb7 commit 524f264

File tree

2 files changed

+100
-2
lines changed

2 files changed

+100
-2
lines changed

arch/arm/include/asm/arch-rockchip/cru_rk3066.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,11 @@ struct rk3066_clk_priv {
2929
struct rk3066_cru *cru;
3030
ulong rate;
3131
bool has_bwadj;
32+
ulong armclk_hz;
33+
ulong armclk_enter_hz;
34+
ulong armclk_init_hz;
35+
bool sync_kernel;
36+
bool set_armclk_rate;
3237
};
3338

3439
struct rk3066_cru {
@@ -52,6 +57,12 @@ struct rk3066_cru {
5257
};
5358
check_member(rk3066_cru, cru_glb_cnt_th, 0x0140);
5459

60+
struct rk3066_clk_info {
61+
unsigned long id;
62+
char *name;
63+
bool is_cru;
64+
};
65+
5566
/* CRU_CLKSEL0_CON */
5667
enum {
5768
/* a9_core_div: core = core_src / (a9_core_div + 1) */

drivers/clk/rockchip/clk_rk3066.c

Lines changed: 89 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,22 @@ struct rk3066_clk_plat {
3636
#endif
3737
};
3838

39+
#ifndef CONFIG_SPL_BUILD
40+
#define RK3066_CLK_DUMP(_id, _name, _iscru) \
41+
{ \
42+
.id = _id, \
43+
.name = _name, \
44+
.is_cru = _iscru, \
45+
}
46+
47+
static const struct rk3066_clk_info clks_dump[] = {
48+
RK3066_CLK_DUMP(PLL_APLL, "apll", true),
49+
RK3066_CLK_DUMP(PLL_DPLL, "dpll", true),
50+
RK3066_CLK_DUMP(PLL_GPLL, "gpll", true),
51+
RK3066_CLK_DUMP(PLL_CPLL, "cpll", true),
52+
};
53+
#endif
54+
3955
struct pll_div {
4056
u32 nr;
4157
u32 nf;
@@ -550,10 +566,15 @@ static int rk3066_clk_probe(struct udevice *dev)
550566

551567
priv->cru = map_sysmem(plat->dtd.reg[0], plat->dtd.reg[1]);
552568
#endif
553-
569+
priv->sync_kernel = false;
570+
if (!priv->armclk_enter_hz)
571+
priv->armclk_enter_hz = rkclk_pll_get_rate(priv->cru,
572+
CLK_ARM);
554573
rkclk_init(priv->cru, priv->grf, 1);
574+
if (!priv->armclk_init_hz)
575+
priv->armclk_init_hz = rkclk_pll_get_rate(priv->cru,
576+
CLK_ARM);
555577
#endif
556-
557578
return 0;
558579
}
559580

@@ -609,3 +630,69 @@ U_BOOT_DRIVER(rockchip_rk3066a_cru) = {
609630
.ofdata_to_platdata = rk3066_clk_ofdata_to_platdata,
610631
.probe = rk3066_clk_probe,
611632
};
633+
634+
#ifndef CONFIG_SPL_BUILD
635+
/**
636+
* soc_clk_dump() - Print clock frequencies
637+
* Returns zero on success
638+
*
639+
* Implementation for the clk dump command.
640+
*/
641+
int soc_clk_dump(void)
642+
{
643+
struct udevice *cru_dev;
644+
struct rk3066_clk_priv *priv;
645+
const struct rk3066_clk_info *clk_dump;
646+
struct clk clk;
647+
unsigned long clk_count = ARRAY_SIZE(clks_dump);
648+
unsigned long rate;
649+
int i, ret;
650+
651+
ret = uclass_get_device_by_driver(UCLASS_CLK,
652+
DM_GET_DRIVER(rockchip_rk3066a_cru),
653+
&cru_dev);
654+
if (ret) {
655+
printf("%s failed to get cru device\n", __func__);
656+
return ret;
657+
}
658+
659+
priv = dev_get_priv(cru_dev);
660+
printf("CLK: (%s. arm: enter %lu KHz, init %lu KHz, kernel %lu%s)\n",
661+
priv->sync_kernel ? "sync kernel" : "uboot",
662+
priv->armclk_enter_hz / 1000,
663+
priv->armclk_init_hz / 1000,
664+
priv->set_armclk_rate ? priv->armclk_hz / 1000 : 0,
665+
priv->set_armclk_rate ? " KHz" : "N/A");
666+
for (i = 0; i < clk_count; i++) {
667+
clk_dump = &clks_dump[i];
668+
if (clk_dump->name) {
669+
clk.id = clk_dump->id;
670+
if (clk_dump->is_cru)
671+
ret = clk_request(cru_dev, &clk);
672+
if (ret < 0)
673+
return ret;
674+
675+
rate = clk_get_rate(&clk);
676+
clk_free(&clk);
677+
if (i == 0) {
678+
if (rate < 0)
679+
printf(" %s %s\n", clk_dump->name,
680+
"unknown");
681+
else
682+
printf(" %s %lu KHz\n", clk_dump->name,
683+
rate / 1000);
684+
} else {
685+
if (rate < 0)
686+
printf(" %s %s\n", clk_dump->name,
687+
"unknown");
688+
else
689+
printf(" %s %lu KHz\n", clk_dump->name,
690+
rate / 1000);
691+
}
692+
}
693+
}
694+
695+
return 0;
696+
}
697+
#endif
698+

0 commit comments

Comments
 (0)