emac-lld: add to PDK
[processor-sdk/pdk.git] / packages / ti / drv / emac / firmware / icss_dualmac / config / emac_fw_config_dual_mac.c
1 /*
2 *  TEXAS INSTRUMENTS TEXT FILE LICENSE
3
4 *   Copyright (c) 2019 Texas Instruments Incorporated
5
6 *  All rights reserved not granted herein.
7 *  
8 *  Limited License.  
9
10 *  Texas Instruments Incorporated grants a world-wide, royalty-free, non-exclusive 
11 *  license under copyrights and patents it now or hereafter owns or controls to 
12 *  make, have made, use, import, offer to sell and sell ("Utilize") this software 
13 *  subject to the terms herein.  With respect to the foregoing patent license, 
14 *  such license is granted  solely to the extent that any such patent is necessary 
15 *  to Utilize the software alone.  The patent license shall not apply to any 
16 *  combinations which include this software, other than combinations with devices 
17 *  manufactured by or for TI (“TI Devices”).  No hardware patent is licensed hereunder.
18
19 *  Redistributions must preserve existing copyright notices and reproduce this license 
20 *  (including the above copyright notice and the disclaimer and (if applicable) source 
21 *  code license limitations below) in the documentation and/or other materials provided 
22 *  with the distribution.
23 *  
24 *  Redistribution and use in binary form, without modification, are permitted provided 
25 *  that the following conditions are met:
26 *       No reverse engineering, decompilation, or disassembly of this software is 
27 *   permitted with respect to any software provided in binary form.
28 *       Any redistribution and use are licensed by TI for use only with TI Devices.
29 *       Nothing shall obligate TI to provide you with source code for the software 
30 *   licensed and provided to you in object code.
31 *  
32 *  If software source code is provided to you, modification and redistribution of the 
33 *  source code are permitted provided that the following conditions are met:
34 *       Any redistribution and use of the source code, including any resulting derivative 
35 *   works, are licensed by TI for use only with TI Devices.
36 *       Any redistribution and use of any object code compiled from the source code
37 *   and any resulting derivative works, are licensed by TI for use only with TI Devices.
38
39 *  Neither the name of Texas Instruments Incorporated nor the names of its suppliers 
40 *  may be used to endorse or promote products derived from this software without 
41 *  specific prior written permission.
42
43 *  DISCLAIMER.
44
45 *  THIS SOFTWARE IS PROVIDED BY TI AND TI’S LICENSORS "AS IS" AND ANY EXPRESS OR IMPLIED 
46 *  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY 
47 *  AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL TI AND TI’S 
48 *  LICENSORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 
49 *  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 
50 *  GOODS OR SERVICES* LOSS OF USE, DATA, OR PROFITS* OR BUSINESS INTERRUPTION) HOWEVER 
51 *  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
52 *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 
53 *  EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
54 */ 
56 /**
57  * @file emac_fw_config_dual_mac.c
58  * @brief EMAC firmware configuration file which contain initializtion values for
59  *          static configuration parameters for ICSSG Firmware.
60  *
61  */
63 /* ========================================================================== */
64 /*                             Include Files                                  */
65 /* ========================================================================== */
67 #include <stdint.h>
68 #include <ti/csl/cslr_icss.h>
69 #include <ti/drv/emac/src/v5/emac_drv_v5.h>
70 #include <ti/drv/emac/firmware/icss_dualmac/config/emac_fw_config_dual_mac.h>
72 EMAC_ICSSG_DUALMAC_FW_CFG emac_dualmac_cfg = {
73     {
74         EMAC_ICSSG_DUAL_MAC_FW_HOST_QUEUE_SIZE,EMAC_ICSSG_DUAL_MAC_FW_HOST_QUEUE_SIZE,EMAC_ICSSG_DUAL_MAC_FW_HOST_QUEUE_SIZE,EMAC_ICSSG_DUAL_MAC_FW_HOST_QUEUE_SIZE,EMAC_ICSSG_DUAL_MAC_FW_HOST_QUEUE_SIZE,EMAC_ICSSG_DUAL_MAC_FW_HOST_QUEUE_SIZE,EMAC_ICSSG_DUAL_MAC_FW_HOST_QUEUE_SIZE,EMAC_ICSSG_DUAL_MAC_FW_HOST_QUEUE_SIZE
75     }
76 };
79 EMAC_PER_PORT_ICSSG_FW_CFG emacFwCfgMmap[EMAC_MAX_ICSS*2] = {
80     {
81         {0,0},
82         (struct EMAC_FW_PORT_CFG*)&emac_dualmac_cfg,
83     },
84     {
85         {0,0},
86         (struct EMAC_FW_PORT_CFG*)&emac_dualmac_cfg,
87     },
88     {
89         {0,0},
90         (struct EMAC_FW_PORT_CFG*)&emac_dualmac_cfg,
91     },    
92     {
93         {0,0},
94         (struct EMAC_FW_PORT_CFG*)&emac_dualmac_cfg,
95     },
96     {
97         {0,0},
98         (struct EMAC_FW_PORT_CFG*)&emac_dualmac_cfg,
99     },
100     {
101         {0,0},
102         (struct EMAC_FW_PORT_CFG*)&emac_dualmac_cfg,
103     }
104 };
107 /**
108  * \brief Gets the EMAC dual mac firmware configuration
109  *
110  *  @param[in]  port_num      port number
111  *  @param[in]  pFwCfg  Address of pointer to be set to firmware configuration structure
112  *
113  * \return 0 success: -1: error
114  *
115  */
116 int32_t emacGetDualMacFwConfig(uint32_t portNum, EMAC_PER_PORT_ICSSG_FW_CFG **pFwCfg)
118     int32_t ret = -1;
119     if ((pFwCfg != NULL) && (portNum < (EMAC_MAX_ICSS*2)))
120     {
121         *pFwCfg = &(emacFwCfgMmap[portNum]);
122         ret = 0;
123     }
124     return ret;
127 /**
128  * \brief Sets the EMAC dual mac firmware configuration
129  *
130  *  @param[in]  port_num      port number
131  *  @param[in]  pFwCfg  Pointer to  firmware configuration to be set
132  *
133  * \return 0 success: -1: error
134  *
135  */
136 int32_t emacSetDualMacFwConfig(uint32_t portNum, const EMAC_PER_PORT_ICSSG_FW_CFG *pFwCfg)
138     int32_t ret = -1;
139     if ((pFwCfg != NULL) && (portNum < (EMAC_MAX_ICSS*2)))
140     {
141          memcpy(&(emacFwCfgMmap[portNum]),pFwCfg, sizeof(EMAC_PER_PORT_ICSSG_FW_CFG));
142         ret = 0;
143     }
144     return ret;
147 /**
148  * \brief Gets the application provided EMAC dual mac firmware configuration
149  *
150  *  @param[in]  port_num      port number
151  *  @param[in]  pFwCfg  Address of pointer to be set to application provided firmware configuration structure
152  *
153  * \return 0 success: -1: error
154  *
155  */
156 int32_t emacGetDualMacFwAppInitCfg(uint32_t portNum, EMAC_FW_APP_CONFIG **pFwAppCfg)
158     int32_t ret = -1;
159     if ((pFwAppCfg != NULL) && (portNum < (EMAC_MAX_ICSS*2)))
160     {
161         *pFwAppCfg = &(emacFwCfgMmap[portNum].fwAppCfg);
162         ret = 0;
163     }
164     return ret;
167 /**
168  * \brief Sets the application provided EMAC dual mac firmware configuration
169  *
170  *  @param[in]  port_num      port number
171  *  @param[in]  pFwCfg  Pointer to  application provided firmware configuration to be set
172  *
173  * \return 0 success: -1: error
174  *
175  */
176 int32_t emacSetDualMacFwAppInitCfg(uint32_t portNum, EMAC_FW_APP_CONFIG *pFwAppCfg)
178     int32_t ret = -1;
180      if ((pFwAppCfg != NULL) && (portNum < (EMAC_MAX_ICSS*2)))
181      {
182           emacFwCfgMmap[portNum].fwAppCfg.txPortQueueHighAddr = pFwAppCfg->txPortQueueHighAddr;
183           emacFwCfgMmap[portNum].fwAppCfg.txPortQueueLowAddr = pFwAppCfg->txPortQueueLowAddr;
184           return 0;
185      }
186      return ret;