xref: /openbmc/linux/arch/x86/include/asm/pc-conf-reg.h (revision fb6a0408)
1*fb6a0408SMaciej W. Rozycki /* SPDX-License-Identifier: GPL-2.0 */
2*fb6a0408SMaciej W. Rozycki /*
3*fb6a0408SMaciej W. Rozycki  * Support for the configuration register space at port I/O locations
4*fb6a0408SMaciej W. Rozycki  * 0x22 and 0x23 variously used by PC architectures, e.g. the MP Spec,
5*fb6a0408SMaciej W. Rozycki  * Cyrix CPUs, numerous chipsets.
6*fb6a0408SMaciej W. Rozycki  */
7*fb6a0408SMaciej W. Rozycki #ifndef _ASM_X86_PC_CONF_REG_H
8*fb6a0408SMaciej W. Rozycki #define _ASM_X86_PC_CONF_REG_H
9*fb6a0408SMaciej W. Rozycki 
10*fb6a0408SMaciej W. Rozycki #include <linux/io.h>
11*fb6a0408SMaciej W. Rozycki #include <linux/spinlock.h>
12*fb6a0408SMaciej W. Rozycki #include <linux/types.h>
13*fb6a0408SMaciej W. Rozycki 
14*fb6a0408SMaciej W. Rozycki #define PC_CONF_INDEX		0x22
15*fb6a0408SMaciej W. Rozycki #define PC_CONF_DATA		0x23
16*fb6a0408SMaciej W. Rozycki 
17*fb6a0408SMaciej W. Rozycki #define PC_CONF_MPS_IMCR	0x70
18*fb6a0408SMaciej W. Rozycki 
19*fb6a0408SMaciej W. Rozycki extern raw_spinlock_t pc_conf_lock;
20*fb6a0408SMaciej W. Rozycki 
pc_conf_get(u8 reg)21*fb6a0408SMaciej W. Rozycki static inline u8 pc_conf_get(u8 reg)
22*fb6a0408SMaciej W. Rozycki {
23*fb6a0408SMaciej W. Rozycki 	outb(reg, PC_CONF_INDEX);
24*fb6a0408SMaciej W. Rozycki 	return inb(PC_CONF_DATA);
25*fb6a0408SMaciej W. Rozycki }
26*fb6a0408SMaciej W. Rozycki 
pc_conf_set(u8 reg,u8 data)27*fb6a0408SMaciej W. Rozycki static inline void pc_conf_set(u8 reg, u8 data)
28*fb6a0408SMaciej W. Rozycki {
29*fb6a0408SMaciej W. Rozycki 	outb(reg, PC_CONF_INDEX);
30*fb6a0408SMaciej W. Rozycki 	outb(data, PC_CONF_DATA);
31*fb6a0408SMaciej W. Rozycki }
32*fb6a0408SMaciej W. Rozycki 
33*fb6a0408SMaciej W. Rozycki #endif /* _ASM_X86_PC_CONF_REG_H */
34