173f432a4SBryan O'Donoghue /* 273f432a4SBryan O'Donoghue * Copyright (c) 2018, ARM Limited and Contributors. All rights reserved. 373f432a4SBryan O'Donoghue * 473f432a4SBryan O'Donoghue * SPDX-License-Identifier: BSD-3-Clause 573f432a4SBryan O'Donoghue */ 673f432a4SBryan O'Donoghue #include <imx_regs.h> 773f432a4SBryan O'Donoghue #include <imx_clock.h> 873f432a4SBryan O'Donoghue 973f432a4SBryan O'Donoghue static void imx7_clock_uart_init(void) 1073f432a4SBryan O'Donoghue { 1173f432a4SBryan O'Donoghue unsigned int i; 1273f432a4SBryan O'Donoghue 1373f432a4SBryan O'Donoghue for (i = 0; i < MXC_MAX_UART_NUM; i++) 1473f432a4SBryan O'Donoghue imx_clock_disable_uart(i); 1573f432a4SBryan O'Donoghue } 1673f432a4SBryan O'Donoghue 17*5ff1751dSBryan O'Donoghue static void imx7_clock_wdog_init(void) 18*5ff1751dSBryan O'Donoghue { 19*5ff1751dSBryan O'Donoghue unsigned int i; 20*5ff1751dSBryan O'Donoghue 21*5ff1751dSBryan O'Donoghue for (i = 0; i < MXC_MAX_WDOG_NUM; i++) 22*5ff1751dSBryan O'Donoghue imx_clock_disable_wdog(i); 23*5ff1751dSBryan O'Donoghue } 24*5ff1751dSBryan O'Donoghue 2573f432a4SBryan O'Donoghue void imx_clock_init(void) 2673f432a4SBryan O'Donoghue { 2773f432a4SBryan O'Donoghue /* 2873f432a4SBryan O'Donoghue * The BootROM hands off to the next stage with the internal 24 MHz XTAL 2973f432a4SBryan O'Donoghue * crystal already clocking the main PLL, which is very handy. 3073f432a4SBryan O'Donoghue * Here we should enable whichever peripherals are required for ATF and 3173f432a4SBryan O'Donoghue * OPTEE. 3273f432a4SBryan O'Donoghue * 3373f432a4SBryan O'Donoghue * Subsequent stages in the boot process such as u-boot and Linux 3473f432a4SBryan O'Donoghue * already have a significant and mature code-base around clocks, so our 3573f432a4SBryan O'Donoghue * objective should be to enable what we need for ATF/OPTEE without 3673f432a4SBryan O'Donoghue * breaking any existing upstream code in Linux and u-boot. 3773f432a4SBryan O'Donoghue */ 3873f432a4SBryan O'Donoghue 3973f432a4SBryan O'Donoghue /* Initialize UART clocks */ 4073f432a4SBryan O'Donoghue imx7_clock_uart_init(); 41*5ff1751dSBryan O'Donoghue 42*5ff1751dSBryan O'Donoghue /* Watchdog clocks */ 43*5ff1751dSBryan O'Donoghue imx7_clock_wdog_init(); 4473f432a4SBryan O'Donoghue } 45