From b3ce966ab3d88f84b0f0c709d47cc8755f2d9170 Mon Sep 17 00:00:00 2001 From: Mounika Grace Akula Date: Wed, 9 Jan 2019 17:38:13 +0530 Subject: [PATCH] zynqmp: pm: Add LPD WDT clock to the pm_clock structure This patch adds LPD WDT clock node to the pm_clock clocks structure list so that LPD WDT can be used from Linux. Also this patch removes the CLK_LPD_LSBUS from invalid clock list to allow the registration of this clock to CCF framework as it is the parent of LPD WDT. Signed-off-by: Mounika Grace Akula Signed-off-by: Jolly Shah Change-Id: Iea065aa8150eaba4bb4b42bc6be1fd4b7fe7b403 --- plat/xilinx/zynqmp/include/zynqmp_def.h | 3 ++- plat/xilinx/zynqmp/pm_service/pm_api_clock.c | 13 ++++++++++++- plat/xilinx/zynqmp/pm_service/pm_api_clock.h | 1 + 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/plat/xilinx/zynqmp/include/zynqmp_def.h b/plat/xilinx/zynqmp/include/zynqmp_def.h index 8648b9ab2..5d335d945 100644 --- a/plat/xilinx/zynqmp/include/zynqmp_def.h +++ b/plat/xilinx/zynqmp/include/zynqmp_def.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014-2018, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2014-2019, ARM Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -330,6 +330,7 @@ #define IOU_SLCR_GEM_CLK_CTRL (IOU_SLCR_BASEADDR + 0x308) #define IOU_SLCR_CAN_MIO_CTRL (IOU_SLCR_BASEADDR + 0x304) #define FPD_SLCR_WDT_CLK_SEL (FPD_SLCR_BASEADDR + 0x100) +#define IOU_SLCR_WDT_CLK_SEL (IOU_SLCR_BASEADDR + 0x300) /* Global general storage register base address */ #define GGS_BASEADDR (0xFFD80030U) diff --git a/plat/xilinx/zynqmp/pm_service/pm_api_clock.c b/plat/xilinx/zynqmp/pm_service/pm_api_clock.c index 347f5892f..e3050724d 100644 --- a/plat/xilinx/zynqmp/pm_service/pm_api_clock.c +++ b/plat/xilinx/zynqmp/pm_service/pm_api_clock.c @@ -2198,6 +2198,18 @@ static struct pm_clock clocks[] = { .nodes = &can1_nodes, .num_nodes = ARRAY_SIZE(can1_nodes), }, + [CLK_LPD_WDT] = { + .name = "lpd_wdt", + .control_reg = IOU_SLCR_WDT_CLK_SEL, + .status_reg = 0, + .parents = &((int32_t []) { + CLK_LPD_LSBUS, + EXT_CLK_SWDT1 | CLK_EXTERNAL_PARENT, + CLK_NA_PARENT + }), + .nodes = &wdt_nodes, + .num_nodes = ARRAY_SIZE(wdt_nodes), + }, }; static struct pm_ext_clock ext_clocks[] = { @@ -2343,7 +2355,6 @@ static uint32_t pm_clk_invalid_list[] = {CLK_USB0, CLK_USB1, CLK_CSU_SPB, CLK_TOPSW_LSBUS, CLK_GTGREF0_REF, CLK_LPD_SWITCH, - CLK_LPD_LSBUS, CLK_CPU_R5, CLK_CPU_R5_CORE, CLK_CSU_SPB, diff --git a/plat/xilinx/zynqmp/pm_service/pm_api_clock.h b/plat/xilinx/zynqmp/pm_service/pm_api_clock.h index 4c5f22dff..5bed5a617 100644 --- a/plat/xilinx/zynqmp/pm_service/pm_api_clock.h +++ b/plat/xilinx/zynqmp/pm_service/pm_api_clock.h @@ -169,6 +169,7 @@ enum clock_id { CLK_GEM1_REF_UNGATED, CLK_GEM2_REF_UNGATED, CLK_GEM3_REF_UNGATED, + CLK_LPD_WDT, END_OF_OUTPUT_CLKS, };