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 imx7_clock_uart_init(void)973f432a4SBryan O'Donoghuestatic 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 imx7_clock_wdog_init(void)175ff1751dSBryan O'Donoghuestatic void imx7_clock_wdog_init(void) 185ff1751dSBryan O'Donoghue { 195ff1751dSBryan O'Donoghue unsigned int i; 205ff1751dSBryan O'Donoghue 215ff1751dSBryan O'Donoghue for (i = 0; i < MXC_MAX_WDOG_NUM; i++) 225ff1751dSBryan O'Donoghue imx_clock_disable_wdog(i); 235ff1751dSBryan O'Donoghue } 245ff1751dSBryan O'Donoghue imx7_clock_usb_init(void)25*ddfb773fSBryan O'Donoghuestatic void imx7_clock_usb_init(void) 26*ddfb773fSBryan O'Donoghue { 27*ddfb773fSBryan O'Donoghue /* Disable the clock root */ 28*ddfb773fSBryan O'Donoghue imx_clock_target_clr(CCM_TRT_ID_USB_HSIC_CLK_ROOT, 0xFFFFFFFF); 29*ddfb773fSBryan O'Donoghue } 30*ddfb773fSBryan O'Donoghue imx_clock_init(void)3173f432a4SBryan O'Donoghuevoid imx_clock_init(void) 3273f432a4SBryan O'Donoghue { 3373f432a4SBryan O'Donoghue /* 3473f432a4SBryan O'Donoghue * The BootROM hands off to the next stage with the internal 24 MHz XTAL 3573f432a4SBryan O'Donoghue * crystal already clocking the main PLL, which is very handy. 3673f432a4SBryan O'Donoghue * Here we should enable whichever peripherals are required for ATF and 3773f432a4SBryan O'Donoghue * OPTEE. 3873f432a4SBryan O'Donoghue * 3973f432a4SBryan O'Donoghue * Subsequent stages in the boot process such as u-boot and Linux 4073f432a4SBryan O'Donoghue * already have a significant and mature code-base around clocks, so our 4173f432a4SBryan O'Donoghue * objective should be to enable what we need for ATF/OPTEE without 4273f432a4SBryan O'Donoghue * breaking any existing upstream code in Linux and u-boot. 4373f432a4SBryan O'Donoghue */ 4473f432a4SBryan O'Donoghue 4573f432a4SBryan O'Donoghue /* Initialize UART clocks */ 4673f432a4SBryan O'Donoghue imx7_clock_uart_init(); 475ff1751dSBryan O'Donoghue 485ff1751dSBryan O'Donoghue /* Watchdog clocks */ 49*ddfb773fSBryan O'Donoghue 505ff1751dSBryan O'Donoghue imx7_clock_wdog_init(); 51*ddfb773fSBryan O'Donoghue 52*ddfb773fSBryan O'Donoghue /* USB clocks */ 53*ddfb773fSBryan O'Donoghue imx7_clock_usb_init(); 54*ddfb773fSBryan O'Donoghue 5573f432a4SBryan O'Donoghue } 56