1 #include <ubi_uboot.h>
\r
2 #include <linux/compiler.h>
\r
3 #include <asm/arch/clock.h>
\r
5 extern const u32 __clkinit0 __clkinit_begin;
\r
6 extern const u32 __clkinit2 __clkinit_end;
\r
8 static unsigned int get_clock_rate(const char *clk_name)
\r
13 clk =clk_get(0, clk_name);
\r
17 printf("%s can't find!\r\n");
\r
23 rate = clk->ops->get_rate(clk);
\r
29 printf("%s : %d\r\n", clk_name, rate);
\r
33 static unsigned int change_clock_rate(const *clk_name, unsigned int rate)
\r
37 clk =clk_get(0, clk_name);
\r
41 printf("%s can't find!\r\n");
\r
47 if (clk->ops->set_rate)
\r
49 clk->ops->set_rate(clk, rate);
\r
60 printf("%s ==> %d\r\n", clk_name, rate);
\r
70 printf("clock_test, __clkinit_begin:%08X (%08X), __clkinit_end:%08X (%08X)\r\n\r\n",
\r
71 &__clkinit_begin, __clkinit_begin, &__clkinit_end, __clkinit_end);
\r
74 struct clk_lookup *cl = (struct clk_lookup *)(&__clkinit_begin + 1);
\r
75 while (cl < (struct clk_lookup *)&__clkinit_end)
\r
77 clk =clk_get(0, cl->con_id);
\r
78 if (clk != ERR_PTR(-2))
\r
82 printf("1.clk: %s, rate: %d\r\n", cl->con_id, clk->ops->get_rate(clk));
\r
86 printf("2.clk: %s, rate: %d\r\n", cl->con_id, clk->rate);
\r
91 printf("get %s error!\r\n", cl->con_id);
\r
96 printf("---------------------------------------\r\n");
\r
97 get_clock_rate("clk_arm");
\r
98 get_clock_rate("clk_axi");
\r
99 get_clock_rate("clk_ahb");
\r
100 get_clock_rate("clk_apb");
\r
102 get_clock_rate("clk_emmc");
\r
103 change_clock_rate("clk_emmc", 192000000);
\r
104 get_clock_rate("clk_emmc");
\r
106 get_clock_rate("clk_apb");
\r
107 change_clock_rate("clk_apb", 100000000);
\r
108 get_clock_rate("clk_apb");
\r
111 get_clock_rate("clk_emc");
\r
112 change_clock_rate("clk_emc", 100000000);
\r
113 get_clock_rate("clk_emc");
\r
115 get_clock_rate("clk_dbg");
\r
116 change_clock_rate("clk_dbg", 200000000);
\r
117 get_clock_rate("clk_dbg");
\r
119 printf("clock test end!\r\n");
\r