1*5113495bSYour Name /* 2*5113495bSYour Name * Copyright (c) 2018-2019 The Linux Foundation. All rights reserved. 3*5113495bSYour Name * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. 4*5113495bSYour Name * 5*5113495bSYour Name * Permission to use, copy, modify, and/or distribute this software for 6*5113495bSYour Name * any purpose with or without fee is hereby granted, provided that the 7*5113495bSYour Name * above copyright notice and this permission notice appear in all 8*5113495bSYour Name * copies. 9*5113495bSYour Name * 10*5113495bSYour Name * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL 11*5113495bSYour Name * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED 12*5113495bSYour Name * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE 13*5113495bSYour Name * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 14*5113495bSYour Name * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR 15*5113495bSYour Name * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 16*5113495bSYour Name * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 17*5113495bSYour Name * PERFORMANCE OF THIS SOFTWARE. 18*5113495bSYour Name */ 19*5113495bSYour Name 20*5113495bSYour Name /** 21*5113495bSYour Name * DOC: APIs and macros for defining configuration. 22*5113495bSYour Name */ 23*5113495bSYour Name 24*5113495bSYour Name #ifndef __CFG_DEFINE_H 25*5113495bSYour Name #define __CFG_DEFINE_H 26*5113495bSYour Name 27*5113495bSYour Name enum cfg_fallback_behavior { 28*5113495bSYour Name CFG_VALUE_OR_CLAMP, 29*5113495bSYour Name CFG_VALUE_OR_DEFAULT, 30*5113495bSYour Name }; 31*5113495bSYour Name 32*5113495bSYour Name #define rm_parens(...) __VA_ARGS__ 33*5113495bSYour Name #define __CFG(id, is_ini, mtype, args...) \ 34*5113495bSYour Name __CFG_##is_ini##_##mtype(id, mtype, args) 35*5113495bSYour Name #define _CFG(id, args) __CFG(id, args) 36*5113495bSYour Name #define CFG(id) _CFG(__##id, rm_parens id) 37*5113495bSYour Name 38*5113495bSYour Name #define __CFG_INI_INT(args...) __CFG_INI(args) 39*5113495bSYour Name #define __CFG_INI_UINT(args...) __CFG_INI(args) 40*5113495bSYour Name #define __CFG_INI_BOOL(args...) __CFG_INI(args) 41*5113495bSYour Name #define __CFG_INI_STRING(args...) __CFG_INI(args) 42*5113495bSYour Name #define __CFG_INI_MAC(args...) __CFG_INI(args) 43*5113495bSYour Name #define __CFG_INI_IPV4(args...) __CFG_INI(args) 44*5113495bSYour Name #define __CFG_INI_IPV6(args...) __CFG_INI(args) 45*5113495bSYour Name #define __CFG_INI(args...) (args) 46*5113495bSYour Name 47*5113495bSYour Name #define __CFG_NON_INI_INT(args...) __CFG_NON_INI(args) 48*5113495bSYour Name #define __CFG_NON_INI_UINT(args...) __CFG_NON_INI(args) 49*5113495bSYour Name #define __CFG_NON_INI_BOOL(args...) __CFG_NON_INI(args) 50*5113495bSYour Name #define __CFG_NON_INI_STRING(args...) __CFG_NON_INI(args) 51*5113495bSYour Name #define __CFG_NON_INI_MAC(args...) __CFG_NON_INI(args) 52*5113495bSYour Name #define __CFG_NON_INI_IPV4(args...) __CFG_NON_INI(args) 53*5113495bSYour Name #define __CFG_NON_INI_IPV6(args...) __CFG_NON_INI(args) 54*5113495bSYour Name #define __CFG_NON_INI(args...) 55*5113495bSYour Name 56*5113495bSYour Name /* configuration available in ini */ 57*5113495bSYour Name #define CFG_INI_INT(name, min, max, def, fallback, desc) \ 58*5113495bSYour Name (INI, INT, int32_t, name, min, max, fallback, desc, def) 59*5113495bSYour Name #define CFG_INI_UINT(name, min, max, def, fallback, desc) \ 60*5113495bSYour Name (INI, UINT, uint32_t, name, min, max, fallback, desc, def) 61*5113495bSYour Name #define CFG_INI_BOOL(name, def, desc) \ 62*5113495bSYour Name (INI, BOOL, bool, name, false, true, -1, desc, def) 63*5113495bSYour Name #define CFG_INI_STRING(name, min_len, max_len, def, desc) \ 64*5113495bSYour Name (INI, STRING, char *, name, min_len, max_len, -1, desc, def) 65*5113495bSYour Name #define CFG_INI_MAC(name, def, desc) \ 66*5113495bSYour Name (INI, MAC, struct qdf_mac_addr, name, -1, -1, -1, desc, def) 67*5113495bSYour Name #define CFG_INI_IPV4(name, def, desc) \ 68*5113495bSYour Name (INI, IPV4, struct qdf_ipv4_addr, name, -1, -1, -1, desc, def) 69*5113495bSYour Name #define CFG_INI_IPV6(name, def, desc) \ 70*5113495bSYour Name (INI, IPV6, struct qdf_ipv6_addr, name, -1, -1, -1, desc, def) 71*5113495bSYour Name 72*5113495bSYour Name /* configuration *not* available in ini */ 73*5113495bSYour Name #define CFG_INT(name, min, max, def, fallback, desc) \ 74*5113495bSYour Name (NON_INI, INT, int32_t, name, min, max, fallback, desc, def) 75*5113495bSYour Name #define CFG_UINT(name, min, max, def, fallback, desc) \ 76*5113495bSYour Name (NON_INI, UINT, uint32_t, name, min, max, fallback, desc, def) 77*5113495bSYour Name #define CFG_BOOL(name, def, desc) \ 78*5113495bSYour Name (NON_INI, BOOL, bool, name, false, true, false, desc, def) 79*5113495bSYour Name #define CFG_STRING(name, min_len, max_len, def, desc) \ 80*5113495bSYour Name (NON_INI, STRING, char *, name, min_len, max_len, -1, desc, def) 81*5113495bSYour Name #define CFG_MAC(name, def, desc) \ 82*5113495bSYour Name (NON_INI, MAC, struct qdf_mac_addr, name, -1, -1, -1, desc, def) 83*5113495bSYour Name #define CFG_IPV4(name, def, desc) \ 84*5113495bSYour Name (NON_INI, IPV4, struct qdf_ipv4_addr, name, -1, -1, -1, desc, def) 85*5113495bSYour Name #define CFG_IPV6(name, def, desc) \ 86*5113495bSYour Name (NON_INI, IPV6, struct qdf_ipv6_addr, name, -1, -1, -1, desc, def) 87*5113495bSYour Name 88*5113495bSYour Name /* utility macros/functions */ 89*5113495bSYour Name #ifdef CONFIG_AP_PLATFORM 90*5113495bSYour Name #define PLATFORM_VALUE(non_ap_value, ap_value) ap_value 91*5113495bSYour Name #else 92*5113495bSYour Name #define PLATFORM_VALUE(non_ap_value, ap_value) non_ap_value 93*5113495bSYour Name #endif 94*5113495bSYour Name 95*5113495bSYour Name #ifdef WLAN_USE_CONFIG_PARAMS 96*5113495bSYour Name /* Section Parsing - section names to be parsed */ 97*5113495bSYour Name #define CFG_256M_SECTION "256M" 98*5113495bSYour Name #define CFG_512M_SECTION "512M" 99*5113495bSYour Name #define CFG_512M_E_SECTION "512M-E" 100*5113495bSYour Name #define CFG_512M_P_SECTION "512M-P" 101*5113495bSYour Name 102*5113495bSYour Name #define CFG_2G_SECTION "2G" 103*5113495bSYour Name #define CFG_5G_SECTION "5G" 104*5113495bSYour Name #define CFG_5G_LOW_SECTION "5GL" 105*5113495bSYour Name #define CFG_5G_HIGH_SECTION "5GH" 106*5113495bSYour Name #define CFG_6G_HIGH_SECTION "6GH" 107*5113495bSYour Name #define CFG_6G_LOW_SECTION "6GL" 108*5113495bSYour Name #define CFG_6G_SECTION "6G" 109*5113495bSYour Name 110*5113495bSYour Name #define CFG_256M_2G_SECTION "2G-256M" 111*5113495bSYour Name #define CFG_256M_5G_SECTION "5G-256M" 112*5113495bSYour Name #define CFG_256M_5G_LOW_SECTION "5GL-256M" 113*5113495bSYour Name #define CFG_256M_5G_HIGH_SECTION "5GH-256M" 114*5113495bSYour Name #define CFG_256M_6G_LOW_SECTION "6GL-256M" 115*5113495bSYour Name #define CFG_256M_6G_HIGH_SECTION "6GH-256M" 116*5113495bSYour Name #define CFG_256M_6G_SECTION "6G-256M" 117*5113495bSYour Name 118*5113495bSYour Name #define CFG_512ME_2G_SECTION "2G-512M-E" 119*5113495bSYour Name #define CFG_512ME_5G_SECTION "5G-512M-E" 120*5113495bSYour Name #define CFG_512ME_5G_LOW_SECTION "5GL-512M-E" 121*5113495bSYour Name #define CFG_512ME_5G_LOW_SECTION "5GL-512M-E" 122*5113495bSYour Name #define CFG_512ME_6G_HIGH_SECTION "6GH-512M-E" 123*5113495bSYour Name #define CFG_512ME_6G_HIGH_SECTION "6GH-512M-E" 124*5113495bSYour Name #define CFG_512ME_6G_SECTION "6G-512M-E" 125*5113495bSYour Name 126*5113495bSYour Name #define CFG_512MP_2G_SECTION "2G-512M-P" 127*5113495bSYour Name #define CFG_512MP_5G_LOW_SECTION "5GL-512M-P" 128*5113495bSYour Name #define CFG_512MP_5G_HIGH_SECTION "5GH-512M-P" 129*5113495bSYour Name #define CFG_512MP_5G_SECTION "5G-512M-P" 130*5113495bSYour Name #define CFG_512MP_6G_LOW_SECTION "6GL-512M-P" 131*5113495bSYour Name #define CFG_512MP_6G_HIGH_SECTION "6GH-512M-P" 132*5113495bSYour Name #define CFG_512MP_6G_SECTION "6G-512M-P" 133*5113495bSYour Name 134*5113495bSYour Name #define CFG_1G_2G_SECTION "1G-2G" 135*5113495bSYour Name #define CFG_1G_5G_SECTION "1G-5G" 136*5113495bSYour Name #define CFG_1G_5G_LOW_SECTION "1G-5GL" 137*5113495bSYour Name #define CFG_1G_5G_HIGH_SECTION "1G-5GH" 138*5113495bSYour Name #define CFG_1G_6G_LOW_SECTION "1G-6GL" 139*5113495bSYour Name #define CFG_1G_6G_HIGH_SECTION "1G-6GH" 140*5113495bSYour Name #define CFG_1G_6G_SECTION "1G-6G" 141*5113495bSYour Name 142*5113495bSYour Name #define CFG_SCAN_RADIO_SECTION "SCAN-RADIO" 143*5113495bSYour Name 144*5113495bSYour Name #define CFG_SBS_NSS_RING_SECTION "SBS-NSS-RING" 145*5113495bSYour Name #define CFG_DBS_NSS_RING_SECTION "DBS-NSS-RING" 146*5113495bSYour Name 147*5113495bSYour Name #define CFG_DP_TX_DESC_512P_SECTION "512M_REDUCED_DESC" 148*5113495bSYour Name #define CFG_DP_TX_DESC_1G_SECTION "1G-TX-DESC" 149*5113495bSYour Name #define CFG_DP_MON_512M_SECTION "DP_MON_512M_RING" 150*5113495bSYour Name #define CFG_NSS_3DEV_RING_SECTION "DP_NSS_3DEV_RING_SIZE" 151*5113495bSYour Name #define CFG_DP_4RADIO_REO_SECTION "DP_NSS_4RADIO_REO_MAP" 152*5113495bSYour Name 153*5113495bSYour Name #define CFG_512M_OR_4CHAIN_SECTION "512M_OR_DP_MON_4CHAIN" 154*5113495bSYour Name #define CFG_DP_MON_2CHAIN_SECTION "DP_MON_2CHAIN" 155*5113495bSYour Name 156*5113495bSYour Name #define CFG_SOC_SINGLE_PHY_2G_SECTION "SINGLE_PHY_2G" 157*5113495bSYour Name #define CFG_SOC_SINGLE_PHY_5G_SECTION "SINGLE_PHY_5G" 158*5113495bSYour Name #define CFG_SOC_SINGLE_PHY_6G_SECTION "SINGLE_PHY_6G" 159*5113495bSYour Name #define CFG_SOC_SPLIT_PHY_2G_5G_LOW_SECTION "SPLIT_PHY_2G_5G_LOW" 160*5113495bSYour Name #define CFG_SOC_SPLIT_PHY_6G_5G_HIGH_SECTION "SPLIT_PHY_6G_5G_HIGH" 161*5113495bSYour Name #endif /* WLAN_USE_CONFIG_PARAMS */ 162*5113495bSYour Name 163*5113495bSYour Name #endif /* __CFG_DEFINE_H */ 164*5113495bSYour Name 165