static int get_clk(struct dpll_regs *dpll_regs) { unsigned int val; unsigned int m, n; int f = 0; val = readl(dpll_regs->cm_clksel_dpll); m = PLL_GET_M(val); n = PLL_GET_N(val); f = (m * V_OSCK) / n; return f; };
/* * returns: Clock frequency in kHz */ unsigned int __init mips_get_pll_freq(void) { unsigned int pll_reg, m, n, p; unsigned int fin = 54000; /* Base frequency in kHz */ unsigned int fout; /* Read PLL register setting */ pll_reg = asic_read(mips_pll_setup); m = PLL_GET_M(pll_reg); n = PLL_GET_N(pll_reg); p = PLL_GET_P(pll_reg); pr_info("MIPS PLL Register:0x%x M=%d N=%d P=%d\n", pll_reg, m, n, p); /* Calculate clock frequency = (2 * N * 54MHz) / (M * (2**P)) */ fout = ((2 * n * fin) / (m * (0x01 << p))); pr_info("MIPS Clock Freq=%d kHz\n", fout); return fout; }