/*******************************************************************************
Copyright (C) Marvell International Ltd. and its affiliates

This software file (the "File") is owned and distributed by Marvell
International Ltd. and/or its affiliates ("Marvell") under the following
alternative licensing terms.  Once you have made an election to distribute the
File under one of the following license alternatives, please (i) delete this
introductory statement regarding license alternatives, (ii) delete the two
license alternatives that you have not elected to use and (iii) preserve the
Marvell copyright notice above.

********************************************************************************
Marvell Commercial License Option

If you received this File from Marvell and you have entered into a commercial
license agreement (a "Commercial License") with Marvell, the File is licensed
to you under the terms of the applicable Commercial License.

********************************************************************************
Marvell GPL License Option

If you received this File from Marvell, you may opt to use, redistribute and/or
modify this File in accordance with the terms and conditions of the General
Public License Version 2, June 1991 (the "GPL License"), a copy of which is
available along with the File in the license.txt file or by writing to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 or
on the worldwide web at http://www.gnu.org/licenses/gpl.txt.

THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE IMPLIED
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY
DISCLAIMED.  The GPL License provides additional details about this warranty
disclaimer.
********************************************************************************
Marvell BSD License Option

If you received this File from Marvell, you may opt to use, redistribute and/or
modify this File under the following licensing terms.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:

    *   Redistributions of source code must retain the above copyright notice,
	    this list of conditions and the following disclaimer.

    *   Redistributions in binary form must reproduce the above copyright
	notice, this list of conditions and the following disclaimer in the
	documentation and/or other materials provided with the distribution.

    *   Neither the name of Marvell nor the names of its contributors may be
	used to endorse or promote products derived from this software without
	specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

******************************************************************************/
#ifndef _TPM_XML_PARAMS_H_
#define _TPM_XML_PARAMS_H_

