1*54fd6939SJiyong Park /* 2*54fd6939SJiyong Park * Copyright (c) 2018, ARM Limited and Contributors. All rights reserved. 3*54fd6939SJiyong Park * 4*54fd6939SJiyong Park * SPDX-License-Identifier: BSD-3-Clause 5*54fd6939SJiyong Park */ 6*54fd6939SJiyong Park #include <imx_regs.h> 7*54fd6939SJiyong Park #include <imx_clock.h> 8*54fd6939SJiyong Park imx7_clock_uart_init(void)9*54fd6939SJiyong Parkstatic void imx7_clock_uart_init(void) 10*54fd6939SJiyong Park { 11*54fd6939SJiyong Park unsigned int i; 12*54fd6939SJiyong Park 13*54fd6939SJiyong Park for (i = 0; i < MXC_MAX_UART_NUM; i++) 14*54fd6939SJiyong Park imx_clock_disable_uart(i); 15*54fd6939SJiyong Park } 16*54fd6939SJiyong Park imx7_clock_wdog_init(void)17*54fd6939SJiyong Parkstatic void imx7_clock_wdog_init(void) 18*54fd6939SJiyong Park { 19*54fd6939SJiyong Park unsigned int i; 20*54fd6939SJiyong Park 21*54fd6939SJiyong Park for (i = 0; i < MXC_MAX_WDOG_NUM; i++) 22*54fd6939SJiyong Park imx_clock_disable_wdog(i); 23*54fd6939SJiyong Park } 24*54fd6939SJiyong Park imx7_clock_usb_init(void)25*54fd6939SJiyong Parkstatic void imx7_clock_usb_init(void) 26*54fd6939SJiyong Park { 27*54fd6939SJiyong Park /* Disable the clock root */ 28*54fd6939SJiyong Park imx_clock_target_clr(CCM_TRT_ID_USB_HSIC_CLK_ROOT, 0xFFFFFFFF); 29*54fd6939SJiyong Park } 30*54fd6939SJiyong Park imx_clock_init(void)31*54fd6939SJiyong Parkvoid imx_clock_init(void) 32*54fd6939SJiyong Park { 33*54fd6939SJiyong Park /* 34*54fd6939SJiyong Park * The BootROM hands off to the next stage with the internal 24 MHz XTAL 35*54fd6939SJiyong Park * crystal already clocking the main PLL, which is very handy. 36*54fd6939SJiyong Park * Here we should enable whichever peripherals are required for ATF and 37*54fd6939SJiyong Park * OPTEE. 38*54fd6939SJiyong Park * 39*54fd6939SJiyong Park * Subsequent stages in the boot process such as u-boot and Linux 40*54fd6939SJiyong Park * already have a significant and mature code-base around clocks, so our 41*54fd6939SJiyong Park * objective should be to enable what we need for ATF/OPTEE without 42*54fd6939SJiyong Park * breaking any existing upstream code in Linux and u-boot. 43*54fd6939SJiyong Park */ 44*54fd6939SJiyong Park 45*54fd6939SJiyong Park /* Initialize UART clocks */ 46*54fd6939SJiyong Park imx7_clock_uart_init(); 47*54fd6939SJiyong Park 48*54fd6939SJiyong Park /* Watchdog clocks */ 49*54fd6939SJiyong Park 50*54fd6939SJiyong Park imx7_clock_wdog_init(); 51*54fd6939SJiyong Park 52*54fd6939SJiyong Park /* USB clocks */ 53*54fd6939SJiyong Park imx7_clock_usb_init(); 54*54fd6939SJiyong Park 55*54fd6939SJiyong Park } 56