blob: 772a4e80b719411da22280a2c85c195ee5e2c075 [file] [log] [blame]
rjw6c1fd8f2022-11-30 14:33:01 +08001/*!
2 * @file nmu.h
3 * @author Roger Huang <chaomin.haung@mediatek.com>
4 * @version 1.0
5 * @section LICENSE
6 *
7 * This software is protected by Copyright and the information contained
8 * herein is confidential. The software may not be copied and the information
9 * contained herein may not be used or disclosed except with the written
10 * permission of MediaTek Inc. (C) 2005
11 *
12 * BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
13 * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
14 * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
15 * AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
16 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
17 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
18 * NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
19 * SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
20 * SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
21 * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
22 * NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
23 * SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
24 *
25 * BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
26 * LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
27 * AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
28 * OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
29 * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
30 *
31 * THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
32 * WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
33 * LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
34 * RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
35 * THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
36 *
37 * @section DESCRIPTION
38 * This file provides interface of nmu ( network management unit )
39 */
40
41#ifndef _NMU_H
42#define _NMU_H
43
44#define DECLARE_NMU_ETH_ENUM(_prefix) \
45 NMU_ ## _prefix ## _UP, \
46 NMU_ ## _prefix ## _HOST_MAC, \
47 NMU_ ## _prefix ## _GATEWAY_MAC, \
48 NMU_ ## _prefix ## _TX_PKT_CNT, \
49 NMU_ ## _prefix ## _RX_PKT_CNT, \
50 NMU_ ## _prefix ## _TX_BYTE_CNT, \
51 NMU_ ## _prefix ## _RX_BYTE_CNT, \
52 NMU_ ## _prefix ## _TX_ERROR_PKT_CNT, \
53 NMU_ ## _prefix ## _RX_ERROR_PKT_CNT, \
54 NMU_ ## _prefix ## _TX_DROP_PKT_CNT, \
55 NMU_ ## _prefix ## _RX_DROP_PKT_CNT, \
56 NMU_ ## _prefix ## _RX_FRAME_ALIGN_ERROR_CNT,
57
58#define DECLARE_NMU_IP_ENUM(_prefix) \
59 NMU_ ## _prefix ## _UP, \
60 NMU_ ## _prefix ## _ADDR, \
61 NMU_ ## _prefix ## _MASK, \
62 NMU_ ## _prefix ## _GATEWAY, \
63 NMU_ ## _prefix ## _MTU_SIZE, \
64 NMU_ ## _prefix ## _DNS_NUM, \
65 NMU_ ## _prefix ## _DNS1, \
66 NMU_ ## _prefix ## _DNS2, \
67 NMU_ ## _prefix ## _IP6_UP, \
68 NMU_ ## _prefix ## _IP6_PREFIX, \
69 NMU_ ## _prefix ## _IP6_PREFIX_LEN, \
70 NMU_ ## _prefix ## _IP6_IID, \
71 NMU_ ## _prefix ## _IP6_IID_LEN, \
72 NMU_ ## _prefix ## _IP6_MTU_SIZE, \
73 NMU_ ## _prefix ## _IP6_DNS_NUM, \
74 NMU_ ## _prefix ## _IP6_DNS1, \
75 NMU_ ## _prefix ## _IP6_DNS2,
76
77/*!
78 * @brief nmu_entry_e enumberate all information entry support in nmu
79 */
80typedef enum _nmu_entry_e {
81 NMU_MTU_SIZE, /* Maximal transmission unit in bytes. "Downlink = host Rx = device Tx"
82 Default value is 9000. Original value is 1500. */
83 NMU_MRU_SIZE, /* Maximal receive unit in bytes. "Uplink = host Tx = device Rx"
84 Default value is 1500. */
85 NMU_UL_SPEED, /* Uplink speed in unit of bps. */
86 NMU_DL_SPEED, /* Downlink speed in unit of bps. */
87
88 DECLARE_NMU_ETH_ENUM(ETH0)
89 DECLARE_NMU_ETH_ENUM(ETH1)
90 DECLARE_NMU_ETH_ENUM(ETH2)
91 DECLARE_NMU_ETH_ENUM(ETH3)
92 DECLARE_NMU_ETH_ENUM(ETH4)
93 DECLARE_NMU_ETH_ENUM(ETH5)
94 DECLARE_NMU_ETH_ENUM(ETH6)
95 DECLARE_NMU_ETH_ENUM(ETH7)
96 DECLARE_NMU_ETH_ENUM(ETH8)
97 DECLARE_NMU_ETH_ENUM(ETH9)
98 DECLARE_NMU_ETH_ENUM(ETH10)
99 DECLARE_NMU_ETH_ENUM(ETH11)
100 DECLARE_NMU_ETH_ENUM(ETH12)
101 DECLARE_NMU_ETH_ENUM(ETH13)
102 DECLARE_NMU_ETH_ENUM(ETH14)
103 DECLARE_NMU_ETH_ENUM(ETH15)
104
105 DECLARE_NMU_IP_ENUM(IP0)
106 DECLARE_NMU_IP_ENUM(IP1)
107 DECLARE_NMU_IP_ENUM(IP2)
108 DECLARE_NMU_IP_ENUM(IP3)
109 DECLARE_NMU_IP_ENUM(IP4)
110 DECLARE_NMU_IP_ENUM(IP5)
111 DECLARE_NMU_IP_ENUM(IP6)
112 DECLARE_NMU_IP_ENUM(IP7)
113 DECLARE_NMU_IP_ENUM(IP8)
114 DECLARE_NMU_IP_ENUM(IP9)
115 DECLARE_NMU_IP_ENUM(IP10)
116 DECLARE_NMU_IP_ENUM(IP11)
117 DECLARE_NMU_IP_ENUM(IP12)
118 DECLARE_NMU_IP_ENUM(IP13)
119 DECLARE_NMU_IP_ENUM(IP14)
120 DECLARE_NMU_IP_ENUM(IP15)
121
122 /* always be the last line */
123 NMU_MAX_ENTRY,
124} nmu_entry_e;
125
126typedef kal_uint8 nmu_eth_addr_t[6];
127typedef kal_uint32 nmu_in_addr_t;
128typedef kal_uint32 nmu_in6_addr_t[4];
129typedef kal_uint8 nmu_status_t;
130typedef kal_uint64 nmu_stat_t;
131
132/*!
133 * @brief nmu_nvram_table_t is a collection of network information stored
134 * in nvram
135 */
136typedef struct _nmu_nvram_table {
137 kal_uint32 compiler_resv;
138 nmu_eth_addr_t eth0_host_mac;
139
140} nmu_nvram_table_t;
141
142/*!
143 * @brief nmu init function
144 */
145void nmu_init(void);
146
147
148/*!
149 * @brief write entry value to nmu
150 * @param entry entry enum value
151 * @param len the length to write
152 * @param data pointer to the start address of entry data
153 * @return KAL_TRUE if success, KAL_FALSE if entry not exist, or Read Only
154 * attribute is set
155 */
156kal_bool nmu_set_property(nmu_entry_e entry, kal_uint32 len, void* data);
157
158
159/*!
160 * @brief read entry value from nmu
161 * @param entry entry enum value
162 * @param len the length to read
163 * @param data pointer to the start address of entry data
164 * @return KAL_TRUE if success, KAL_FALSE if entry not exist, or
165 * data buffer is not big enough
166 */
167kal_bool nmu_get_property(nmu_entry_e entry, kal_uint32 len, void* data);
168
169
170/*!
171 * @brief clean all entry value
172 */
173void nmu_clean_db(void);
174
175
176#endif // _NMU_H
177