| // SPDX-License-Identifier: GPL-2.0 |
| /* |
| * Copyright (C) 2018 Marvell International Ltd. |
| * |
| * https://spdx.org/licenses |
| */ |
| |
| #include <asm/global_data.h> |
| #include <asm/io.h> |
| #include <asm/psci.h> |
| #include <asm/ptrace.h> |
| #include <asm/system.h> |
| #include <asm/arch/smc.h> |
| |
| DECLARE_GLOBAL_DATA_PTR; |
| |
| ssize_t smc_dram_size(unsigned int node) |
| { |
| struct pt_regs regs; |
| |
| regs.regs[0] = OCTEONTX2_DRAM_SIZE; |
| regs.regs[1] = node; |
| smc_call(®s); |
| |
| return regs.regs[0]; |
| } |
| |
| ssize_t smc_disable_rvu_lfs(unsigned int node) |
| { |
| struct pt_regs regs; |
| |
| regs.regs[0] = OCTEONTX2_DISABLE_RVU_LFS; |
| regs.regs[1] = node; |
| smc_call(®s); |
| |
| return regs.regs[0]; |
| } |
| |
| ssize_t smc_configure_ooo(unsigned int val) |
| { |
| struct pt_regs regs; |
| |
| regs.regs[0] = OCTEONTX2_CONFIG_OOO; |
| regs.regs[1] = val; |
| smc_call(®s); |
| |
| return regs.regs[0]; |
| } |
| |
| ssize_t smc_flsf_fw_booted(void) |
| { |
| struct pt_regs regs; |
| |
| regs.regs[0] = OCTEONTX2_FSAFE_PR_BOOT_SUCCESS; |
| smc_call(®s); |
| |
| return regs.regs[0]; |
| } |