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-or-later */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  2) #ifndef _POWERPC_PMI_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  3) #define _POWERPC_PMI_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  4) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  5) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  6)  * Definitions for talking with PMI device on PowerPC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  7)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  8)  * PMI (Platform Management Interrupt) is a way to communicate
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  9)  * with the BMC (Baseboard Management Controller) via interrupts.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10)  * Unlike IPMI it is bidirectional and has a low latency.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12)  * (C) Copyright IBM Deutschland Entwicklung GmbH 2005
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14)  * Author: Christian Krafft <krafft@de.ibm.com>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) #ifdef __KERNEL__
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) #define PMI_TYPE_FREQ_CHANGE	0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) #define PMI_TYPE_POWER_BUTTON	0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) #define PMI_READ_TYPE		0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) #define PMI_READ_DATA0		1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) #define PMI_READ_DATA1		2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) #define PMI_READ_DATA2		3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) #define PMI_WRITE_TYPE		4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) #define PMI_WRITE_DATA0		5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) #define PMI_WRITE_DATA1		6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) #define PMI_WRITE_DATA2		7
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) #define PMI_ACK			0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) #define PMI_TIMEOUT		100
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) typedef struct {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) 	u8	type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) 	u8	data0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) 	u8	data1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) 	u8	data2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) } pmi_message_t;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) struct pmi_handler {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) 	struct list_head node;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) 	u8 type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) 	void (*handle_pmi_message) (pmi_message_t);
^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) int pmi_register_handler(struct pmi_handler *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) void pmi_unregister_handler(struct pmi_handler *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) int pmi_send_message(pmi_message_t);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) #endif /* __KERNEL__ */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) #endif /* _POWERPC_PMI_H */