summaryrefslogtreecommitdiff
path: root/drivers/mxc/vpu-malone/Malone_Firmware/DecKLib/Control/DecKernelLibHWControl.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/mxc/vpu-malone/Malone_Firmware/DecKLib/Control/DecKernelLibHWControl.h')
-rwxr-xr-xdrivers/mxc/vpu-malone/Malone_Firmware/DecKLib/Control/DecKernelLibHWControl.h175
1 files changed, 175 insertions, 0 deletions
diff --git a/drivers/mxc/vpu-malone/Malone_Firmware/DecKLib/Control/DecKernelLibHWControl.h b/drivers/mxc/vpu-malone/Malone_Firmware/DecKLib/Control/DecKernelLibHWControl.h
new file mode 100755
index 000000000000..4ef9b0f0b08e
--- /dev/null
+++ b/drivers/mxc/vpu-malone/Malone_Firmware/DecKLib/Control/DecKernelLibHWControl.h
@@ -0,0 +1,175 @@
+/***************************************************
+ Copyright (c) 2015 Amphion Semiconductor Ltd
+ All rights reserved.
+ ***************************************************
+ * The code contained herein is licensed under the GNU General Public
+ * License. You may obtain a copy of the GNU General Public License
+ * Version 2 or later at the following locations:
+ *
+ * http://www.opensource.org/licenses/gpl-license.html
+ * http://www.gnu.org/copyleft/gpl.html
+ ****************************************************
+
+ Filename: DecLibHWControl.h
+ Description:
+
+ **************************************************/
+
+/////////////////////////////////////////////////////////////////////////////////
+// Header files
+/////////////////////////////////////////////////////////////////////////////////
+
+#ifndef _DECODER_LIB_HW_CONTROL_H_
+#define _DECODER_LIB_HW_CONTROL_H_
+
+#include "mvd_types.h"
+#include "mvd_reg_map.h"
+#include "DecKernelLib.h"
+
+/////////////////////////////////////////////////////////////////////////////////
+// Global Macros
+/////////////////////////////////////////////////////////////////////////////////
+
+#define MALONE_HW_1 0 /* Identifiers for the Malone units */
+#define MALONE_HW_2 1
+#define MALONE_SW DECODERLIB_MAX_MALONES /* Sw Malone does not exist! Simply a */
+ /* control structure for carrying out */
+ /* commands which do not need a HW unit */
+#define MALONE_SW_IRQ 0xdeaf
+
+#define DECODERLIB_ISR_QU_SIZE ( DECODERLIB_MAX_MALONES * 4 )
+#define DECODERLIB_SECONDARY_ISR_EVENT 0x80000000
+#define DECODERLIB_EVENT_MASK 0x7FFFFFFF
+
+#define DECODERLIB_FORCEIRQ_BIT_SET( uVal ) (( uVal & 0x1 ) << 30 )
+#define DECODERLIB_FORCEIRQ_BIT_GET( uVal ) (( uVal >> 30 ) & 0x1 )
+#define DECODERLIB_FORCEDFEIRQ_BIT_SET( uVal ) (( uVal & 0x1 ) << 29 )
+#define DECODERLIB_FORCEDFEIRQ_BIT_GET( uVal ) (( uVal >> 29 ) & 0x1 )
+
+/////////////////////////////////////////////////////////////////////////////////
+// Global Types
+/////////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////
+// Decoder Library HW State
+
+typedef enum
+{
+ MALONE_INACTIVE = 0,
+ MALONE_ACTIVE,
+ MALONE_BE_ACTIVE
+
+} MALONE_STATE;
+
+//////////////////////////////////////////////////////////////
+// Decoder Library HW Control Context Info
+
+typedef struct
+{
+
+ MALONE_STATE eState;
+ u_int32 uStrID;
+
+ u_int32 uForceFIQ;
+ u_int32 uForceDFEFIQ;
+ u_int32 uChipVer; /* Hold "malone" version to be filled in from Malone HW register */
+ u_int32 uChipMnrVer; /* Hold "malone" minor version to be filled in from Malone HW register */
+ u_int32 uChipSubVer; /* Hold metal version to be filled in by higher level control */
+ u_int32 uHWFeatures;
+ u_int32 uForceCacheFlush; /* Cache reset issue workaround purpose for Kronos and Fusion RevA */
+ u_int32 bPreparser; /* Set TRUE to indicate a preparser is in place */
+ u_int32 bCQ; /* Set TRUE to indicate a command queue is in place */
+ u_int32 bDCP; /* Set TRUE to indicate unit can operate in decoupled mode */
+ u_int32 uNumDBEs; /* Indicates the number of decoupled back ends available */
+ u_int32 bFBC; /* Set TRUE to indicate Frame buffer Compression support */
+ u_int32 uRSBSize;
+ u_int32 uMaloneID;
+ u_int32 bPixIf;
+ u_int32 bXBUS;
+
+ u_int32 uCQProcType[DECODERLIB_MAX_CQ_PER_MALONE]; /* Specifies what type of processing each of the CQ units is doing */
+
+ MALONE_STATE eDFEState; /* If the front end of the HW is active in isolation - specifies state */
+ u_int8 usDFEStrID; /* If the front end of the HW is active in isolation - specifies */
+ /* which stream is assigned */
+
+ u_int32 uDmaMemSize;
+ void * pDmaMemArea;
+
+ MvdHwRegMap * msd_regp;
+ MvdHwRegHifMap * hif_regp;
+ MvdHwRegSifMap * sif_regp;
+ MvdHwRegCtxMap * ctx_regp;
+ MvdHwReg * rsb_regp;
+ MvdHwRegRprMap * rpr_regp;
+ MvdHwRegSppMap * spp_regp;
+ MvdHwRegH264Map * avc_regp;
+ MvdHwRegMp2dMap * mp2d_regp;
+ MvdHwRegAvsdMap * avsd_regp;
+ MvdHwRegAspdMap * aspd_regp;
+ MvdHwRegVc1dMap * vc1d_regp;
+ MvdHwRegAspdMap * jpgd_regp;
+ MvdHwRegOn2dMap * on2d_regp;
+ MvdHwRegRvidMap * rvid_regp;
+ MvdHwRegHevcMap * hevc_regp;
+ MvdHwRegBbdMap * bbd_regp;
+ MvdHwRegDbgMap * dbg_regp;
+ MvdHwRegCqMap * cq_regp;
+ MvdHwRegRC4Map * rc4_regp;
+ MvdHwRegDfeMap * dfe_regp;
+ MvdHwRegDbeMap * dbe_regp[DECODERLIB_MAX_DBE_UNITS];
+
+} MALONE_KERNEL_HW_SESSION, *pMALONE_KERNEL_HW_SESSION;
+
+/////////////////////////////////////////////////////////////////////////////////
+// Global Function definitions
+/////////////////////////////////////////////////////////////////////////////////
+
+
+void mvd_kernel_hw_control_init ( DECODERLIB_KERNEL_CFG * pCfg );
+
+////////////////////////////////////////////////////////////////////////////////////
+// FUNCTION: mvd_kernel_hw_set_focus //
+// //
+// DESCRIPTION: Changes focus to the selected Malone HW unit //
+// //
+// INPUTS: uMaloneID - The ID of the Malone //
+// //
+// OUTPUTS: ppMVDHw - Pointer to a HW session structure for the specified //
+// Malone //
+// //
+// RETURNS: None. //
+// //
+// NOTES: Only makes sense in multi-malone configs //
+// //
+// CONTEXT: This function may be called from any context //
+// //
+////////////////////////////////////////////////////////////////////////////////////
+
+void mvd_kernel_hw_set_focus ( u_int32 uMaloneID, pMALONE_KERNEL_HW_SESSION * ppMVDHw );
+
+////////////////////////////////////////////////////////////////////////////////////
+// FUNCTION: mvd_kernel_hw_init_handles //
+// //
+// DESCRIPTION: Initialise the HW session handles //
+// //
+// INPUTS: pCfg - A pointer to the DecLib Config structure //
+// bSoftInit - If set, the FW pointers get established - leave //
+// FALSE when restarting from a snapshot //
+// //
+// OUTPUTS: None. //
+// //
+// RETURNS: None. //
+// //
+// NOTES: None. //
+// //
+// CONTEXT: This function must be called from non-interrupt context //
+// //
+////////////////////////////////////////////////////////////////////////////////////
+
+void mvd_kernel_hw_init_handles ( DECODERLIB_KERNEL_CFG * pCfg,
+ bool bSoftInit );
+
+#endif /* _DECODER_LIB_HW_CONTROL_H_ */
+
+/* End of file */