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