/**
 * \page ChangeLog
 *
 * \section v37_4_0_8_TO_v37_4_0_9 Version v37.4.0.8 to version v37.4.0.9 changes
 *
 * \subsection v37_4_0_8_TO_v37_4_0_9Added Added functions
 *
 * The following functions were added between versions v37.4.0.8 and v37.4.0.9
 * \li \ref qcsapi_wifi_get_ap_interface_name
 * \li \ref qcsapi_wifi_set_ap_interface_name
 * \li \ref qcsapi_wifi_verify_repeater_mode
 *
 * \subsection v37_4_0_8_TO_v37_4_0_9Proto Function prototype changes
 *
 * The following function prototypes were modified between versions v37.4.0.8 and v37.4.0.9
 *  - \ref qcsapi_get_uboot_info
 *    - Old prototype: int qcsapi_get_uboot_info(char *info, qcsapi_unsigned_int uboot_info);
 *    - New prototype: int qcsapi_get_uboot_info(string_32 uboot_version, struct early_flash_config *ef_config);
 */

