1*c73a90e5STejas Patel /* 2*c73a90e5STejas Patel * Copyright (c) 2019, Xilinx, Inc. All rights reserved. 3*c73a90e5STejas Patel * 4*c73a90e5STejas Patel * SPDX-License-Identifier: BSD-3-Clause 5*c73a90e5STejas Patel */ 6*c73a90e5STejas Patel 7*c73a90e5STejas Patel /* 8*c73a90e5STejas Patel * APU specific definition of processors in the subsystem as well as functions 9*c73a90e5STejas Patel * for getting information about and changing state of the APU. 10*c73a90e5STejas Patel */ 11*c73a90e5STejas Patel 12*c73a90e5STejas Patel #include <plat_ipi.h> 13*c73a90e5STejas Patel #include <platform_def.h> 14*c73a90e5STejas Patel #include <versal_def.h> 15*c73a90e5STejas Patel #include <lib/bakery_lock.h> 16*c73a90e5STejas Patel #include "pm_client.h" 17*c73a90e5STejas Patel 18*c73a90e5STejas Patel DEFINE_BAKERY_LOCK(pm_client_secure_lock); 19*c73a90e5STejas Patel 20*c73a90e5STejas Patel static const struct pm_ipi apu_ipi = { 21*c73a90e5STejas Patel .local_ipi_id = IPI_ID_APU, 22*c73a90e5STejas Patel .remote_ipi_id = IPI_ID_PMC, 23*c73a90e5STejas Patel .buffer_base = IPI_BUFFER_APU_BASE, 24*c73a90e5STejas Patel }; 25*c73a90e5STejas Patel 26*c73a90e5STejas Patel /* Order in pm_procs_all array must match cpu ids */ 27*c73a90e5STejas Patel static const struct pm_proc pm_procs_all[] = { 28*c73a90e5STejas Patel { 29*c73a90e5STejas Patel .node_id = XPM_DEVID_ACPU_0, 30*c73a90e5STejas Patel .ipi = &apu_ipi, 31*c73a90e5STejas Patel }, 32*c73a90e5STejas Patel { 33*c73a90e5STejas Patel .node_id = XPM_DEVID_ACPU_1, 34*c73a90e5STejas Patel .ipi = &apu_ipi, 35*c73a90e5STejas Patel } 36*c73a90e5STejas Patel }; 37*c73a90e5STejas Patel 38*c73a90e5STejas Patel const struct pm_proc *primary_proc = &pm_procs_all[0]; 39