Lines Matching full:scu
13 #include <dt-bindings/clock/ast2500-scu.h>
79 static ulong ast2500_get_clkin(struct ast2500_scu *scu) in ast2500_get_clkin() argument
81 return readl(&scu->hwstrap) & SCU_HWSTRAP_CLKIN_25MHZ in ast2500_get_clkin()
88 * @scu SCU registers
93 static ulong ast2500_get_uart_clk_rate(struct ast2500_scu *scu, int uart_index) in ast2500_get_uart_clk_rate() argument
104 if (readl(&scu->misc_ctrl2) & in ast2500_get_uart_clk_rate()
110 if (readl(&scu->misc_ctrl1) & SCU_MISC_UARTCLK_DIV13) in ast2500_get_uart_clk_rate()
119 ulong clkin = ast2500_get_clkin(priv->scu); in ast2500_clk_get_rate()
130 readl(&priv->scu->h_pll_param)); in ast2500_clk_get_rate()
134 readl(&priv->scu->m_pll_param)); in ast2500_clk_get_rate()
138 ulong apb_div = 4 + 4 * ((readl(&priv->scu->clk_sel1) in ast2500_clk_get_rate()
143 scu->h_pll_param)); in ast2500_clk_get_rate()
148 rate = ast2500_get_uart_clk_rate(priv->scu, 1); in ast2500_clk_get_rate()
151 rate = ast2500_get_uart_clk_rate(priv->scu, 2); in ast2500_clk_get_rate()
154 rate = ast2500_get_uart_clk_rate(priv->scu, 3); in ast2500_clk_get_rate()
157 rate = ast2500_get_uart_clk_rate(priv->scu, 4); in ast2500_clk_get_rate()
160 rate = ast2500_get_uart_clk_rate(priv->scu, 5); in ast2500_clk_get_rate()
221 static ulong ast2500_configure_ddr(struct ast2500_scu *scu, ulong rate) in ast2500_configure_ddr() argument
223 ulong clkin = ast2500_get_clkin(scu); in ast2500_configure_ddr()
233 mpll_reg = readl(&scu->m_pll_param); in ast2500_configure_ddr()
240 ast_scu_unlock(scu); in ast2500_configure_ddr()
241 writel(mpll_reg, &scu->m_pll_param); in ast2500_configure_ddr()
242 ast_scu_lock(scu); in ast2500_configure_ddr()
247 static ulong ast2500_configure_mac(struct ast2500_scu *scu, int index) in ast2500_configure_mac() argument
249 ulong clkin = ast2500_get_clkin(scu); in ast2500_configure_mac()
251 readl(&scu->h_pll_param)); in ast2500_configure_mac()
262 hwstrap = readl(&scu->hwstrap); in ast2500_configure_mac()
293 ast_scu_unlock(scu); in ast2500_configure_mac()
294 clrsetbits_le32(&scu->clk_sel1, SCU_MACCLK_MASK, in ast2500_configure_mac()
302 setbits_le32(&scu->sysreset_ctrl1, reset_bit); in ast2500_configure_mac()
304 clrbits_le32(&scu->clk_stop_ctrl1, clkstop_bit); in ast2500_configure_mac()
306 clrbits_le32(&scu->sysreset_ctrl1, reset_bit); in ast2500_configure_mac()
310 &scu->clk_duty_sel); in ast2500_configure_mac()
312 ast_scu_lock(scu); in ast2500_configure_mac()
317 static ulong ast2500_configure_d2pll(struct ast2500_scu *scu, ulong rate) in ast2500_configure_d2pll() argument
336 ulong clkin = ast2500_get_clkin(scu); in ast2500_configure_d2pll()
339 ast_scu_unlock(scu); in ast2500_configure_d2pll()
342 | SCU_D2PLL_EXT1_RESET, &scu->d2_pll_ext_param[0]); in ast2500_configure_d2pll()
348 clrsetbits_le32(&scu->misc_ctrl1, SCU_MISC_D2PLL_OFF, in ast2500_configure_d2pll()
357 &scu->d2_pll_param); in ast2500_configure_d2pll()
359 clrbits_le32(&scu->d2_pll_ext_param[0], in ast2500_configure_d2pll()
362 clrsetbits_le32(&scu->misc_ctrl2, in ast2500_configure_d2pll()
368 writel(clk_delay_settings | SCU_MICDS_RGMIIPLL, &scu->mac_clk_delay); in ast2500_configure_d2pll()
369 writel(clk_delay_settings, &scu->mac_clk_delay_100M); in ast2500_configure_d2pll()
370 writel(clk_delay_settings, &scu->mac_clk_delay_10M); in ast2500_configure_d2pll()
372 ast_scu_lock(scu); in ast2500_configure_d2pll()
385 new_rate = ast2500_configure_ddr(priv->scu, rate); in ast2500_clk_set_rate()
388 new_rate = ast2500_configure_d2pll(priv->scu, rate); in ast2500_clk_set_rate()
408 ast2500_configure_mac(priv->scu, 1); in ast2500_clk_enable()
411 ast2500_configure_mac(priv->scu, 2); in ast2500_clk_enable()
414 ast2500_configure_d2pll(priv->scu, D2PLL_DEFAULT_RATE); in ast2500_clk_enable()
432 priv->scu = devfdt_get_addr_ptr(dev); in ast2500_clk_probe()
433 if (IS_ERR(priv->scu)) in ast2500_clk_probe()
434 return PTR_ERR(priv->scu); in ast2500_clk_probe()
452 { .compatible = "aspeed,ast2500-scu" },