AM64x MCU+ SDK  08.02.00
sciclient_pm.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2018 Texas Instruments Incorporated
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  *
8  * Redistributions of source code must retain the above copyright
9  * notice, this list of conditions and the following disclaimer.
10  *
11  * Redistributions in binary form must reproduce the above copyright
12  * notice, this list of conditions and the following disclaimer in the
13  * documentation and/or other materials provided with the
14  * distribution.
15  *
16  * Neither the name of Texas Instruments Incorporated nor the names of
17  * its contributors may be used to endorse or promote products derived
18  * from this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  *
32  */
54 #ifndef SCICLIENT_PM_H_
55 #define SCICLIENT_PM_H_
56 
57 /* ========================================================================== */
58 /* Include Files */
59 /* ========================================================================== */
60 
61 #include <stdint.h>
62 
63 #ifdef __cplusplus
64 extern "C" {
65 #endif
66 
67 /* ========================================================================== */
68 /* Macros & Typedefs */
69 /* ========================================================================== */
70 
71 /* None */
72 
73 /* ========================================================================== */
74 /* Structure Declarations */
75 /* ========================================================================== */
76 
77 /* None */
78 
79 /* ========================================================================== */
80 /* Function Declarations */
81 /* ========================================================================== */
82 
107 int32_t Sciclient_pmSetModuleState(uint32_t moduleId,
108  uint32_t state,
109  uint32_t reqFlag,
110  uint32_t timeout);
133 int32_t Sciclient_pmGetModuleState(uint32_t moduleId,
134  uint32_t *moduleState,
135  uint32_t *resetState,
136  uint32_t *contextLossState,
137  uint32_t timeout);
155 int32_t Sciclient_pmSetModuleRst(uint32_t moduleId,
156  uint32_t resetBit,
157  uint32_t timeout);
158 
179 int32_t Sciclient_pmSetModuleRst_flags(uint32_t moduleId,
180  uint32_t resetBit,
181  uint32_t reqFlag,
182  uint32_t timeout);
202 int32_t Sciclient_pmModuleClkRequest(uint32_t moduleId,
203  uint32_t clockId,
204  uint32_t state,
205  uint32_t additionalFlag,
206  uint32_t timeout);
223 int32_t Sciclient_pmModuleGetClkStatus(uint32_t moduleId,
224  uint32_t clockId,
225  uint32_t *state,
226  uint32_t timeout);
227 
250 int32_t Sciclient_pmSetModuleClkParent(uint32_t moduleId,
251  uint32_t clockId,
252  uint32_t parent,
253  uint32_t timeout);
274 int32_t Sciclient_pmGetModuleClkParent(uint32_t moduleId,
275  uint32_t clockId,
276  uint32_t *parent,
277  uint32_t timeout);
296 int32_t Sciclient_pmGetModuleClkNumParent(uint32_t moduleId,
297  uint32_t clockId,
298  uint32_t *numParent,
299  uint32_t timeout);
327 int32_t Sciclient_pmSetModuleClkFreq(uint32_t moduleId,
328  uint32_t clockId,
329  uint64_t freqHz,
330  uint32_t additionalFlag,
331  uint32_t timeout);
361 int32_t Sciclient_pmSetModuleClkFreqRange(uint32_t moduleId,
362  uint32_t clockId,
363  uint64_t freqHz,
364  uint64_t minFreqHz,
365  uint64_t maxFreqHz,
366  uint32_t additionalFlag,
367  uint32_t timeout);
393 int32_t Sciclient_pmQueryModuleClkFreq(uint32_t moduleId,
394  uint32_t clockId,
395  uint64_t reqFreqHz,
396  uint64_t *respFreqHz,
397  uint32_t timeout);
425 int32_t Sciclient_pmQueryModuleClkFreqRange(uint32_t moduleId,
426  uint32_t clockId,
427  uint64_t reqFreqHz,
428  uint64_t minFreqHz,
429  uint64_t maxFreqHz,
430  uint64_t *respFreqHz,
431  uint32_t timeout);
451 int32_t Sciclient_pmGetModuleClkFreq(uint32_t moduleId,
452  uint32_t clockId,
453  uint64_t *freqHz,
454  uint32_t timeout);
466 int32_t Sciclient_pmEnableWdt(uint32_t timeout);
467 
487 int32_t Sciclient_pmDisableWakeup(uint32_t timeout);
488 
507 int32_t Sciclient_pmGetWakeupReason(uint8_t mode[32],
508  uint8_t reason[32],
509  uint32_t * time_ms,
510  uint32_t timeout);
525 int32_t Sciclient_pmDevicePowerOff(uint32_t timeout);
526 
542 int32_t Sciclient_pmDeviceReset(uint32_t timeout);
543 
552 int32_t Sciclient_pmIsModuleValid(uint32_t modId);
553 
554 #ifdef __cplusplus
555 }
556 #endif
557 
558 #endif /* #ifndef SCICLIENT_FMWPMMESSAGES_H_ */
559 
Sciclient_pmQueryModuleClkFreq
int32_t Sciclient_pmQueryModuleClkFreq(uint32_t moduleId, uint32_t clockId, uint64_t reqFreqHz, uint64_t *respFreqHz, uint32_t timeout)
Message to query the best clock frequency in the given range. This message does no real operation,...
Sciclient_pmSetModuleState
int32_t Sciclient_pmSetModuleState(uint32_t moduleId, uint32_t state, uint32_t reqFlag, uint32_t timeout)
Message to set the hardware block/module state This is used to request or release a device....
Sciclient_pmModuleClkRequest
int32_t Sciclient_pmModuleClkRequest(uint32_t moduleId, uint32_t clockId, uint32_t state, uint32_t additionalFlag, uint32_t timeout)
Message to set the clock state: This requests for finer control of hardware device's clocks....
Sciclient_pmDevicePowerOff
int32_t Sciclient_pmDevicePowerOff(uint32_t timeout)
Some processors have a special sequence for powering off the core that provides notification to the P...
Sciclient_pmEnableWdt
int32_t Sciclient_pmEnableWdt(uint32_t timeout)
Enables the WDT controllers within the DMSC.
time_ms
uint32_t time_ms
Definition: tisci_pm_core.h:3
state
uint8_t state
Definition: tisci_pm_clock.h:3
parent
uint8_t parent
Definition: tisci_pm_clock.h:3
Sciclient_pmGetWakeupReason
int32_t Sciclient_pmGetWakeupReason(uint8_t mode[32], uint8_t reason[32], uint32_t *time_ms, uint32_t timeout)
Request wakeup reason After a wakeup, the host can request the deepest sleep/idle mode reached and th...
Sciclient_pmModuleGetClkStatus
int32_t Sciclient_pmModuleGetClkStatus(uint32_t moduleId, uint32_t clockId, uint32_t *state, uint32_t timeout)
Message to get the clock state to or from a hardware block.
Sciclient_pmSetModuleClkFreq
int32_t Sciclient_pmSetModuleClkFreq(uint32_t moduleId, uint32_t clockId, uint64_t freqHz, uint32_t additionalFlag, uint32_t timeout)
Message to set the clock frequency. This is typically desired when the default frequency of the hardw...
reason
char reason[32]
Definition: tisci_pm_core.h:2
Sciclient_pmDeviceReset
int32_t Sciclient_pmDeviceReset(uint32_t timeout)
Objective: Trigger a SoC level reset Usage: Used to trigger a system level reset. NOTE: Depending on ...
Sciclient_pmGetModuleClkParent
int32_t Sciclient_pmGetModuleClkParent(uint32_t moduleId, uint32_t clockId, uint32_t *parent, uint32_t timeout)
Message to Get Clock Parent: Query the clock parent currently configured for a specific clock source ...
Sciclient_pmGetModuleState
int32_t Sciclient_pmGetModuleState(uint32_t moduleId, uint32_t *moduleState, uint32_t *resetState, uint32_t *contextLossState, uint32_t timeout)
Message to get the hardware block/Module state. This request does not require the processing entity t...
Sciclient_pmSetModuleRst_flags
int32_t Sciclient_pmSetModuleRst_flags(uint32_t moduleId, uint32_t resetBit, uint32_t reqFlag, uint32_t timeout)
Set the device reset state, allowing for user to set reqFlags This is used to set or release various ...
Sciclient_pmSetModuleClkFreqRange
int32_t Sciclient_pmSetModuleClkFreqRange(uint32_t moduleId, uint32_t clockId, uint64_t freqHz, uint64_t minFreqHz, uint64_t maxFreqHz, uint32_t additionalFlag, uint32_t timeout)
Message to set the clock frequency. This is typically desired when the default frequency of the hardw...
Sciclient_pmQueryModuleClkFreqRange
int32_t Sciclient_pmQueryModuleClkFreqRange(uint32_t moduleId, uint32_t clockId, uint64_t reqFreqHz, uint64_t minFreqHz, uint64_t maxFreqHz, uint64_t *respFreqHz, uint32_t timeout)
Message to query the best clock frequency in the given range. This message does no real operation,...
Sciclient_pmIsModuleValid
int32_t Sciclient_pmIsModuleValid(uint32_t modId)
This API would check if the given module Id is valid for the device.
Sciclient_pmDisableWakeup
int32_t Sciclient_pmDisableWakeup(uint32_t timeout)
This message is part of the CPU Off sequence. The sequence is:
mode
char mode[32]
Definition: tisci_pm_core.h:1
Sciclient_pmSetModuleClkParent
int32_t Sciclient_pmSetModuleClkParent(uint32_t moduleId, uint32_t clockId, uint32_t parent, uint32_t timeout)
Message to Set Clock Parent: This message allows SoC specific customization for setting up a specific...
Sciclient_pmGetModuleClkNumParent
int32_t Sciclient_pmGetModuleClkNumParent(uint32_t moduleId, uint32_t clockId, uint32_t *numParent, uint32_t timeout)
Message to get the number of clock parents for a given module. This is typically used to get the max ...
Sciclient_pmGetModuleClkFreq
int32_t Sciclient_pmGetModuleClkFreq(uint32_t moduleId, uint32_t clockId, uint64_t *freqHz, uint32_t timeout)
Message to Get Clock Frequency This is most used functionality and is meant for usage when the driver...
Sciclient_pmSetModuleRst
int32_t Sciclient_pmSetModuleRst(uint32_t moduleId, uint32_t resetBit, uint32_t timeout)
Set the device reset state. This is used to set or release various resets of the hardware block/modul...