/* * Copyright (c) 2017 Jean-Paul Etienne * Copyright (c) 2017 Palmer Dabbelt * * SPDX-License-Identifier: Apache-2.0 */ #include #include #include "prci.h" /* Selects the 16MHz oscilator on the HiFive1 board, which provides a clock * that's accurate enough to actually drive serial ports off of. */ static int hifive1_clock_init(struct device *dev) { ARG_UNUSED(dev); PRCI_REG(PRCI_PLLCFG) = PLL_REFSEL(1) | PLL_BYPASS(1); PRCI_REG(PRCI_PLLDIV) = (PLL_FINAL_DIV_BY_1(1) | PLL_FINAL_DIV(0)); PRCI_REG(PRCI_PLLCFG) |= PLL_SEL(1); PRCI_REG(PRCI_HFROSCCFG) &= ~ROSC_EN(1); return 0; } SYS_INIT(hifive1_clock_init, PRE_KERNEL_1, CONFIG_PINMUX_INIT_PRIORITY);