#ifdef __cplusplus
extern "C" {
#endif

#define US_XML_PON_SN_LEN          (8)
#define US_XML_PON_PASSWD_LEN      (10)

#define US_RC_OK           0
#define US_RC_FAIL         1
#define US_RC_NOT_FOUND    2

typedef enum {
	NONE_SW_APP = 0,
	EPON_SW_APP,
	GPON_SW_APP,
	GBE_SW_APP,
	P2P_SW_APP,

	MAX_SW_APP
} us_sw_app_t;

typedef enum {
	US_DISABLED = 0,
	US_ENABLED
} us_enabled_t;

typedef enum {
	US_OFF = 0,
	US_ON
} us_state_t;

typedef enum {
	ONU_PON_DISCONNECT = 0,
	ONU_PON_CONNECT
} PON_connect_type_t;

typedef enum {
	PON_XML_DEF_PAR_SERIAL_NUM         = 0,
	PON_XML_DEF_PAR_PASSWORD           = 1,
	PON_XML_DEF_PAR_DIS_SERIAL_NUM     = 2,
	PON_XML_DEF_PARAM_CLEAR_GEM        = 3,
	PON_XML_DEF_PARAM_CLEAR_TCONT      = 4,
	PON_XML_DEF_PARAM_SERIAL_NUM_SRC   = 5,
	PON_XML_DEF_PARAM_XVR_POLARITY     = 6,
	PON_XML_DEF_PARAM_DG_POLARITY      = 7,
	PON_XML_DEF_PARAM_RESTORE_GEM      = 8,
	PON_XML_DEF_PARAM_MAX

} PON_XML_DEF_PARAMS;

#define US_RC_OK           0
#define US_RC_FAIL         1
#define US_RC_NOT_FOUND    2

#define US_XML_CFG_FILE            "/etc/xml_params/tpm_xml_cfg_file.xml"
#define US_XML_CFG_FILE_OMCI       "/etc/xml_params/omci_xml_cfg_file.xml"
#define US_XML_CFG_FILE_PON        "/etc/xml_params/pon_xml_cfg_file.xml"
#define US_XML_CFG_FILE_GLOBAL     "/etc/xml_params/pon_type_xml_cfg_file.xml"

#define US_DEBUG_PRINT

#define US_XML_PON_E               "PON"
#define US_XML_PON_TYPE_E          "WAN_type"
#define US_XML_PON_TYPE_FORCE_E    "WAN_type_force"
#define US_XML_PON_SN_E            "PON_serial_num"
#define US_XML_PON_PASSWD_E        "PON_passwd"
#define US_XML_PON_DIS_SN_E        "PON_dis_sn"
#define US_XML_PON_GEM_RST_E       "PON_gem_reset"
#define US_XML_PON_TCONT_RST_E     "PON_tcont_reset"
#define US_XML_PON_SN_SRC_E        "PON_serial_src"
#define US_XML_PON_DG_POL_E        "PON_DG_polarity"
#define US_XML_PON_XVR_POL_E       "PON_XVR_polarity"
#define US_XML_PON_GEM_RESTOR_E    "PON_gem_restore"

#define US_XML_EPON_E               "EPON"
#define US_XML_EPON_CONNECT_E       "EPON_connect_tpm"
#define US_XML_EPON_DG_POL_E        "EPON_DG_polarity"
#define US_XML_EPON_XVR_POL_E       "EPON_XVR_polarity"
#define US_XML_EPON_OAM_RXQ_E       "EPON_OAM_RX_queue"

#define US_XML_OMCI_E              "OMCI"
#define US_XML_OMCI_ETY_E          "OMCI_ETY"

#define US_XML_DS_MAC_BASED_TRUNKING_E        "ds_mac_based_trunking"
#define US_XML_IGMP_SNOOP_E        "igmp_snoop"
#define US_XML_IGMP_SNOOP_ALL_E    "snoop_all"
#define US_XML_ENABLED_E           "enabled"
#define US_XML_IGMP_CPU_Q_E        "igmp_cpu_rx_queue"
#define US_XML_IGMP_PKT_FRWD_MODE_UNI_0           "igmp_frwrd_mode_uni0"
#define US_XML_IGMP_PKT_FRWD_MODE_UNI_1           "igmp_frwrd_mode_uni1"
#define US_XML_IGMP_PKT_FRWD_MODE_UNI_2           "igmp_frwrd_mode_uni2"
#define US_XML_IGMP_PKT_FRWD_MODE_UNI_3           "igmp_frwrd_mode_uni3"
#define US_XML_IGMP_PKT_FRWD_MODE_UNI_4           "igmp_frwrd_mode_uni4"
#define US_XML_IGMP_PKT_FRWD_MODE_UNI_5           "igmp_frwrd_mode_uni5"
#define US_XML_IGMP_PKT_FRWD_MODE_UNI_6           "igmp_frwrd_mode_uni6"
#define US_XML_IGMP_PKT_FRWD_MODE_UNI_7           "igmp_frwrd_mode_uni7"
#define US_XML_IGMP_PKT_FRWD_MODE_UNI_VIRT        "igmp_frwrd_mode_uni_virt"
#define US_XML_IGMP_PKT_FRWD_MODE_WAN             "igmp_frwrd_mode_wan"

#define US_XML_PORT_INIT_E         "port_init"
#define US_XML_DEBUG_PORT_E        "debug_port"
#define US_XML_INT_PORT_E          "int_port"

#define US_XML_ETH_PORT_PARAMS_E   "Ethernet_parameters"
#define US_XML_ETH_PORT_E          "Ethernet"
#define US_XML_ETH_CHIP_CONN_ATTR  "chip_connect"
#define US_XML_ETH_INT_CONN_ATTR   "int_connect"
#define US_XML_ETH_SW_PORT_ATTR    "switch_ports"
#define US_XML_GMAC_PORTS_E        "gmac_ports"
#define US_XML_ETH_ADMIN_ATTR      "admin_state"
#define US_XML_ETH_SPEED_ATTR      "speed"
#define US_XML_ETH_DUPLEX_ATTR     "duplex"
#define US_XML_ETH_PORT_SRC_ATTR   "src_port"
#define US_XML_ETH_PORT_CHIPCON_ATTR "chip_conn"
#define US_XML_ETH_GMAC_CONN_ATTR  "conn"
#define US_XML_ETH_PORT_INTCON_ATTR "intr_conn"
#define US_XML_ETH_CMPLX_CONFIG_E  "eth_complex_config"
#define US_XML_WAN_E		    "WAN"
#define US_XML_ACTIVE_WAN_E        "active_wan"
#define US_XML_VIRTUAL_UNI_E       "virtual_uni"

#define US_XML_ETH_PROFILE_E       "profile"

#define US_XML_GMAC_CONFIG_E       "gmac_config"
#define US_XML_GMAC_CONN_E         "pon_config"
#define US_XML_TCONT_LLID_E        "num_tcont_llid"
#define US_XML_GMAC_MH_ENA_E       "gmac_mh_en"
#define US_XML_GMAC_0_MH_ENA_E     "gmac0_mh_en"
#define US_XML_GMAC_1_MH_ENA_E     "gmac1_mh_en"

#define US_XML_GMAC_BM_BUF_E       "gmac_bm_buffers"
#define US_XML_LARGE_POOL_BUF_ATTR "large_pkt_pool_bufs"
#define US_XML_SHORT_POOL_BUF_ATTR "small_pkt_pool_bufs"

#define US_XML_GMAC_RXQUEUES_E     "gmac_rx_queues"

#define US_XML_TX_MOD_PARAMS_E     "tx_module_parameters"
#define US_XML_TX_MOD_E            "tx_mod"
#define US_XML_QUEUE_MAP_E         "queue_map"
#define US_XML_QUEUE_E             "queue"
#define US_XML_QUEUE_SHED_ATTR     "sched_method"
#define US_XML_QUEUE_OWNER_ATTR    "owner"
#define US_XML_QUEUE_OW_Q_NUM_ATTR "owner_q_num"
#define US_XML_QUEUE_WEIGHT_ATTR   "weight"

#define US_XML_FC_PARAMS_E         "flow_control"
#define US_XML_Q_SAMPLE_FREQ_E     "queue_sample_freq"
#define US_XML_THRESH_HIGH_E       "thresh_high"
#define US_XML_THRESH_LOW_E        "thresh_low"
#define US_XML_TGT_PORT_E          "tgt_port"
#define US_XML_TX_PORT_E           "tx_port"
#define US_XML_TX_Q_E              "tx_queue"


#define US_XML_TPM_E               "TPM"
#define US_XML_DS_MH_SET_E         "ds_mh_set"
#define US_XML_VALID_EN_E          "validation_enable"
#define US_XML_CFG_PNC_PARSER      "pnc_config"
#define US_XML_CFG_CPU_LOOPBACK    "cpu_wan_egr_loopback"
#define US_XML_TRACE_DEBUG_info    "trace_debug_info"
#define US_XML_IPV6_5T_ENA_E       "ipv6_5t_enable"
#define US_XML_CTC_CNM_ENA_E       "ctc_cnm_enable"
#define US_XML_WIFI_ENABLED        "gmac1_virt_uni"
#define US_XML_IPV4_MC_SUPPORT_E   "ipv4_mc_support"
#define US_XML_IPV6_MC_SUPPORT_E   "ipv6_mc_support"
#define US_XML_CTC_CNM_IPv6_PARSE_WIN_E       "ctc_cnm_ipv6_parsing_window"
#define US_XML_PNC_MAC_LEARN_ENA_E "pnc_mac_learn_enable"
#define US_XML_SWITCH_INIT_E       "switch_init"

/*#define US_XML_WIFI_PORT           "Vitual_UNI_GMAC1_port"*/

#if 0
#define US_XML_DEF_V1_TPID         "vlan1_tpid"
#define US_XML_DEF_V2_TPID         "vlan2_tpid"
#endif
#define US_XML_TPM_VLAN_FILTER_TPID_E     "vlan_filter_tpid"
#define US_XML_TPM_FILTER_TPID_E          "filter_tpid"


#define US_XML_TPM_PNC_E                  "PnC"
#define US_XML_TPM_PNC_RANGE_PARAMS_E     "range_parameters"
#define US_XML_TPM_PNC_RANGE_E            "range"
#define US_XML_TPM_CNTR_GRP_ATTR          "cntr_grp"
#define US_XML_TPM_LU_MASK_ATTR           "lu_mask"
#define US_XML_TPM_MIN_RES_LVL_ATTR       "min_reset_level"
#define US_XML_TPM_MOD_VLAN_TPID_E        "vlan_mod_tpid"
#define US_XML_TPM_MOD_TPID_E             "mod_tpid"
#define US_XML_TPM_MOD_E                  "modification"
#define US_XML_TPM_MOD_UDP_CKS_USE_INIT_E "udp_checksum_use_init"
#define US_XML_TPM_MOD_UDP_CKS_CALC_E     "udp_checksum_calc"
#define US_XML_SPLIT_MOD_SETTING_E        "split_mod"
#define US_XML_SPLIT_MOD_ENABLE_E         "enable"
#define US_XML_SPLIT_MOD_P_BITS_E         "p_bits"
#define US_XML_SPLIT_MOD_VLAN_NUM_E       "vlan_num"
#define US_XML_SPLIT_MOD_MODE_E           "split_mod_mode"


#define US_XML_TPM_MOD_CHAIN_PARAM_E     "chain_parameters"
#define US_XML_TPM_MOD_CHAIN_E           "chain"
#define US_XML_TPM_CHAIN_ID_ATTR         "id"
#define US_XML_TPM_CHAIN_TYPE_ATTR       "type"
#define US_XML_TPM_CHAIN_NUM_ATTR        "num"

#define US_XML_ID_ATTR             "id"
#define US_XML_GMAC_E              "gmac"
#define US_XML_PORT_E              "port"
#define US_XML_SIZE_ATTR           "size"
#define US_XML_NUM_ATTR            "num"
#define US_XML_TYPE_ATTR           "type"
#define US_XML_VALID_ATTR          "valid"


#define US_XML_MTU_SETTING_E          "mtu_setting"

#define US_XML_MTU_SETTING_ENABLE_E   "mtu_setting_enabled"
#define US_XML_IPV4_MTU_US_E          "ipv4_mtu_us"
#define US_XML_IPV4_PPPOE_MTU_US_E    "ipv4_pppoe_mtu_us"
#define US_XML_IPV6_MTU_US_E          "ipv6_mtu_us"
#define US_XML_IPV6_PPPOE_MTU_US_E    "ipv6_pppoe_mtu_us"
#define US_XML_IPV4_MTU_DS_E          "ipv4_mtu_ds"
#define US_XML_IPV6_MTU_DS_E          "ipv6_mtu_ds"

#define US_XML_TRAFFIC_SETTING_E      "traffic_setting"
#define US_XML_PPPOE_ENABLE_E         "pppoe_add_enable"
#define US_XML_NUM_VLAN_TAGS_E        "num_vlan_tags"
#define US_XML_CPU_RX_QUEUE_E         "cpu_trap_rx_queue"
#define US_XML_TTL_ZERO_ACTION_E      "ttl_illegal_action"
#define US_XML_TCP_FLAG_CHECK_E       "tcp_flag_check"
#define US_XML_ETY_DSA_ENABLE_E       "ety_dsa_enable"


#define US_XML_MC_SETTING_E                  "multicast"
#define US_XML_MC_FILTER_MODE_E              "mc_filter_mode"
#define US_XML_MC_PER_UNI_VLAN_XLAT_E        "mc_per_uni_vlan_xlat"
#define US_XML_MC_PPPOE_ENABLE_E             "mc_pppoe_enable"
#define US_XML_MC_HWF_Q_E                    "mc_hwf_queue"
#define US_XML_MC_CPU_Q_E                    "mc_cpu_queue"
#define US_XML_CATCH_ALL_PKT_ACTION_E        "catch_all_pkt_action"

/*******************************************************************************
*                             Configuration functions
*******************************************************************************/
int get_pon_type_param(tpm_init_pon_type_t *pon_type);
int get_omci_etype_param(uint32_t *ety);
int get_debug_port_params(uint32_t *valid, uint32_t *num);
int get_igmp_snoop_params_enable(uint32_t *enable);
int get_ds_mac_based_trunking_enable(uint32_t *enable);
int get_igmp_snoop_params_cpu_queue(uint32_t *que);
int get_igmp_snoop_params_port_frwd_mode(uint32_t *mode, tpm_src_port_type_t port);
int get_gmac_conn_params(uint32_t *num_tcont_llid);
int get_gmac_mh_en_params(uint32_t *gmac0_mh_en, uint32_t *gmac1_mh_en);
int get_eth_cmplx_profile_params(tpm_eth_complex_profile_t *eth_cmplx_profile);
int get_gmac_port_conf_params(tpm_init_gmac_conn_conf_t *gmac_port_conf_bufs, int max_gmac_port_num);
int get_eth_port_conf_params(tpm_init_eth_port_conf_t *eth_port_bufs, int max_eth_port_num);
int get_active_wan_params(uint32_t *active_wan);

int get_gmac_pool_bufs_params(tpm_init_gmac_bufs_t *gmac_bufs, int max_gmacs_num);
int get_trace_debug_info_param(uint32_t *trace_debug_info);
int get_validation_enabled_config_params(tpm_init_tpm_validation_t *validEn);
int get_vitual_uni_enable_params(uint32_t *enable);
#if 0
int get_default_vlan_tpid_params(uint16_t *v1_tpid, uint16_t *v2_tpid);
#endif
int get_default_vlan_tpid_params(uint32_t *opt_num, tpm_init_tpid_comb_t *opt);
int get_fc_def_params(tpm_init_fc_params_t *port_fc_conf);
int get_gmac_rxq_params(tpm_init_gmac_rx_t *gmac_rx, int max_gmacs_num, int max_rx_queues_num);
int get_gmac_tx_params(tpm_init_gmac_tx_t *gmac_tx, int max_tx_ports_num, int max_tx_queues_num);
int get_pnc_range_params(tpm_init_pnc_range_t *pnc_range, int max_pnc_ranges_num);
int get_ds_mh_config_params(tpm_init_mh_src_t *dsMhConf);
int get_vlan_mod_vlan_tpid_params(uint32_t *mod_vlan_tpid, int mod_vlan_tpid_reg_num);
int get_modification_params(tpm_init_mod_params_t *config);
int get_chain_config_params(tpm_init_mod_chain_t *mod_chain);
int get_cfg_pnc_parse_param(tpm_init_cfg_pnc_parse_t *cfgPncParse);
int get_cpu_loopback_param(tpm_init_cpu_loopback_t *cpuLoopback);

void free_xml_head_ptr(void);

/* jinghua add for MTU setting */

int get_ipv4_mtu_us(uint32_t *mtu);
int get_ipv4_pppoe_mtu_us(uint32_t *mtu);
int get_ipv6_mtu_us(uint32_t *mtu);
int get_ipv6_pppoe_mtu_us(uint32_t *mtu);
int get_ipv4_mtu_ds(uint32_t *mtu);
int get_ipv6_mtu_ds(uint32_t *mtu);
int get_pppoe_add_enable(tpm_init_pppoe_add_enable_t *enable);
int get_num_vlan_tags(uint32_t *num_vlan_tags);
int get_mtu_enable(tpm_init_mtu_setting_enable_t *enable);
int get_cpu_rx_queue(uint32_t *cpu_rx_queue);
int get_ttl_illegal_action(uint32_t *ttl_illegal_action);
int get_tcp_flag_check(uint32_t *tcp_flag_check);

int get_mc_filter_mode(tpm_mc_filter_mode_t *mc_filter_mode);
int get_mc_per_uni_vlan_xlat(uint32_t *mc_per_uni_vlan_xlat);
int get_mc_pppoe_enable(uint32_t *mc_pppoe_enable);
int get_mc_queue(uint32_t *hwf_queue, uint32_t *cpu_queue);
int get_catch_all_pkt_action(uint32_t *catch_all_pkt_action);
int get_ety_dsa_enable(uint32_t *ety_dsa_enable);
int get_ipv6_5t_enable(uint32_t *ipv6_5t_enable);
int get_ipv4_mc_support(uint32_t *ipv4_mc_support);
int get_ipv6_mc_support(uint32_t *ipv6_mc_support);
int get_split_mod_enable(uint32_t *split_mod_enable);
int get_split_mot_p_bits(uint8_t *p_bits, uint32_t *p_bit_num);
int get_split_mod_vlan_num(uint32_t *split_vlan_num);
int get_split_mod_mode(tpm_init_split_mod_mode_t *split_mod_mode);
int get_ctc_cm_enable(uint32_t *ctc_cm_enable);
int get_ctc_cm_ipv6_parse_window(uint32_t *ctc_cm_ipv6_parse_window);
int get_pnc_mac_learn_enable(uint32_t *pnc_mac_learn_enable);
int get_switch_init_params(uint32_t *switch_init);

#ifdef __cplusplus
}
#endif
#endif				/* _PARAMS_H_ */
