summaryrefslogtreecommitdiffstats
path: root/src/include
diff options
context:
space:
mode:
authorwhs <whs@us.ibm.com>2016-03-11 14:48:04 -0600
committerStephen Cprek <smcprek@us.ibm.com>2016-04-21 13:51:55 -0500
commitaa6d2d071da787fc41f03fd14415864293b503f5 (patch)
treebf74caf63bb958c8267f0af03bc57930c4c4892b /src/include
parent44130d64dd56990139256d831eba991fac48c51f (diff)
downloadblackbird-hostboot-aa6d2d071da787fc41f03fd14415864293b503f5.tar.gz
blackbird-hostboot-aa6d2d071da787fc41f03fd14415864293b503f5.zip
Create SBE FIFO device driver
Create SBE FIFO device driver and client code for get and put SCOM. Change-Id: I5b478f4a9a05340a61f8102c21e618f24e85c7ac RTC: 134179 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/22174 Tested-by: Jenkins Server Reviewed-by: Matt Derksen <v2cibmd@us.ibm.com> Tested-by: FSP CI Jenkins Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com> Reviewed-by: Martin Gloff <mgloff@us.ibm.com> Reviewed-by: William G. Hoffa <wghoffa@us.ibm.com>
Diffstat (limited to 'src/include')
-rw-r--r--src/include/usr/devicefw/driverif.H7
-rw-r--r--src/include/usr/sbeio/sbeioif.H44
-rw-r--r--src/include/usr/sbeio/sbeioreasoncodes.H6
3 files changed, 55 insertions, 2 deletions
diff --git a/src/include/usr/devicefw/driverif.H b/src/include/usr/devicefw/driverif.H
index a148725b5..064a11d28 100644
--- a/src/include/usr/devicefw/driverif.H
+++ b/src/include/usr/devicefw/driverif.H
@@ -55,6 +55,7 @@ namespace DeviceFW
IBSCOM,
HOSTI2C,
FSI_I2C,
+ SBEFIFOSCOM,
LAST_DRIVER_ACCESS_TYPE
};
@@ -199,6 +200,12 @@ namespace DeviceFW
#define DEVICE_FSI_I2C_ADDRESS_OFFSET( i_port, i_engine, i_devAddr, i_offset_len, i_offset)\
DeviceFW::FSI_I2C, DEVICE_I2C_PARMS(i_port, i_engine, i_devAddr, i_offset_len, i_offset)
+ /** Construct the device addressing parameters for the SBE FIFO Scom
+ * device ops.
+ * @param[in] i_address - scom address to operate on.
+ */
+ #define DEVICE_SBEFIFOSCOM_ADDRESS(i_address) \
+ DeviceFW::SBEFIFOSCOM, static_cast<uint64_t>((i_address))
/** @class InvalidParameterType
* @brief Unused type to cause compiler fails for invalid template types.
diff --git a/src/include/usr/sbeio/sbeioif.H b/src/include/usr/sbeio/sbeioif.H
index 7b8a76d89..3c15c0875 100644
--- a/src/include/usr/sbeio/sbeioif.H
+++ b/src/include/usr/sbeio/sbeioif.H
@@ -29,7 +29,6 @@
namespace SBEIO
{
-
/**
* @brief Start Deadman loop
*
@@ -48,6 +47,49 @@ namespace SBEIO
*/
errlHndl_t stopDeadmanLoop( );
+ /**
+ * @brief Get SCOM via SBE FIFO
+ *
+ * @param[in] i_target Target to access
+ * @param[in] i_addr Requested register address
+ * @param[out] o_data Returned data
+ *
+ * @return errlHndl_t Error log handle on failure.
+ *
+ */
+ errlHndl_t getFifoScom(TARGETING::Target * i_target,
+ uint64_t i_addr,
+ uint64_t & o_data);
+ /**
+ * @brief Put SCOM via SBE FIFO
+ *
+ * @param[in] i_target Target to access
+ * @param[in] i_addr Requested register address
+ * @param[in] i_data Data to write
+ *
+ * @return errlHndl_t Error log handle on failure.
+ *
+ */
+ errlHndl_t putFifoScom(TARGETING::Target * i_target,
+ uint64_t i_addr,
+ uint64_t i_data);
+
+ /**
+ * @brief Put SCOM under mask via SBE FIFO
+ *
+ * @param[in] i_target Target to access
+ * @param[in] i_addr Requested register address
+ * @param[in] i_data Data to write
+ * @param[in] i_mask SCOM mask
+ *
+ * @return errlHndl_t Error log handle on failure.
+ *
+ */
+ errlHndl_t putFifoScomUnderMask(TARGETING::Target * i_target,
+ uint64_t i_addr,
+ uint64_t i_data,
+ uint64_t i_mask);
+
} //end namespace SBEIO
#endif /* _SBEIOIF_H */
diff --git a/src/include/usr/sbeio/sbeioreasoncodes.H b/src/include/usr/sbeio/sbeioreasoncodes.H
index c40d51f35..dec1f6145 100644
--- a/src/include/usr/sbeio/sbeioreasoncodes.H
+++ b/src/include/usr/sbeio/sbeioreasoncodes.H
@@ -68,7 +68,11 @@ enum sbeioReasonCode
SBEIO_FIFO_INVALID_STATUS_DISTANCE = SBEIO_COMP_ID | 0x12,
SBEIO_FIFO_RESPONSE_ERROR = SBEIO_COMP_ID | 0x13,
SBEIO_FIFO_DOWNSTREAM_TIMEOUT = SBEIO_COMP_ID | 0x14,
-
+ SBEIO_FIFO_INVALID_LENGTH = SBEIO_COMP_ID | 0x15,
+ SBEIO_FIFO_INVALID_OPERATION = SBEIO_COMP_ID | 0x16,
+ SBEIO_FIFO_NULL_TARGET = SBEIO_COMP_ID | 0x17,
+ SBEIO_FIFO_MASTER_TARGET = SBEIO_COMP_ID | 0x18,
+ SBEIO_FIFO_SENTINEL_TARGET = SBEIO_COMP_ID | 0x19,
};
}; // end SBE
OpenPOWER on IntegriCloud