QNX: Remove dead virtio-related macros
[ipc/ipcdev.git] / qnx / src / ipc3x_dev / ti / syslink / family / common / vayu / vayuipu / vayucore1 / VAYUIpuCore1HalReset.c
1 /*
2  *  @file   VAYUIpuCore1HalReset.c
3  *
4  *  @brief      Reset control module.
5  *
6  *              This module is responsible for handling reset-related hardware-
7  *              specific operations.
8  *              The implementation is specific to VAYUIPUCORE1.
9  *
10  *
11  *  ============================================================================
12  *
13  *  Copyright (c) 2013-2014, Texas Instruments Incorporated
14  *
15  *  Redistribution and use in source and binary forms, with or without
16  *  modification, are permitted provided that the following conditions
17  *  are met:
18  *
19  *  *  Redistributions of source code must retain the above copyright
20  *     notice, this list of conditions and the following disclaimer.
21  *
22  *  *  Redistributions in binary form must reproduce the above copyright
23  *     notice, this list of conditions and the following disclaimer in the
24  *     documentation and/or other materials provided with the distribution.
25  *
26  *  *  Neither the name of Texas Instruments Incorporated nor the names of
27  *     its contributors may be used to endorse or promote products derived
28  *     from this software without specific prior written permission.
29  *
30  *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
31  *  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
32  *  THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
33  *  PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
34  *  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
35  *  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
36  *  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
37  *  OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
38  *  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
39  *  OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
40  *  EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
41  */
43 #include <ti/syslink/Std.h>
45 /* OSAL & Utils headers */
46 #include <ti/syslink/utils/Trace.h>
47 #include <Bitops.h>
49 /* Module level headers */
50 #include <_ProcDefs.h>
51 #include <Processor.h>
53 /* Hardware Abstraction Layer headers */
54 #include <VAYUIpuHal.h>
55 #include <VAYUIpuCore1HalReset.h>
57 #include <hw/inout.h>
59 #if defined (__cplusplus)
60 extern "C" {
61 #endif
64 /* =============================================================================
65  *  Macros and types
66  * =============================================================================
67  */
68 /* M4 PRCM Regs*/
69 #define RM_IPU_RSTCTRL_OFFSET        0x210
70 #define RM_IPU_RSTST_OFFSET          0x214
72 #define CM_IPU_CLKSTCTRL_OFFSET      0x200
73 #define CM_IPU_IPU_CLKCTRL_OFFSET    0x220
76 /* =============================================================================
77  * APIs called by VAYUIPUCORE1PROC module
78  * =============================================================================
79  */
80 /*!
81  *  @brief      Function to control reset operations
82  *
83  *  @param      halObj  Pointer to the HAL object
84  *  @param      cmd     Reset control command
85  *  @param      arg     Arguments specific to the reset control command
86  *
87  *  @sa
88  */
89 Int
90 VAYUIPUCORE1_halResetCtrl (Ptr halObj, Processor_ResetCtrlCmd cmd)
91 {
92     Int                 status    = PROCESSOR_SUCCESS;
93     VAYUIPU_HalObject * halObject = NULL;
94     UInt32              cmBase;
95     UInt32              prmBase;
96     UInt32              reg       = 0;
98     GT_2trace (curTrace, GT_ENTER, "VAYUIPUCORE1_halResetCtrl", halObj, cmd);
100     GT_assert (curTrace, (halObj != NULL));
101     GT_assert (curTrace, (cmd < Processor_ResetCtrlCmd_EndValue));
103     halObject = (VAYUIPU_HalObject *) halObj ;
104     cmBase = halObject->cmBase;
105     prmBase = halObject->prmBase;
107     switch (cmd) {
108         case Processor_ResetCtrlCmd_Reset:
109         {
110             /*Put ONLY Benelli M4_1 to Reset*/
111             /* Put IPU core 1 into reset */
112             SETBITREG32(prmBase + RM_IPU_RSTCTRL_OFFSET, 1);
113             /* Read back the reset control register */
114             reg = INREG32(prmBase + RM_IPU_RSTCTRL_OFFSET);
115         }
116         break ;
118         case Processor_ResetCtrlCmd_MMU_Reset:
119         {
120             /* Do nothing, handled by M4_0 MMU_Reset */
121         }
122         break;
124         case Processor_ResetCtrlCmd_MMU_Release:
125         {
126             /* Do nothing, handled by M4_0 MMU_Release */
127         }
128         break;
130         case Processor_ResetCtrlCmd_Release:
131         {
132             /*Bring ONLY Benelli M4_1 out of Reset*/
133             /* De-assert RST1, and clear the Reset status */
134             Osal_printf("De-assert RST2\n");
135             CLRBITREG32(prmBase + RM_IPU_RSTCTRL_OFFSET, 1);
137             while (!(INREG32(prmBase + RM_IPU_RSTST_OFFSET) & 0x2));
138             Osal_printf("RST2 released!");
139             SETBITREG32(prmBase + RM_IPU_RSTST_OFFSET, 1);
141             /* Setting to HW_AUTO Mode */
142             reg = INREG32(cmBase + CM_IPU_CLKSTCTRL_OFFSET);
143             reg &= ~0x3;
144             reg |= 0x3;
145             OUTREG32(cmBase + CM_IPU_CLKSTCTRL_OFFSET, reg);
146         }
147         break;
149         case Processor_ResetCtrlCmd_PeripheralUp:
150         {
151             /* Nothing to be done to bringup the peripherals for this device. */
152         }
153         break;
155         default:
156         {
157             /*! @retval PROCESSOR_E_INVALIDARG Invalid argument */
158             status = PROCESSOR_E_INVALIDARG;
159             GT_setFailureReason (curTrace,
160                                  GT_4CLASS,
161                                  "VAYUIPUCORE1_halResetCtrl",
162                                  status,
163                                  "Unsupported reset ctrl cmd specified");
164         }
165         break ;
166     }
168     GT_1trace (curTrace, GT_LEAVE, "VAYUIPUCORE1_halResetCtrl",status);
170     /*! @retval PROCESSOR_SUCCESS Operation successful */
171     return status;
175 #if defined (__cplusplus)
177 #endif