xref: /rk3399_rockchip-uboot/arch/x86/include/asm/ioapic.h (revision 1cb1611fc6e6223b5281e5e0187855eb0b9f719d)
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 
183d232878SBin Meng /* Indirect addressed register offset */
193d232878SBin Meng #define IO_APIC_ID		0x00
203d232878SBin Meng #define IO_APIC_VER		0x01
213d232878SBin Meng 
223d232878SBin Meng /**
233d232878SBin Meng  * io_apic_read() - Read I/O APIC register
243d232878SBin Meng  *
253d232878SBin Meng  * This routine reads I/O APIC indirect addressed register.
263d232878SBin Meng  *
273d232878SBin Meng  * @reg:	address of indirect addressed register
283d232878SBin Meng  * @return:	register value to read
293d232878SBin Meng  */
303d232878SBin Meng u32 io_apic_read(u32 reg);
313d232878SBin Meng 
323d232878SBin Meng /**
333d232878SBin Meng  * io_apic_write() - Write I/O APIC register
343d232878SBin Meng  *
353d232878SBin Meng  * This routine writes I/O APIC indirect addressed register.
363d232878SBin Meng  *
373d232878SBin Meng  * @reg:	address of indirect addressed register
383d232878SBin Meng  * @val:	register value to write
393d232878SBin Meng  */
403d232878SBin Meng void io_apic_write(u32 reg, u32 val);
413d232878SBin Meng 
42*1cb1611fSSimon Glass void io_apic_set_id(int ioapic_id);
43*1cb1611fSSimon Glass 
44a2f5d091SSimon Glass #endif
45