Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  1) /* SPDX-License-Identifier: GPL-2.0-only */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  3)  * Copyright (c) 2015, Linaro Limited
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  4)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  5) #include <linux/linkage.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  6) #include <linux/arm-smccc.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  7) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  8) #include <asm/asm-offsets.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  9) #include <asm/opcodes-sec.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) #include <asm/opcodes-virt.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) #include <asm/unwind.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) 	/*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) 	 * Wrap c macros in asm macros to delay expansion until after the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) 	 * SMCCC asm macro is expanded.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) 	 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) 	.macro SMCCC_SMC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) 	__SMC(0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) 	.endm
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) 	.macro SMCCC_HVC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) 	__HVC(0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) 	.endm
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) 	.macro SMCCC instr
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) UNWIND(	.fnstart)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) 	mov	r12, sp
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) 	push	{r4-r7}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) UNWIND(	.save	{r4-r7})
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) 	ldm	r12, {r4-r7}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) 	\instr
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) 	ldr	r4, [sp, #36]
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) 	cmp	r4, #0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) 	beq	1f			// No quirk structure
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) 	ldr     r5, [r4, #ARM_SMCCC_QUIRK_ID_OFFS]
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) 	cmp     r5, #ARM_SMCCC_QUIRK_QCOM_A6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) 	bne	1f			// No quirk present
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) 	str	r6, [r4, #ARM_SMCCC_QUIRK_STATE_OFFS]
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) 1:	pop	{r4-r7}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) 	ldr	r12, [sp, #(4 * 4)]
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) 	stm	r12, {r0-r3}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) 	bx	lr
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) UNWIND(	.fnend)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) 	.endm
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47)  * void smccc_smc(unsigned long a0, unsigned long a1, unsigned long a2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48)  *		  unsigned long a3, unsigned long a4, unsigned long a5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49)  *		  unsigned long a6, unsigned long a7, struct arm_smccc_res *res,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50)  *		  struct arm_smccc_quirk *quirk)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) ENTRY(__arm_smccc_smc)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) 	SMCCC SMCCC_SMC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) ENDPROC(__arm_smccc_smc)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57)  * void smccc_hvc(unsigned long a0, unsigned long a1, unsigned long a2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58)  *		  unsigned long a3, unsigned long a4, unsigned long a5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59)  *		  unsigned long a6, unsigned long a7, struct arm_smccc_res *res,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60)  *		  struct arm_smccc_quirk *quirk)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) ENTRY(__arm_smccc_hvc)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) 	SMCCC SMCCC_HVC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) ENDPROC(__arm_smccc_hvc)