summaryrefslogtreecommitdiffstats
path: root/sys/arm/at91/at91sam9g20.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/arm/at91/at91sam9g20.c')
-rw-r--r--sys/arm/at91/at91sam9g20.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/sys/arm/at91/at91sam9g20.c b/sys/arm/at91/at91sam9g20.c
index 4acedae..61d9ac4 100644
--- a/sys/arm/at91/at91sam9g20.c
+++ b/sys/arm/at91/at91sam9g20.c
@@ -176,6 +176,30 @@ at91_cpu_add_builtin_children(device_t dev)
}
}
+static uint32_t
+at91_pll_outa(int freq)
+{
+
+ switch (freq / 10000000) {
+ case 747 ... 801: return ((1 << 29) | (0 << 14));
+ case 697 ... 746: return ((1 << 29) | (1 << 14));
+ case 647 ... 696: return ((1 << 29) | (2 << 14));
+ case 597 ... 646: return ((1 << 29) | (3 << 14));
+ case 547 ... 596: return ((1 << 29) | (1 << 14));
+ case 497 ... 546: return ((1 << 29) | (2 << 14));
+ case 447 ... 496: return ((1 << 29) | (3 << 14));
+ case 397 ... 446: return ((1 << 29) | (4 << 14));
+ default: return (1 << 29);
+ }
+}
+
+static uint32_t
+at91_pll_outb(int freq)
+{
+
+ return (0);
+}
+
static void
at91_identify(driver_t *drv, device_t parent)
{
@@ -284,6 +308,7 @@ at91_attach(device_t dev)
clk->pll_mul_mask = SAM9G20_PLL_A_MUL_MASK;
clk->pll_div_shift = SAM9G20_PLL_A_DIV_SHIFT;
clk->pll_div_mask = SAM9G20_PLL_A_DIV_MASK;
+ clk->set_outb = at91_pll_outa;
at91_pmc_clock_deref(clk);
clk = at91_pmc_clock_ref("pllb");
@@ -295,6 +320,7 @@ at91_attach(device_t dev)
clk->pll_mul_mask = SAM9G20_PLL_B_MUL_MASK;
clk->pll_div_shift = SAM9G20_PLL_B_DIV_SHIFT;
clk->pll_div_mask = SAM9G20_PLL_B_DIV_MASK;
+ clk->set_outb = at91_pll_outb;
at91_pmc_clock_deref(clk);
return (0);
}
OpenPOWER on IntegriCloud