1 /*
2 * Copyright (c) 2018-2019, Texas Instruments Incorporated
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * * Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 *
12 * * Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the 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 "AS IS"
21 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
27 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
30 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 */
32 /**
33 * \file sciclient_genericMsgs.c
34 *
35 * \brief File containing the SCICLIENT API interfaces to generic DMSC Services
36 *
37 */
39 /* ========================================================================== */
40 /* Include Files */
41 /* ========================================================================== */
43 #include <stdint.h>
44 #include <ti/csl/csl_types.h>
45 #include <ti/drv/sciclient/sciclient.h>
47 /* ========================================================================== */
48 /* Macros & Typedefs */
49 /* ========================================================================== */
51 /* None */
53 /* ========================================================================== */
54 /* Structure Declarations */
55 /* ========================================================================== */
57 /* None */
59 /* ========================================================================== */
60 /* Function Declarations */
61 /* ========================================================================== */
63 /* None */
65 /* ========================================================================== */
66 /* Global Variables */
67 /* ========================================================================== */
69 /* None */
71 /* ========================================================================== */
72 /* Function Definitions */
73 /* ========================================================================== */
74 int32_t Sciclient_msmcQuery(const struct tisci_query_msmc_req *req,
75 struct tisci_query_msmc_resp *resp,
76 uint32_t timeout)
77 {
78 int32_t r;
79 Sciclient_ReqPrm_t sciReq;
80 sciReq.messageType = TISCI_MSG_QUERY_MSMC;
81 sciReq.flags = TISCI_MSG_FLAG_AOP;
82 sciReq.pReqPayload = (const uint8_t *) req;
83 sciReq.reqPayloadSize = (uint32_t) sizeof (struct tisci_query_msmc_req);
84 sciReq.timeout = timeout;
86 Sciclient_RespPrm_t sciResp;
87 sciResp.flags = 0;
88 sciResp.pRespPayload = (uint8_t *)resp;
89 sciResp.respPayloadSize = (uint32_t) sizeof(*resp);
91 r = Sciclient_service(&sciReq, &sciResp);
92 if ((r != CSL_PASS) ||
93 ((sciResp.flags & TISCI_MSG_FLAG_ACK) != TISCI_MSG_FLAG_ACK)) {
94 r = CSL_EFAIL;
95 }
97 return r;
98 }
100 /* -------------------------------------------------------------------------- */
101 /* Internal Function Definitions */
102 /* -------------------------------------------------------------------------- */
104 /* None */