xref: /openbmc/u-boot/arch/x86/include/asm/ioapic.h (revision 3d232878)
1a2f5d091SSimon Glass /*
2a2f5d091SSimon Glass  * From coreboot file of the same name
3a2f5d091SSimon Glass  *
4a2f5d091SSimon Glass  * Copyright (C) 2010 coresystems GmbH
5a2f5d091SSimon Glass  *
6a2f5d091SSimon Glass  * SPDX-License-Identifier:	GPL-2.0
7a2f5d091SSimon Glass  */
8a2f5d091SSimon Glass 
9a2f5d091SSimon Glass #ifndef __ASM_IOAPIC_H
10a2f5d091SSimon Glass #define __ASM_IOAPIC_H
11a2f5d091SSimon Glass 
12a2f5d091SSimon Glass #define IO_APIC_ADDR		0xfec00000
13ba9091f5SBin Meng 
14ba9091f5SBin Meng /* Direct addressed register */
15ba9091f5SBin Meng #define IO_APIC_INDEX		(IO_APIC_ADDR + 0x00)
16a2f5d091SSimon Glass #define IO_APIC_DATA		(IO_APIC_ADDR + 0x10)
17a2f5d091SSimon Glass 
18*3d232878SBin Meng /* Indirect addressed register offset */
19*3d232878SBin Meng #define IO_APIC_ID		0x00
20*3d232878SBin Meng #define IO_APIC_VER		0x01
21*3d232878SBin Meng 
22*3d232878SBin Meng /**
23*3d232878SBin Meng  * io_apic_read() - Read I/O APIC register
24*3d232878SBin Meng  *
25*3d232878SBin Meng  * This routine reads I/O APIC indirect addressed register.
26*3d232878SBin Meng  *
27*3d232878SBin Meng  * @reg:	address of indirect addressed register
28*3d232878SBin Meng  * @return:	register value to read
29*3d232878SBin Meng  */
30*3d232878SBin Meng u32 io_apic_read(u32 reg);
31*3d232878SBin Meng 
32*3d232878SBin Meng /**
33*3d232878SBin Meng  * io_apic_write() - Write I/O APIC register
34*3d232878SBin Meng  *
35*3d232878SBin Meng  * This routine writes I/O APIC indirect addressed register.
36*3d232878SBin Meng  *
37*3d232878SBin Meng  * @reg:	address of indirect addressed register
38*3d232878SBin Meng  * @val:	register value to write
39*3d232878SBin Meng  */
40*3d232878SBin Meng void io_apic_write(u32 reg, u32 val);
41*3d232878SBin Meng 
42a2f5d091SSimon Glass #endif
43