xref: /openbmc/u-boot/arch/x86/include/asm/ioapic.h (revision e8f80a5a)
1*83d290c5STom Rini /* SPDX-License-Identifier: GPL-2.0 */
2a2f5d091SSimon Glass /*
3a2f5d091SSimon Glass  * From coreboot file of the same name
4a2f5d091SSimon Glass  *
5a2f5d091SSimon Glass  * Copyright (C) 2010 coresystems GmbH
6a2f5d091SSimon Glass  */
7a2f5d091SSimon Glass 
8a2f5d091SSimon Glass #ifndef __ASM_IOAPIC_H
9a2f5d091SSimon Glass #define __ASM_IOAPIC_H
10a2f5d091SSimon Glass 
11a2f5d091SSimon Glass #define IO_APIC_ADDR		0xfec00000
12ba9091f5SBin Meng 
13ba9091f5SBin Meng /* Direct addressed register */
14ba9091f5SBin Meng #define IO_APIC_INDEX		(IO_APIC_ADDR + 0x00)
15a2f5d091SSimon Glass #define IO_APIC_DATA		(IO_APIC_ADDR + 0x10)
16a2f5d091SSimon Glass 
173d232878SBin Meng /* Indirect addressed register offset */
183d232878SBin Meng #define IO_APIC_ID		0x00
193d232878SBin Meng #define IO_APIC_VER		0x01
203d232878SBin Meng 
213d232878SBin Meng /**
223d232878SBin Meng  * io_apic_read() - Read I/O APIC register
233d232878SBin Meng  *
243d232878SBin Meng  * This routine reads I/O APIC indirect addressed register.
253d232878SBin Meng  *
263d232878SBin Meng  * @reg:	address of indirect addressed register
273d232878SBin Meng  * @return:	register value to read
283d232878SBin Meng  */
293d232878SBin Meng u32 io_apic_read(u32 reg);
303d232878SBin Meng 
313d232878SBin Meng /**
323d232878SBin Meng  * io_apic_write() - Write I/O APIC register
333d232878SBin Meng  *
343d232878SBin Meng  * This routine writes I/O APIC indirect addressed register.
353d232878SBin Meng  *
363d232878SBin Meng  * @reg:	address of indirect addressed register
373d232878SBin Meng  * @val:	register value to write
383d232878SBin Meng  */
393d232878SBin Meng void io_apic_write(u32 reg, u32 val);
403d232878SBin Meng 
411cb1611fSSimon Glass void io_apic_set_id(int ioapic_id);
421cb1611fSSimon Glass 
43a2f5d091SSimon Glass #endif
44