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) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  2)  * This file is subject to the terms and conditions of the GNU General Public
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  3)  * License.  See the file "COPYING" in the main directory of this archive
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  4)  * for more details.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  5)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  6)  * KVM/MIPS: Interrupts
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  7)  * Copyright (C) 2012  MIPS Technologies, Inc.  All rights reserved.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  8)  * Authors: Sanjay Lal <sanjayl@kymasys.com>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  9)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12)  * MIPS Exception Priorities, exceptions (including interrupts) are queued up
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13)  * for the guest in the order specified by their priorities
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) #define MIPS_EXC_RESET              0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) #define MIPS_EXC_SRESET             1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) #define MIPS_EXC_DEBUG_ST           2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) #define MIPS_EXC_DEBUG              3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) #define MIPS_EXC_DDB                4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) #define MIPS_EXC_NMI                5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) #define MIPS_EXC_MCHK               6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) #define MIPS_EXC_INT_TIMER          7
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) #define MIPS_EXC_INT_IO_1           8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) #define MIPS_EXC_INT_IO_2           9
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) #define MIPS_EXC_EXECUTE            10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) #define MIPS_EXC_INT_IPI_1          11
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) #define MIPS_EXC_INT_IPI_2          12
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) #define MIPS_EXC_MAX                13
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) /* XXXSL More to follow */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) #define C_TI        (_ULCAST_(1) << 30)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) #ifdef CONFIG_KVM_MIPS_VZ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) #define KVM_MIPS_IRQ_DELIVER_ALL_AT_ONCE (1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) #define KVM_MIPS_IRQ_CLEAR_ALL_AT_ONCE   (1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) #else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) #define KVM_MIPS_IRQ_DELIVER_ALL_AT_ONCE (0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) #define KVM_MIPS_IRQ_CLEAR_ALL_AT_ONCE   (0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) extern u32 *kvm_priority_to_irq;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) u32 kvm_irq_to_priority(u32 irq);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) void kvm_mips_queue_irq(struct kvm_vcpu *vcpu, unsigned int priority);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) void kvm_mips_dequeue_irq(struct kvm_vcpu *vcpu, unsigned int priority);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) int kvm_mips_pending_timer(struct kvm_vcpu *vcpu);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) void kvm_mips_queue_timer_int_cb(struct kvm_vcpu *vcpu);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) void kvm_mips_dequeue_timer_int_cb(struct kvm_vcpu *vcpu);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) void kvm_mips_queue_io_int_cb(struct kvm_vcpu *vcpu,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) 			      struct kvm_mips_interrupt *irq);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) void kvm_mips_dequeue_io_int_cb(struct kvm_vcpu *vcpu,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) 				struct kvm_mips_interrupt *irq);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) int kvm_mips_irq_deliver_cb(struct kvm_vcpu *vcpu, unsigned int priority,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) 			    u32 cause);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) int kvm_mips_irq_clear_cb(struct kvm_vcpu *vcpu, unsigned int priority,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) 			  u32 cause);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) void kvm_mips_deliver_interrupts(struct kvm_vcpu *vcpu, u32 cause);