summaryrefslogtreecommitdiffstats
path: root/src/include/usr
diff options
context:
space:
mode:
authorDoug Gilbert <dgilbert@us.ibm.com>2011-11-04 12:12:01 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2012-01-05 11:06:04 -0600
commit7de0708eac63bb81786c2a5e794c5d6fbef069c4 (patch)
treeb47aeb4c9827851d61b44d5cb922704f73257693 /src/include/usr
parent048789fdce6b406de3b7149f8171afd63eea1829 (diff)
downloadblackbird-hostboot-7de0708eac63bb81786c2a5e794c5d6fbef069c4.tar.gz
blackbird-hostboot-7de0708eac63bb81786c2a5e794c5d6fbef069c4.zip
Interrupt presenter implementation
Change-Id: If6b499d819b71298b8a64e096e1eb83c639ad645 Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/517 Tested-by: Jenkins Server Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com> Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/include/usr')
-rw-r--r--src/include/usr/hbotcompid.H8
-rw-r--r--src/include/usr/initservice/initsvcreasoncodes.H1
-rw-r--r--src/include/usr/intr/interrupt.H79
-rw-r--r--src/include/usr/intr/intr_reasoncodes.H45
4 files changed, 133 insertions, 0 deletions
diff --git a/src/include/usr/hbotcompid.H b/src/include/usr/hbotcompid.H
index 48d6c71c5..a4102001c 100644
--- a/src/include/usr/hbotcompid.H
+++ b/src/include/usr/hbotcompid.H
@@ -172,6 +172,14 @@ const compId_t EEPROM_COMP_ID = 0x0E00;
const char EEPROM_COMP_NAME[] = "eeprom";
//@}
+/** @name INTR
+ * Interrupt presenter component
+ */
+//@{
+const compId_t INTR_COMP_ID = 0x0F00;
+const char INTR_COMP_NAME[] = "intr";
+//@}
+
// ----------------------------------------------------------
// CXXTEST Unit Test, reserve compid near the end...
/** @name CXXTEST
diff --git a/src/include/usr/initservice/initsvcreasoncodes.H b/src/include/usr/initservice/initsvcreasoncodes.H
index 1ed76efdd..6cbaa81c7 100644
--- a/src/include/usr/initservice/initsvcreasoncodes.H
+++ b/src/include/usr/initservice/initsvcreasoncodes.H
@@ -63,6 +63,7 @@ enum InitServiceModuleID
START_FSISCOM_ERRL_ID = 0x17,
START_TARGETING_ERRL_ID = 0x18,
START_I2C_ERRL_ID = 0x19,
+ START_INTR_ERRL_ID = 0x1A,
// Internal InitService codes
diff --git a/src/include/usr/intr/interrupt.H b/src/include/usr/intr/interrupt.H
new file mode 100644
index 000000000..142917df2
--- /dev/null
+++ b/src/include/usr/intr/interrupt.H
@@ -0,0 +1,79 @@
+// IBM_PROLOG_BEGIN_TAG
+// This is an automatically generated prolog.
+//
+// $Source: src/include/usr/intr/interrupt.H $
+//
+// IBM CONFIDENTIAL
+//
+// COPYRIGHT International Business Machines Corp. 2011
+//
+// p1
+//
+// Object Code Only (OCO) source materials
+// Licensed Internal Code Source Materials
+// IBM HostBoot Licensed Internal Code
+//
+// The source code for this program is not published or other-
+// wise divested of its trade secrets, irrespective of what has
+// been deposited with the U.S. Copyright Office.
+//
+// Origin: 30
+//
+// IBM_PROLOG_END
+#ifndef INTERRUPT_H
+#define INTERRUPT_H
+
+#include <sys/msg.h>
+#include <errl/errltypes.H>
+#include <sys/interrupt.h>
+
+namespace INTR
+{
+
+
+ /**
+ * External Interrupt Types (XISR)
+ */
+ enum ext_intr_t
+ {
+ NO_INTERRUPT = 0, //!< no interrupt present
+ INTERPROC = 2, //!< Inter processor interrupt
+ FSP_MAILBOX = 0x25, //!< TODO find this value
+ ATTENTION = 0x26, //!< TODO find this value
+ };
+
+ /**
+ * Msg types for intrRp from usr space
+ */
+ enum msg_intr_types_t
+ {
+ MSG_INTR_ADD_CPU_USR = 1, //!< Add cpu core, data[0] = cpuid (PIR)
+ MSG_INTR_REGISTER_MSGQ, //!< Register a msgQ
+ MSG_INTR_ENABLE, //!< Enable external Interrupts
+ MSG_INTR_DISABLE, //!< Disable external interrupts
+ };
+
+
+ /**
+ * Register a message queue to recieve external interrupts
+ * @param[in] i_msgQ The message queue
+ * @param[in] i_type The type of interrupt (XISR value)
+ * @return errlHndl_t on error.
+ */
+ errlHndl_t registerMsgQ(msg_q_t i_msgQ, ext_intr_t i_type);
+
+ /**
+ * Enable hardware to report external interrupts
+ * @return errlHndl_t on error.
+ */
+ errlHndl_t enableExternalInterrupts();
+
+ /**
+ * Disable hardware from reporting external interrupts
+ * @return errlHndl_t on error.
+ */
+ errlHndl_t disableExternalInterrupts();
+
+};
+
+#endif
diff --git a/src/include/usr/intr/intr_reasoncodes.H b/src/include/usr/intr/intr_reasoncodes.H
new file mode 100644
index 000000000..98070196b
--- /dev/null
+++ b/src/include/usr/intr/intr_reasoncodes.H
@@ -0,0 +1,45 @@
+// IBM_PROLOG_BEGIN_TAG
+// This is an automatically generated prolog.
+//
+// $Source: src/include/usr/intr/intr_reasoncodes.H $
+//
+// IBM CONFIDENTIAL
+//
+// COPYRIGHT International Business Machines Corp. 2011
+//
+// p1
+//
+// Object Code Only (OCO) source materials
+// Licensed Internal Code Source Materials
+// IBM HostBoot Licensed Internal Code
+//
+// The source code for this program is not published or other-
+// wise divested of its trade secrets, irrespective of what has
+// been deposited with the U.S. Copyright Office.
+//
+// Origin: 30
+//
+// IBM_PROLOG_END
+#ifndef INTR_REASONCODES_H
+#define INTR_REASONCODES_H
+
+#include <hbotcompid.H>
+
+namespace INTR
+{
+ enum IntrModuleID
+ {
+ UNDEFINED_MODULE_ERRL_ID = 0,
+ INTR_MODULE_ID,
+ };
+
+ enum IntrReasonCode
+ {
+ INTR_ALREADY_REGISTERED = INTR_COMP_ID | 0x01,
+ INTR_REGISTRY_NOT_READY = INTR_COMP_ID | 0x02,
+ INTR_RP_NOT_INITIALIZED = INTR_COMP_ID | 0x03,
+ INTR_BAD_VIRTUAL_IO_ADDRESS = INTR_COMP_ID | 0x04,
+ };
+};
+
+#endif
OpenPOWER on IntegriCloud