|
@@ -30,6 +30,70 @@
|
|
|
#include <asm/processor.h>
|
|
|
|
|
|
|
|
|
+/*
|
|
|
+ * get_board_sys_clk
|
|
|
+ * Reads the FPGA on board for CONFIG_SYS_CLK_FREQ
|
|
|
+ */
|
|
|
+
|
|
|
+unsigned long get_board_sys_clk(ulong dummy)
|
|
|
+{
|
|
|
+ u8 i, go_bit, rd_clks;
|
|
|
+ ulong val = 0;
|
|
|
+
|
|
|
+ go_bit = in8(PIXIS_BASE + PIXIS_VCTL);
|
|
|
+ go_bit &= 0x01;
|
|
|
+
|
|
|
+ rd_clks = in8(PIXIS_BASE + PIXIS_VCFGEN0);
|
|
|
+ rd_clks &= 0x1C;
|
|
|
+
|
|
|
+ /*
|
|
|
+ * Only if both go bit and the SCLK bit in VCFGEN0 are set
|
|
|
+ * should we be using the AUX register. Remember, we also set the
|
|
|
+ * GO bit to boot from the alternate bank on the on-board flash
|
|
|
+ */
|
|
|
+
|
|
|
+ if (go_bit) {
|
|
|
+ if (rd_clks == 0x1c)
|
|
|
+ i = in8(PIXIS_BASE + PIXIS_AUX);
|
|
|
+ else
|
|
|
+ i = in8(PIXIS_BASE + PIXIS_SPD);
|
|
|
+ } else {
|
|
|
+ i = in8(PIXIS_BASE + PIXIS_SPD);
|
|
|
+ }
|
|
|
+
|
|
|
+ i &= 0x07;
|
|
|
+
|
|
|
+ switch (i) {
|
|
|
+ case 0:
|
|
|
+ val = 33000000;
|
|
|
+ break;
|
|
|
+ case 1:
|
|
|
+ val = 40000000;
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ val = 50000000;
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ val = 66000000;
|
|
|
+ break;
|
|
|
+ case 4:
|
|
|
+ val = 83000000;
|
|
|
+ break;
|
|
|
+ case 5:
|
|
|
+ val = 100000000;
|
|
|
+ break;
|
|
|
+ case 6:
|
|
|
+ val = 134000000;
|
|
|
+ break;
|
|
|
+ case 7:
|
|
|
+ val = 166000000;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ return val;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
void get_sys_info (sys_info_t *sysInfo)
|
|
|
{
|
|
|
volatile immap_t *immap = (immap_t *)CFG_IMMR;
|
|
@@ -125,67 +189,3 @@ ulong get_bus_freq(ulong dummy)
|
|
|
|
|
|
return val;
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
-/*
|
|
|
- * get_board_sys_clk
|
|
|
- * Reads the FPGA on board for CONFIG_SYS_CLK_FREQ
|
|
|
- */
|
|
|
-
|
|
|
-unsigned long get_board_sys_clk(ulong dummy)
|
|
|
-{
|
|
|
- u8 i, go_bit, rd_clks;
|
|
|
- ulong val;
|
|
|
-
|
|
|
- go_bit = in8(PIXIS_BASE + PIXIS_VCTL);
|
|
|
- go_bit &= 0x01;
|
|
|
-
|
|
|
- rd_clks = in8(PIXIS_BASE + PIXIS_VCFGEN0);
|
|
|
- rd_clks &= 0x1C;
|
|
|
-
|
|
|
- /*
|
|
|
- * Only if both go bit and the SCLK bit in VCFGEN0 are set
|
|
|
- * should we be using the AUX register. Remember, we also set the
|
|
|
- * GO bit to boot from the alternate bank on the on-board flash
|
|
|
- */
|
|
|
-
|
|
|
- if (go_bit) {
|
|
|
- if (rd_clks == 0x1c)
|
|
|
- i = in8(PIXIS_BASE + PIXIS_AUX);
|
|
|
- else
|
|
|
- i = in8(PIXIS_BASE + PIXIS_SPD);
|
|
|
- } else {
|
|
|
- i = in8(PIXIS_BASE + PIXIS_SPD);
|
|
|
- }
|
|
|
-
|
|
|
- i &= 0x07;
|
|
|
-
|
|
|
- switch (i) {
|
|
|
- case 0:
|
|
|
- val = 33000000;
|
|
|
- break;
|
|
|
- case 1:
|
|
|
- val = 40000000;
|
|
|
- break;
|
|
|
- case 2:
|
|
|
- val = 50000000;
|
|
|
- break;
|
|
|
- case 3:
|
|
|
- val = 66000000;
|
|
|
- break;
|
|
|
- case 4:
|
|
|
- val = 83000000;
|
|
|
- break;
|
|
|
- case 5:
|
|
|
- val = 100000000;
|
|
|
- break;
|
|
|
- case 6:
|
|
|
- val = 134000000;
|
|
|
- break;
|
|
|
- case 7:
|
|
|
- val = 166000000;
|
|
|
- break;
|
|
|
- }
|
|
|
-
|
|
|
- return val;
|
|
|
-}
|