--- /dev/null
+--- linux-3.10.26/arch/mips/ralink/mt7620.c 2014-01-15 21:49:41.368793580 +0200
++++ linux-3.10.26/arch/mips/ralink/mt7620.c 2014-01-15 19:33:32.022038160 +0200
+@@ -105,12 +105,15 @@
+
+ void __init ralink_clk_init(void)
+ {
+- unsigned long cpu_rate, sys_rate;
++ unsigned long cpu_rate, sys_rate, xtal_freq;
+ u32 c0 = rt_sysc_r32(SYSC_REG_CPLL_CONFIG0);
+ u32 c1 = rt_sysc_r32(SYSC_REG_CPLL_CONFIG1);
+ u32 swconfig = (c0 >> CPLL_SW_CONFIG_SHIFT) & CPLL_SW_CONFIG_MASK;
+ u32 cpu_clk = (c1 >> CPLL_CPU_CLK_SHIFT) & CPLL_CPU_CLK_MASK;
+
++ u32 syscfg0 = rt_sysc_r32(SYSC_REG_SYSTEM_CONFIG0);
++ xtal_freq = (syscfg0 & 0x40) ? 40000000 : 20000000;
++
+ if (cpu_clk) {
+ cpu_rate = 480000000;
+ } else if (!swconfig) {
+@@ -133,6 +136,7 @@
+ ralink_clk_add("10000500.uart", 40000000);
+ ralink_clk_add("10000b00.spi", 40000000);
+ ralink_clk_add("10000c00.uartlite", 40000000);
++ ralink_clk_add("10180000.wmac", xtal_freq);
+
+ if (IS_ENABLED(CONFIG_USB)) {
+ /*