Index: arch/arm/mach-tegra/nv/include/nvrm_avp_shrd_interrupt.h |
diff --git a/arch/arm/mach-tegra/nv/include/nvrm_avp_shrd_interrupt.h b/arch/arm/mach-tegra/nv/include/nvrm_avp_shrd_interrupt.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..579aab3c240d225195874cfad104de2924f8bef3 |
--- /dev/null |
+++ b/arch/arm/mach-tegra/nv/include/nvrm_avp_shrd_interrupt.h |
@@ -0,0 +1,117 @@ |
+/* |
+ * Copyright (c) 2010 NVIDIA Corporation. |
+ * All rights reserved. |
+ * |
+ * Redistribution and use in source and binary forms, with or without |
+ * modification, are permitted provided that the following conditions are met: |
+ * |
+ * Redistributions of source code must retain the above copyright notice, |
+ * this list of conditions and the following disclaimer. |
+ * |
+ * Redistributions in binary form must reproduce the above copyright notice, |
+ * this list of conditions and the following disclaimer in the documentation |
+ * and/or other materials provided with the distribution. |
+ * |
+ * Neither the name of the NVIDIA Corporation nor the names of its contributors |
+ * may be used to endorse or promote products derived from this software |
+ * without specific prior written permission. |
+ * |
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE |
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
+ * POSSIBILITY OF SUCH DAMAGE. |
+ * |
+ */ |
+ |
+#ifndef INCLUDED_nvrm_avp_shrd_interrupt_H |
+#define INCLUDED_nvrm_avp_shrd_interrupt_H |
+ |
+#include "nvos.h" |
+#include "nvrm_init.h" |
+#include "nvrm_module.h" |
+#include "nvrm_interrupt.h" |
+ |
+#if defined(__cplusplus) |
+extern "C" |
+{ |
+#endif |
+ |
+/* Max number of clients with shared interrupt handler */ |
+enum {MAX_SHRDINT_CLIENTS = 32}; |
+ |
+/* Now AP15 support only VDE interrupts 6 */ |
+enum {MAX_SHRDINT_INTERRUPTS = 6}; |
+ /* VDE Sync Token Interrupt */ |
+enum {AP15_SYNC_TOKEN_INTERRUPT_INDEX = 0}; |
+ /* VDE BSE-V Interrupt */ |
+enum {AP15_BSE_V_INTERRUPT_INDEX = 1}; |
+ /* VDE BSE-A Interrupt */ |
+enum {AP15_BSE_A_INTERRUPT_INDEX = 2}; |
+ /* VDE SXE Interrupt */ |
+enum {AP15_SXE_INTERRUPT_INDEX = 3}; |
+ /* VDE UCQ Error Interrupt */ |
+enum {AP15_UCQ_INTERRUPT_INDEX = 4}; |
+ /* VDE Interrupt */ |
+enum {AP15_VDE_INTERRUPT_INDEX = 5}; |
+ |
+/* Now AP20 support only VDE interrupts 5 */ |
+enum {AP20_MAX_SHRDINT_INTERRUPTS = 5}; |
+ /* VDE Sync Token Interrupt */ |
+enum {AP20_SYNC_TOKEN_INTERRUPT_INDEX = 0}; |
+ /* VDE BSE-V Interrupt */ |
+enum {AP20_BSE_V_INTERRUPT_INDEX = 1}; |
+ /* VDE SXE Interrupt */ |
+enum {AP20_SXE_INTERRUPT_INDEX = 2}; |
+ /* VDE UCQ Error Interrupt */ |
+enum {AP20_UCQ_INTERRUPT_INDEX = 3}; |
+ /* VDE Interrupt */ |
+enum {AP20_VDE_INTERRUPT_INDEX = 4}; |
+ |
+enum |
+{ |
+ NvRmArbSema_Vde = 0, |
+ NvRmArbSema_Bsea, |
+ //This should be last |
+ NvRmArbSema_Num, |
+}; |
+ |
+/* Shared interrupt private init , init done during RM init on AVP */ |
+NvError NvRmAvpShrdInterruptPrvInit(NvRmDeviceHandle hRmDevice); |
+ |
+/* Shared interrupt private de-init , de-init done during RM close on AVP */ |
+void NvRmAvpShrdInterruptPrvDeinit(NvRmDeviceHandle hRmDevice); |
+ |
+/* Get logical interrupt for a module*/ |
+NvU32 NvRmAvpShrdInterruptGetIrqForLogicalInterrupt(NvRmDeviceHandle hRmDevice, |
+ NvRmModuleID ModuleID, |
+ NvU32 Index); |
+/* Register for shared interrpt */ |
+NvError NvRmAvpShrdInterruptRegister(NvRmDeviceHandle hRmDevice, |
+ NvU32 IrqListSize, |
+ const NvU32 *pIrqList, |
+ const NvOsInterruptHandler *pIrqHandlerList, |
+ void *pContext, |
+ NvOsInterruptHandle *handle, |
+ NvU32 *ClientIndex); |
+/* Un-register a shared interrpt */ |
+void NvRmAvpShrdInterruptUnregister(NvRmDeviceHandle hRmDevice, |
+ NvOsInterruptHandle handle, |
+ NvU32 ClientIndex); |
+/* Get exclisive access to a hardware(VDE) block */ |
+NvError NvRmAvpShrdInterruptAquireHwBlock(NvRmModuleID ModuleID, NvU32 ClientId); |
+ |
+/* Release exclisive access to a hardware(VDE) block */ |
+NvError NvRmAvpShrdInterruptReleaseHwBlock(NvRmModuleID ModuleID, NvU32 ClientId); |
+ |
+#if defined(__cplusplus) |
+} |
+#endif |
+ |
+#endif //INCLUDED_nvrm_avp_shrd_interrupt_H |