13eafce05SSimon Glass /* 263d54a67SBin Meng * From coreboot file of same name 33eafce05SSimon Glass * 43eafce05SSimon Glass * Copyright (C) 2014 Google, Inc 53eafce05SSimon Glass * 63eafce05SSimon Glass * SPDX-License-Identifier: GPL-2.0 73eafce05SSimon Glass */ 83eafce05SSimon Glass 93eafce05SSimon Glass #ifndef _ARCH_ASM_LAPIC_H 103eafce05SSimon Glass #define _ARCH_ASM_LAPIC_H 113eafce05SSimon Glass 1263d54a67SBin Meng #define LAPIC_DEFAULT_BASE 0xfee00000 1363d54a67SBin Meng 1463d54a67SBin Meng #define LAPIC_ID 0x020 1563d54a67SBin Meng #define LAPIC_LVR 0x030 1663d54a67SBin Meng 1763d54a67SBin Meng #define LAPIC_TASKPRI 0x080 1863d54a67SBin Meng #define LAPIC_TPRI_MASK 0xff 1963d54a67SBin Meng 2063d54a67SBin Meng #define LAPIC_RRR 0x0c0 2163d54a67SBin Meng 2263d54a67SBin Meng #define LAPIC_SPIV 0x0f0 2363d54a67SBin Meng #define LAPIC_SPIV_ENABLE 0x100 2463d54a67SBin Meng 2563d54a67SBin Meng #define LAPIC_ICR 0x300 2663d54a67SBin Meng #define LAPIC_DEST_SELF 0x40000 2763d54a67SBin Meng #define LAPIC_DEST_ALLINC 0x80000 2863d54a67SBin Meng #define LAPIC_DEST_ALLBUT 0xc0000 2963d54a67SBin Meng #define LAPIC_ICR_RR_MASK 0x30000 3063d54a67SBin Meng #define LAPIC_ICR_RR_INVALID 0x00000 3163d54a67SBin Meng #define LAPIC_ICR_RR_INPROG 0x10000 3263d54a67SBin Meng #define LAPIC_ICR_RR_VALID 0x20000 3363d54a67SBin Meng #define LAPIC_INT_LEVELTRIG 0x08000 3463d54a67SBin Meng #define LAPIC_INT_ASSERT 0x04000 3563d54a67SBin Meng #define LAPIC_ICR_BUSY 0x01000 3663d54a67SBin Meng #define LAPIC_DEST_LOGICAL 0x00800 3763d54a67SBin Meng #define LAPIC_DM_FIXED 0x00000 3863d54a67SBin Meng #define LAPIC_DM_LOWEST 0x00100 3963d54a67SBin Meng #define LAPIC_DM_SMI 0x00200 4063d54a67SBin Meng #define LAPIC_DM_REMRD 0x00300 4163d54a67SBin Meng #define LAPIC_DM_NMI 0x00400 4263d54a67SBin Meng #define LAPIC_DM_INIT 0x00500 4363d54a67SBin Meng #define LAPIC_DM_STARTUP 0x00600 4463d54a67SBin Meng #define LAPIC_DM_EXTINT 0x00700 4563d54a67SBin Meng #define LAPIC_VECTOR_MASK 0x000ff 4663d54a67SBin Meng 4763d54a67SBin Meng #define LAPIC_ICR2 0x310 4863d54a67SBin Meng #define GET_LAPIC_DEST_FIELD(x) (((x) >> 24) & 0xff) 4963d54a67SBin Meng #define SET_LAPIC_DEST_FIELD(x) ((x) << 24) 5063d54a67SBin Meng 5163d54a67SBin Meng #define LAPIC_LVT0 0x350 5263d54a67SBin Meng #define LAPIC_LVT1 0x360 5363d54a67SBin Meng #define LAPIC_LVT_MASKED (1 << 16) 5463d54a67SBin Meng #define LAPIC_LVT_LEVEL_TRIGGER (1 << 15) 5563d54a67SBin Meng #define LAPIC_LVT_REMOTE_IRR (1 << 14) 5663d54a67SBin Meng #define LAPIC_INPUT_POLARITY (1 << 13) 5763d54a67SBin Meng #define LAPIC_SEND_PENDING (1 << 12) 5863d54a67SBin Meng #define LAPIC_LVT_RESERVED_1 (1 << 11) 5963d54a67SBin Meng #define LAPIC_DELIVERY_MODE_MASK (7 << 8) 6063d54a67SBin Meng #define LAPIC_DELIVERY_MODE_FIXED (0 << 8) 6163d54a67SBin Meng #define LAPIC_DELIVERY_MODE_NMI (4 << 8) 6263d54a67SBin Meng #define LAPIC_DELIVERY_MODE_EXTINT (7 << 8) 630c9075e9SSimon Glass 64*a2d73fdbSBin Meng unsigned long lapic_read(unsigned long reg); 653eafce05SSimon Glass 66*a2d73fdbSBin Meng void lapic_write(unsigned long reg, unsigned long v); 673eafce05SSimon Glass 68*a2d73fdbSBin Meng void enable_lapic(void); 693eafce05SSimon Glass 70*a2d73fdbSBin Meng void disable_lapic(void); 713eafce05SSimon Glass 72*a2d73fdbSBin Meng unsigned long lapicid(void); 733eafce05SSimon Glass 74*a2d73fdbSBin Meng int lapic_remote_read(int apicid, int reg, unsigned long *pvalue); 750c9075e9SSimon Glass 760c9075e9SSimon Glass void lapic_setup(void); 770c9075e9SSimon Glass 783eafce05SSimon Glass #endif 79