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. Rozyckistatic 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. Rozyckistatic 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