Lines Matching +full:pll +full:- +full:periph
4 * SPDX-License-Identifier: GPL-2.0+
9 #include <clk-uclass.h>
16 #include <dt-bindings/clock/microchip,clock.h>
71 /* Memory PLL */
97 v = readl(priv->iobase + SPLLCON); in pic32_get_pll_rate()
123 v = readl(priv->iobase + OSCCON); in pic32_get_sysclk()
150 static ulong pic32_get_pbclk(struct pic32_clk_priv *priv, int periph) in pic32_get_pbclk() argument
155 WARN_ON((periph < PB1CLK) || (periph > PB7CLK)); in pic32_get_pbclk()
159 reg = priv->iobase + PB1DIV + (periph - PB1CLK) * 0x10; in pic32_get_pbclk()
170 static ulong pic32_set_refclk(struct pic32_clk_priv *priv, int periph, in pic32_set_refclk() argument
177 WARN_ON((periph < REF1CLK) || (periph > REF5CLK)); in pic32_set_refclk()
190 frac -= (u64)(div << 9); in pic32_set_refclk()
194 reg = priv->iobase + REFO1CON + (periph - REF1CLK) * 0x20; in pic32_set_refclk()
230 static ulong pic32_get_refclk(struct pic32_clk_priv *priv, int periph) in pic32_get_refclk() argument
236 WARN_ON((periph < REF1CLK) || (periph > REF5CLK)); in pic32_get_refclk()
238 reg = priv->iobase + REFO1CON + (periph - REF1CLK) * 0x20; in pic32_get_refclk()
287 v = readl(priv->syscfg_base + CFGMPLL); in pic32_get_mpll_rate()
310 writel(v, priv->syscfg_base + CFGMPLL); in pic32_mpll_init()
314 return wait_for_bit_le32(priv->syscfg_base + CFGMPLL, mask, in pic32_mpll_init()
320 const void *blob = gd->fdt_blob; in pic32_clk_init()
332 "microchip,refo%d-frequency", i - REF1CLK + 1); in pic32_clk_init()
338 /* Memory PLL */ in pic32_clk_init()
344 struct pic32_clk_priv *priv = dev_get_priv(clk->dev); in pic32_get_rate()
347 switch (clk->id) { in pic32_get_rate()
349 rate = pic32_get_pbclk(priv, clk->id); in pic32_get_rate()
352 rate = pic32_get_refclk(priv, clk->id); in pic32_get_rate()
370 struct pic32_clk_priv *priv = dev_get_priv(clk->dev); in pic32_set_rate()
373 switch (clk->id) { in pic32_set_rate()
376 pic32_set_refclk(priv, clk->id, pll_hz, rate, ROCLK_SRC_SPLL); in pic32_set_rate()
396 addr = fdtdec_get_addr_size(gd->fdt_blob, dev_of_offset(dev), "reg", in pic32_clk_probe()
399 return -EINVAL; in pic32_clk_probe()
401 priv->iobase = ioremap(addr, size); in pic32_clk_probe()
402 if (!priv->iobase) in pic32_clk_probe()
403 return -EINVAL; in pic32_clk_probe()
405 priv->syscfg_base = pic32_get_syscfg_base(); in pic32_clk_probe()
414 { .compatible = "microchip,pic32mzda-clk"},