1*960e65d2SAdrian Chadd /*- 2*960e65d2SAdrian Chadd * SPDX-License-Identifier: BSD-2-Clause-FreeBSD 3*960e65d2SAdrian Chadd * 4*960e65d2SAdrian Chadd * Copyright (c) 2021 Adrian Chadd <adrian@FreeBSD.org> 5*960e65d2SAdrian Chadd * 6*960e65d2SAdrian Chadd * Redistribution and use in source and binary forms, with or without 7*960e65d2SAdrian Chadd * modification, are permitted provided that the following conditions 8*960e65d2SAdrian Chadd * are met: 9*960e65d2SAdrian Chadd * 1. Redistributions of source code must retain the above copyright 10*960e65d2SAdrian Chadd * notice, this list of conditions and the following disclaimer. 11*960e65d2SAdrian Chadd * 2. Redistributions in binary form must reproduce the above copyright 12*960e65d2SAdrian Chadd * notice, this list of conditions and the following disclaimer in the 13*960e65d2SAdrian Chadd * documentation and/or other materials provided with the distribution. 14*960e65d2SAdrian Chadd * 15*960e65d2SAdrian Chadd * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 16*960e65d2SAdrian Chadd * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17*960e65d2SAdrian Chadd * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18*960e65d2SAdrian Chadd * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 19*960e65d2SAdrian Chadd * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 20*960e65d2SAdrian Chadd * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 21*960e65d2SAdrian Chadd * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22*960e65d2SAdrian Chadd * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23*960e65d2SAdrian Chadd * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24*960e65d2SAdrian Chadd * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25*960e65d2SAdrian Chadd * SUCH DAMAGE. 26*960e65d2SAdrian Chadd * 27*960e65d2SAdrian Chadd * $FreeBSD$ 28*960e65d2SAdrian Chadd */ 29*960e65d2SAdrian Chadd 30*960e65d2SAdrian Chadd #ifndef __QCOM_SCM_DEFS_H__ 31*960e65d2SAdrian Chadd #define __QCOM_SCM_DEFS_H__ 32*960e65d2SAdrian Chadd 33*960e65d2SAdrian Chadd /* 34*960e65d2SAdrian Chadd * Maximum SCM arguments and return values. 35*960e65d2SAdrian Chadd */ 36*960e65d2SAdrian Chadd #define MAX_QCOM_SCM_ARGS 10 37*960e65d2SAdrian Chadd #define MAX_QCOM_SCM_RETS 3 38*960e65d2SAdrian Chadd 39*960e65d2SAdrian Chadd /* 40*960e65d2SAdrian Chadd * SCM argument type definitions. 41*960e65d2SAdrian Chadd */ 42*960e65d2SAdrian Chadd #define QCOM_SCM_ARGTYPE_VAL 0x00 43*960e65d2SAdrian Chadd #define QCOM_SCM_ARGTYPE_RO 0x01 44*960e65d2SAdrian Chadd #define QCOM_SCM_ARGTYPE_RW 0x02 45*960e65d2SAdrian Chadd #define QCOM_SCM_ARGTYPE_BUFVAL 0x03 46*960e65d2SAdrian Chadd 47*960e65d2SAdrian Chadd /* 48*960e65d2SAdrian Chadd * SCM calls + arguments. 49*960e65d2SAdrian Chadd */ 50*960e65d2SAdrian Chadd #define QCOM_SCM_SVC_BOOT 0x01 51*960e65d2SAdrian Chadd #define QCOM_SCM_BOOT_SET_ADDR 0x01 52*960e65d2SAdrian Chadd #define QCOM_SCM_BOOT_TERMINATE_PC 0x02 53*960e65d2SAdrian Chadd #define QCOM_SCM_BOOT_SET_DLOAD_MODE 0x10 54*960e65d2SAdrian Chadd #define QCOM_SCM_BOOT_SET_REMOTE_STATE 0x0a 55*960e65d2SAdrian Chadd #define QCOM_SCM_FLUSH_FLAG_MASK 0x3 56*960e65d2SAdrian Chadd 57*960e65d2SAdrian Chadd /* Flags for QCOM_SCM_BOOT_SET_ADDR argv[0] */ 58*960e65d2SAdrian Chadd /* Note: no COLDBOOT for CPU0, it's already booted */ 59*960e65d2SAdrian Chadd #define QCOM_SCM_FLAG_COLDBOOT_CPU1 0x01 60*960e65d2SAdrian Chadd #define QCOM_SCM_FLAG_WARMBOOT_CPU1 0x02 61*960e65d2SAdrian Chadd #define QCOM_SCM_FLAG_WARMBOOT_CPU0 0x04 62*960e65d2SAdrian Chadd #define QCOM_SCM_FLAG_COLDBOOT_CPU2 0x08 63*960e65d2SAdrian Chadd #define QCOM_SCM_FLAG_WARMBOOT_CPU2 0x10 64*960e65d2SAdrian Chadd #define QCOM_SCM_FLAG_COLDBOOT_CPU3 0x20 65*960e65d2SAdrian Chadd #define QCOM_SCM_FLAG_WARMBOOT_CPU3 0x40 66*960e65d2SAdrian Chadd 67*960e65d2SAdrian Chadd #define QCOM_SCM_SVC_PIL 0x02 68*960e65d2SAdrian Chadd #define QCOM_SCM_PIL_PAS_INIT_IMAGE 0x01 69*960e65d2SAdrian Chadd #define QCOM_SCM_PIL_PAS_MEM_SETUP 0x02 70*960e65d2SAdrian Chadd #define QCOM_SCM_PIL_PAS_AUTH_AND_RESET 0x05 71*960e65d2SAdrian Chadd #define QCOM_SCM_PIL_PAS_SHUTDOWN 0x06 72*960e65d2SAdrian Chadd #define QCOM_SCM_PIL_PAS_IS_SUPPORTED 0x07 73*960e65d2SAdrian Chadd #define QCOM_SCM_PIL_PAS_MSS_RESET 0x0a 74*960e65d2SAdrian Chadd 75*960e65d2SAdrian Chadd #define QCOM_SCM_SVC_IO 0x05 76*960e65d2SAdrian Chadd #define QCOM_SCM_IO_READ 0x01 77*960e65d2SAdrian Chadd #define QCOM_SCM_IO_WRITE 0x02 78*960e65d2SAdrian Chadd 79*960e65d2SAdrian Chadd /* 80*960e65d2SAdrian Chadd * Fetch SCM call availability information. 81*960e65d2SAdrian Chadd */ 82*960e65d2SAdrian Chadd #define QCOM_SCM_SVC_INFO 0x06 83*960e65d2SAdrian Chadd #define QCOM_SCM_INFO_IS_CALL_AVAIL 0x01 84*960e65d2SAdrian Chadd 85*960e65d2SAdrian Chadd #define QCOM_SCM_SVC_MP 0x0c 86*960e65d2SAdrian Chadd #define QCOM_SCM_MP_RESTORE_SEC_CFG 0x02 87*960e65d2SAdrian Chadd #define QCOM_SCM_MP_IOMMU_SECURE_PTBL_SIZE 0x03 88*960e65d2SAdrian Chadd #define QCOM_SCM_MP_IOMMU_SECURE_PTBL_INIT 0x04 89*960e65d2SAdrian Chadd #define QCOM_SCM_MP_VIDEO_VAR 0x08 90*960e65d2SAdrian Chadd #define QCOM_SCM_MP_ASSIGN 0x16 91*960e65d2SAdrian Chadd 92*960e65d2SAdrian Chadd #define QCOM_SCM_SVC_OCMEM 0x0f 93*960e65d2SAdrian Chadd #define QCOM_SCM_OCMEM_LOCK_CMD 0x01 94*960e65d2SAdrian Chadd #define QCOM_SCM_OCMEM_UNLOCK_CMD 0x02 95*960e65d2SAdrian Chadd 96*960e65d2SAdrian Chadd #define QCOM_SCM_SVC_ES 0x10 97*960e65d2SAdrian Chadd #define QCOM_SCM_ES_INVALIDATE_ICE_KEY 0x03 98*960e65d2SAdrian Chadd #define QCOM_SCM_ES_CONFIG_SET_ICE_KEY 0x04 99*960e65d2SAdrian Chadd 100*960e65d2SAdrian Chadd #define QCOM_SCM_SVC_HDCP 0x11 101*960e65d2SAdrian Chadd #define QCOM_SCM_HDCP_INVOKE 0x01 102*960e65d2SAdrian Chadd 103*960e65d2SAdrian Chadd #define QCOM_SCM_SVC_LMH 0x13 104*960e65d2SAdrian Chadd #define QCOM_SCM_LMH_LIMIT_PROFILE_CHANGE 0x01 105*960e65d2SAdrian Chadd #define QCOM_SCM_LMH_LIMIT_DCVSH 0x10 106*960e65d2SAdrian Chadd 107*960e65d2SAdrian Chadd #define QCOM_SCM_SVC_SMMU_PROGRAM 0x15 108*960e65d2SAdrian Chadd #define QCOM_SCM_SMMU_CONFIG_ERRATA1 0x03 109*960e65d2SAdrian Chadd #define QCOM_SCM_SMMU_CONFIG_ERRATA1_CLIENT_ALL 0x02 110*960e65d2SAdrian Chadd 111*960e65d2SAdrian Chadd /* 112*960e65d2SAdrian Chadd * Return values from the SCM calls. 113*960e65d2SAdrian Chadd */ 114*960e65d2SAdrian Chadd #define QCOM_SCM_RETVAL_V2_EBUSY -12 115*960e65d2SAdrian Chadd #define QCOM_SCM_RETVAL_ENOMEM -5 116*960e65d2SAdrian Chadd #define QCOM_SCM_RETVAL_EOPNOTSUPP -4 117*960e65d2SAdrian Chadd #define QCOM_SCM_RETVAL_EINVAL_ADDR -3 118*960e65d2SAdrian Chadd #define QCOM_SCM_RETVAL_EINVAL_ARG -2 119*960e65d2SAdrian Chadd #define QCOM_SCM_RETVAL_ERROR -1 120*960e65d2SAdrian Chadd #define QCOM_SCM_RETVAL_INTERRUPTED 1 121*960e65d2SAdrian Chadd 122*960e65d2SAdrian Chadd #endif /* __QCOM_SCM_DEFS_H__ */ 123