xref: /rk3399_ARM-atf/plat/imx/common/imx7_clock.c (revision 5ff1751d07f971e9362cf8d252cd68f24ab4f35f)
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