1 /*
2 * Copyright (c) 2012-2013, 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 * ======== NotifyCircSetup.c ========
34 */
35 #include <xdc/std.h>
36 #include <xdc/runtime/Error.h>
37 #include <ti/sdo/ipc/notifyDrivers/NotifyDriverCirc.h>
38 #include <ti/sdo/ipc/_Notify.h>
39 #include <ti/sdo/utils/_MultiProc.h>
41 #include "package/internal/NotifyCircSetup.xdc.h"
43 /*
44 *************************************************************************
45 * Module functions
46 *************************************************************************
47 */
49 /*!
50 * ======== NotifyCircSetup_attach ========
51 * Initialize interrupt
52 */
53 Int NotifyCircSetup_attach(UInt16 remoteProcId, Ptr sharedAddr)
54 {
55 NotifyDriverCirc_Params notifyShmParams;
56 NotifyDriverCirc_Handle hostDriverHandle;
57 ti_sdo_ipc_Notify_Handle notifyHandle;
58 Error_Block eb;
59 Int status = Notify_S_SUCCESS;
60 UInt hostProcId = 1 - MultiProc_self();
62 Error_init(&eb);
64 /*
65 * Setup the notify driver to the HOST
66 */
67 NotifyDriverCirc_Params_init(¬ifyShmParams);
68 notifyShmParams.remoteProcId = hostProcId;
69 notifyShmParams.sharedAddr = sharedAddr;
70 notifyShmParams.intVectorId = NotifyCircSetup_dspIntVectId;
72 hostDriverHandle = NotifyDriverCirc_create(¬ifyShmParams, &eb);
73 if (hostDriverHandle == NULL) {
74 status = Notify_E_FAIL;
75 }
77 /* Register the Notify driver with the Notify module */
78 notifyHandle = ti_sdo_ipc_Notify_create(NotifyDriverCirc_Handle_upCast(hostDriverHandle),
79 hostProcId,
80 0, /* lineId */
81 NULL, /* params */
82 &eb);
84 if (notifyHandle == NULL) {
85 NotifyDriverCirc_delete(&hostDriverHandle);
86 status = Notify_E_FAIL;
87 }
89 return (status);
90 }
92 /*!
93 * ======== NotifyCircSetup_sharedMemReq ========
94 */
95 SizeT NotifyCircSetup_sharedMemReq(UInt16 remoteProcId, Ptr sharedAddr)
96 {
97 SizeT memReq;
98 NotifyDriverCirc_Params params;
100 NotifyDriverCirc_Params_init(¶ms);
101 params.sharedAddr = sharedAddr;
103 memReq = NotifyDriverCirc_sharedMemReq(¶ms);
105 return(memReq);
106 }
108 /*!
109 * ======== NotifyCircSetup_numIntLines ========
110 */
111 UInt16 NotifyCircSetup_numIntLines(UInt16 remoteProcId)
112 {
113 return (1);
114 }