blob: 9e004e9b5b08e6fb0c66668541756eb4bc51a74f [file] [log] [blame]
Tom Rini83d290c2018-05-06 17:58:06 -04001/* SPDX-License-Identifier: GPL-2.0 */
Simon Glassa2f5d092014-11-14 18:18:27 -07002/*
3 * From coreboot file of the same name
4 *
5 * Copyright (C) 2010 coresystems GmbH
Simon Glassa2f5d092014-11-14 18:18:27 -07006 */
7
8#ifndef __ASM_IOAPIC_H
9#define __ASM_IOAPIC_H
10
11#define IO_APIC_ADDR 0xfec00000
Bin Mengba9091f2015-06-23 12:18:48 +080012
13/* Direct addressed register */
14#define IO_APIC_INDEX (IO_APIC_ADDR + 0x00)
Simon Glassa2f5d092014-11-14 18:18:27 -070015#define IO_APIC_DATA (IO_APIC_ADDR + 0x10)
Simon Glassa2f5d092014-11-14 18:18:27 -070016
Bin Meng3d232872015-06-23 12:18:49 +080017/* Indirect addressed register offset */
18#define IO_APIC_ID 0x00
19#define IO_APIC_VER 0x01
20
21/**
22 * io_apic_read() - Read I/O APIC register
23 *
24 * This routine reads I/O APIC indirect addressed register.
25 *
26 * @reg: address of indirect addressed register
27 * @return: register value to read
28 */
29u32 io_apic_read(u32 reg);
30
31/**
32 * io_apic_write() - Write I/O APIC register
33 *
34 * This routine writes I/O APIC indirect addressed register.
35 *
36 * @reg: address of indirect addressed register
37 * @val: register value to write
38 */
39void io_apic_write(u32 reg, u32 val);
40
Simon Glass1cb16112016-03-11 22:07:34 -070041void io_apic_set_id(int ioapic_id);
42
Simon Glassa2f5d092014-11-14 18:18:27 -070043#endif