summaryrefslogtreecommitdiffstats
path: root/src/include
diff options
context:
space:
mode:
authorDan Crowell <dcrowell@us.ibm.com>2014-05-13 16:45:45 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2014-09-22 13:31:04 -0500
commitd001febf0b5594120dd422bcbe5736221471e0ca (patch)
tree227678a8341e96ef6bf9fe385e1215cffe613b97 /src/include
parente7d14e42caf28c421dfaa4b3b15bda7cf5a77e43 (diff)
downloadtalos-hostboot-d001febf0b5594120dd422bcbe5736221471e0ca.tar.gz
talos-hostboot-d001febf0b5594120dd422bcbe5736221471e0ca.zip
Create LPC Device Driver
Split LPC function out from PNOR DD and incorporate Stradale changes Change-Id: I4162db1a9f52ba3c0c973438b7b70baeae00aee2 Origin: Google Shared Technology RTC: 97494 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/11198 Tested-by: Jenkins Server Reviewed-by: Michael Baiocchi <baiocchi@us.ibm.com> Reviewed-by: Douglas R. Gilbert <dgilbert@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com> Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/include')
-rw-r--r--src/include/usr/devicefw/userif.H13
-rw-r--r--src/include/usr/hbotcompid.H9
-rw-r--r--src/include/usr/lpc/lpc_reasoncodes.H60
-rw-r--r--src/include/usr/lpc/lpcif.H64
-rw-r--r--src/include/usr/pnor/pnor_reasoncodes.H4
5 files changed, 149 insertions, 1 deletions
diff --git a/src/include/usr/devicefw/userif.H b/src/include/usr/devicefw/userif.H
index 0e2497e48..38cad8ea6 100644
--- a/src/include/usr/devicefw/userif.H
+++ b/src/include/usr/devicefw/userif.H
@@ -58,6 +58,8 @@ namespace DeviceFW
SCAN,
EEPROM,
GPIO,
+ LPC,
+
LAST_ACCESS_TYPE,
};
@@ -142,6 +144,17 @@ namespace DeviceFW
static_cast<uint64_t>(( i_flag ))
/**
+ * Construct the device addressing parameters for the LPC device ops.
+ * @param[in] i_trans_type - LPC transaction type.
+ * @param[in] i_address - LPC address to operate on.
+ * Flag options are located in: src/include/usr/lpc/lpcif.H
+ */
+ #define DEVICE_LPC_ADDRESS( i_trans_type, i_address )\
+ DeviceFW::LPC, static_cast<uint64_t>(( i_trans_type )),\
+ static_cast<uint64_t>(( i_address ))
+
+
+ /**
* Construct the device addressing parameters for the EEPROM device ops.
* @param[in] i_eeprom_enum - The chip number of the EEPROM to access. See
* eeprom_chip_types_t in eepromif.H
diff --git a/src/include/usr/hbotcompid.H b/src/include/usr/hbotcompid.H
index 7b610e99c..83a21cd6e 100644
--- a/src/include/usr/hbotcompid.H
+++ b/src/include/usr/hbotcompid.H
@@ -325,6 +325,15 @@ const compId_t GPIO_COMP_ID = 0x2300;
const char GPIO_COMP_NAME[] = "gpio";
//@}
+/** @name LPC
+ * Low Pin Count Bus
+ */
+//@{
+const compId_t LPC_COMP_ID = 0x2400;
+const char LPC_COMP_NAME[] = "lpc";
+//@}
+
+
/** @name RESERVED
* Reserved component ID. x3100 is the component ID
* of FipS ERRL component. Due to our use of
diff --git a/src/include/usr/lpc/lpc_reasoncodes.H b/src/include/usr/lpc/lpc_reasoncodes.H
new file mode 100644
index 000000000..11622becf
--- /dev/null
+++ b/src/include/usr/lpc/lpc_reasoncodes.H
@@ -0,0 +1,60 @@
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/include/usr/lpc/lpc_reasoncodes.H $ */
+/* */
+/* OpenPOWER HostBoot Project */
+/* */
+/* Contributors Listed Below - COPYRIGHT 2014 */
+/* [+] Google Inc. */
+/* [+] International Business Machines Corp. */
+/* */
+/* */
+/* Licensed under the Apache License, Version 2.0 (the "License"); */
+/* you may not use this file except in compliance with the License. */
+/* You may obtain a copy of the License at */
+/* */
+/* http://www.apache.org/licenses/LICENSE-2.0 */
+/* */
+/* Unless required by applicable law or agreed to in writing, software */
+/* distributed under the License is distributed on an "AS IS" BASIS, */
+/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */
+/* implied. See the License for the specific language governing */
+/* permissions and limitations under the License. */
+/* */
+/* IBM_PROLOG_END_TAG */
+#ifndef __LPC_REASONCODES_H
+#define __LPC_REASONCODES_H
+
+#include <hbotcompid.H>
+
+namespace LPC
+{
+ enum LPCModuleId
+ {
+ MOD_LPCDD_INVALID_MODULE = 0x00,
+ MOD_LPCDD_CHECKADDR = 0x01,
+ MOD_LPCDD_READLPC = 0x02,
+ MOD_LPCDD_WRITELPC = 0x03,
+ MOD_LPCDD_CHECKFOROPBERRORS = 0x04,
+ MOD_LPCDD_HWRESET = 0x05,
+ MOD_CREATE_ALTMASTER = 0x06,
+ MOD_READLPC = 0x07,
+ MOD_WRITELPC = 0x08,
+ };
+
+ enum LPCReasonCode
+ {
+ RC_INVALID_ADDR = LPC_COMP_ID | 0x01,
+ RC_ECCB_ERROR = LPC_COMP_ID | 0x02,
+ RC_BAD_ARG = LPC_COMP_ID | 0x03,
+ RC_OPB_ERROR = LPC_COMP_ID | 0x04,
+ RC_UNSUPPORTED_OPERATION = LPC_COMP_ID | 0x05,
+ RC_ALTMASTER_EXISTS = LPC_COMP_ID | 0x06,
+ RC_CANT_USE_MASTER = LPC_COMP_ID | 0x07,
+ RC_CANT_USE_SENTINEL = LPC_COMP_ID | 0x08,
+ RC_BAD_TARGET = LPC_COMP_ID | 0x09,
+ };
+};
+
+#endif
diff --git a/src/include/usr/lpc/lpcif.H b/src/include/usr/lpc/lpcif.H
new file mode 100644
index 000000000..f7cf9f6de
--- /dev/null
+++ b/src/include/usr/lpc/lpcif.H
@@ -0,0 +1,64 @@
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/include/usr/lpc/lpcif.H $ */
+/* */
+/* OpenPOWER HostBoot Project */
+/* */
+/* Contributors Listed Below - COPYRIGHT 2014 */
+/* [+] Google Inc. */
+/* [+] International Business Machines Corp. */
+/* */
+/* */
+/* Licensed under the Apache License, Version 2.0 (the "License"); */
+/* you may not use this file except in compliance with the License. */
+/* You may obtain a copy of the License at */
+/* */
+/* http://www.apache.org/licenses/LICENSE-2.0 */
+/* */
+/* Unless required by applicable law or agreed to in writing, software */
+/* distributed under the License is distributed on an "AS IS" BASIS, */
+/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */
+/* implied. See the License for the specific language governing */
+/* permissions and limitations under the License. */
+/* */
+/* IBM_PROLOG_END_TAG */
+#ifndef __LPCIF_H
+#define __LPCIF_H
+
+#include <errl/errlentry.H>
+
+namespace LPC
+{
+
+/**
+ * @enum LPC::TransType
+ * @brief LPC Transaction Types
+ */
+enum TransType {
+ TRANS_IO,
+ TRANS_MEM,
+ TRANS_FW,
+ TRANS_REG, // LPCHC Register space
+ TRANS_ABS, // Address parm is absolute
+ TRANS_LAST //Invalid, used for looping and tests
+};
+
+
+/**
+ * @brief Create/delete software objects to support non-master access
+ *
+ * Only a single altmaster object can be active at any given time. The
+ * previous object must be destroyed before creating another one.
+ *
+ * @param i_create true: create objects, false: destroy previous objects
+ * @param i_proc Processor target to use for LPC access
+ *
+ * @return Error if invalid parms or ordering occurs
+ */
+errlHndl_t create_altmaster_objects( bool i_create,
+ TARGETING::Target* i_proc );
+
+}; // namespace LPC
+
+#endif // end __LPCIF_H
diff --git a/src/include/usr/pnor/pnor_reasoncodes.H b/src/include/usr/pnor/pnor_reasoncodes.H
index 6760efd40..2d6b272ee 100644
--- a/src/include/usr/pnor/pnor_reasoncodes.H
+++ b/src/include/usr/pnor/pnor_reasoncodes.H
@@ -6,6 +6,7 @@
/* OpenPOWER HostBoot Project */
/* */
/* Contributors Listed Below - COPYRIGHT 2011,2014 */
+/* [+] Google Inc. */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -86,12 +87,13 @@ namespace PNOR
RC_ERROR_IN_STATUS_REG = PNOR_COMP_ID | 0x10,
//termination_rc
RC_REINITIALIZE_SFC = PNOR_COMP_ID | 0x11,
+ RC_SFC_ERROR = PNOR_COMP_ID | 0x12,
};
enum UserDetailsTypes
{
PNOR_UDT_NO_FORMAT = 0x0,
- PNOR_UDT_PNORDD_PARAMETERS = 0x1,
+ PNOR_UDT_PNORDD_PARAMETERS = 0x1,
};
};
OpenPOWER on IntegriCloud