]> git.karo-electronics.de Git - karo-tx-uboot.git/commitdiff
mxs: clock: add XBUS (APBX) clock to list of supported clocks
authorLothar Waßmann <LW@KARO-electronics.de>
Wed, 24 Jul 2013 10:31:29 +0000 (12:31 +0200)
committerLothar Waßmann <LW@KARO-electronics.de>
Wed, 24 Jul 2013 10:31:29 +0000 (12:31 +0200)
arch/arm/cpu/arm926ejs/mxs/clock.c

index 5bcd6e2614a8a9fdf0f0dfefa395cbc9a5a36e2b..102ef7b1924dc1e76bbec0eb39e2e43a50f31972 100644 (file)
@@ -291,6 +291,23 @@ void mx28_set_ssp_busclock(unsigned int bus, uint32_t freq)
                bus, tgtclk, freq);
 }
 
+static uint32_t mx28_get_xbus_clk(void)
+{
+       struct mxs_clkctrl_regs *clkctrl_regs =
+               (struct mxs_clkctrl_regs *)MXS_CLKCTRL_BASE;
+       uint32_t div;
+       uint32_t clkctrl;
+       uint32_t refclk = mx28_get_pclk();
+
+       clkctrl = readl(&clkctrl_regs->hw_clkctrl_xbus);
+       div = clkctrl & CLKCTRL_XBUS_DIV_MASK;
+
+       if (clkctrl & CLKCTRL_XBUS_DIV_FRAC_EN)
+               return 0;
+
+       return refclk / div;
+}
+
 uint32_t mxc_get_clock(enum mxc_clock clk)
 {
        switch (clk) {
@@ -317,6 +334,8 @@ uint32_t mxc_get_clock(enum mxc_clock clk)
                return mx28_get_sspclk(MXC_SSPCLK3);
        case MXC_XTAL_CLK:
                return XTAL_FREQ_KHZ * 1000;
+       case MXC_XBUS_CLK:
+               return mx28_get_xbus_clk() * 1000000;
        default:
                printf("Invalid clock selector %u\n", clk);
        }