Loading drivers/net/wireless/wcnss/wcnss_wlan.c +68 −0 Original line number Diff line number Diff line Loading @@ -158,6 +158,8 @@ static DEFINE_SPINLOCK(reg_spinlock); #define WCNSS_VERSION_LEN 30 #define WCNSS_MAX_BUILD_VER_LEN 256 #define MAC_ADDRESS_STR "%02x:%02x:%02x:%02x:%02x:%02x" /* message types */ #define WCNSS_CTRL_MSG_START 0x01000000 #define WCNSS_VERSION_REQ (WCNSS_CTRL_MSG_START + 0) Loading Loading @@ -352,6 +354,7 @@ static struct { int device_opened; int iris_xo_mode_set; int fw_vbatt_state; char wlan_nv_macAddr[WLAN_MAC_ADDR_SIZE]; struct mutex dev_lock; wait_queue_head_t read_wait; struct qpnp_adc_tm_btm_param vbat_monitor_params; Loading @@ -359,6 +362,50 @@ static struct { struct mutex vbat_monitor_mutex; } *penv = NULL; static ssize_t wcnss_wlan_macaddr_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { char macAddr[WLAN_MAC_ADDR_SIZE]; if (!penv) return -ENODEV; pr_debug("%s: Receive MAC Addr From user space: %s\n", __func__, buf); if (WLAN_MAC_ADDR_SIZE != sscanf(buf, MAC_ADDRESS_STR, (int *)&macAddr[0], (int *)&macAddr[1], (int *)&macAddr[2], (int *)&macAddr[3], (int *)&macAddr[4], (int *)&macAddr[5])) { pr_err("%s: Failed to Copy MAC\n", __func__); return -EINVAL; } memcpy(penv->wlan_nv_macAddr, macAddr, sizeof(penv->wlan_nv_macAddr)); pr_info("%s: Write MAC Addr:" MAC_ADDRESS_STR "\n", __func__, penv->wlan_nv_macAddr[0], penv->wlan_nv_macAddr[1], penv->wlan_nv_macAddr[2], penv->wlan_nv_macAddr[3], penv->wlan_nv_macAddr[4], penv->wlan_nv_macAddr[5]); return count; } static ssize_t wcnss_wlan_macaddr_show(struct device *dev, struct device_attribute *attr, char *buf) { if (!penv) return -ENODEV; return scnprintf(buf, PAGE_SIZE, MAC_ADDRESS_STR, penv->wlan_nv_macAddr[0], penv->wlan_nv_macAddr[1], penv->wlan_nv_macAddr[2], penv->wlan_nv_macAddr[3], penv->wlan_nv_macAddr[4], penv->wlan_nv_macAddr[5]); } static DEVICE_ATTR(wcnss_mac_addr, S_IRUSR | S_IWUSR, wcnss_wlan_macaddr_show, wcnss_wlan_macaddr_store); static ssize_t wcnss_serial_number_show(struct device *dev, struct device_attribute *attr, char *buf) { Loading Loading @@ -694,8 +741,14 @@ static int wcnss_create_sysfs(struct device *dev) if (ret) goto remove_thermal; ret = device_create_file(dev, &dev_attr_wcnss_mac_addr); if (ret) goto remove_version; return 0; remove_version: device_remove_file(dev, &dev_attr_wcnss_version); remove_thermal: device_remove_file(dev, &dev_attr_thermal_mitigation); remove_serial: Loading @@ -710,6 +763,7 @@ static void wcnss_remove_sysfs(struct device *dev) device_remove_file(dev, &dev_attr_serial_number); device_remove_file(dev, &dev_attr_thermal_mitigation); device_remove_file(dev, &dev_attr_wcnss_version); device_remove_file(dev, &dev_attr_wcnss_mac_addr); } } static void wcnss_smd_notify_event(void *data, unsigned int event) Loading Loading @@ -981,6 +1035,20 @@ unsigned int wcnss_get_serial_number(void) } EXPORT_SYMBOL(wcnss_get_serial_number); int wcnss_get_wlan_mac_address(char mac_addr[WLAN_MAC_ADDR_SIZE]) { if (!penv) return -ENODEV; memcpy(mac_addr, penv->wlan_nv_macAddr, WLAN_MAC_ADDR_SIZE); pr_debug("%s: Get MAC Addr:" MAC_ADDRESS_STR "\n", __func__, penv->wlan_nv_macAddr[0], penv->wlan_nv_macAddr[1], penv->wlan_nv_macAddr[2], penv->wlan_nv_macAddr[3], penv->wlan_nv_macAddr[4], penv->wlan_nv_macAddr[5]); return 0; } EXPORT_SYMBOL(wcnss_get_wlan_mac_address); static int enable_wcnss_suspend_notify; static int enable_wcnss_suspend_notify_set(const char *val, Loading include/linux/wcnss_wlan.h +2 −0 Original line number Diff line number Diff line Loading @@ -41,6 +41,7 @@ enum { #define HAVE_WCNSS_RESET_INTR 1 #define HAVE_WCNSS_CAL_DOWNLOAD 1 #define HAVE_WCNSS_RX_BUFF_COUNT 1 #define WLAN_MAC_ADDR_SIZE (6) struct device *wcnss_wlan_get_device(void); struct resource *wcnss_wlan_get_memory_map(struct device *dev); Loading @@ -64,6 +65,7 @@ int wcnss_wlan_power(struct device *dev, int wcnss_req_power_on_lock(char *driver_name); int wcnss_free_power_on_lock(char *driver_name); unsigned int wcnss_get_serial_number(void); int wcnss_get_wlan_mac_address(char mac_addr[WLAN_MAC_ADDR_SIZE]); void wcnss_allow_suspend(void); void wcnss_prevent_suspend(void); int wcnss_hardware_type(void); Loading Loading
drivers/net/wireless/wcnss/wcnss_wlan.c +68 −0 Original line number Diff line number Diff line Loading @@ -158,6 +158,8 @@ static DEFINE_SPINLOCK(reg_spinlock); #define WCNSS_VERSION_LEN 30 #define WCNSS_MAX_BUILD_VER_LEN 256 #define MAC_ADDRESS_STR "%02x:%02x:%02x:%02x:%02x:%02x" /* message types */ #define WCNSS_CTRL_MSG_START 0x01000000 #define WCNSS_VERSION_REQ (WCNSS_CTRL_MSG_START + 0) Loading Loading @@ -352,6 +354,7 @@ static struct { int device_opened; int iris_xo_mode_set; int fw_vbatt_state; char wlan_nv_macAddr[WLAN_MAC_ADDR_SIZE]; struct mutex dev_lock; wait_queue_head_t read_wait; struct qpnp_adc_tm_btm_param vbat_monitor_params; Loading @@ -359,6 +362,50 @@ static struct { struct mutex vbat_monitor_mutex; } *penv = NULL; static ssize_t wcnss_wlan_macaddr_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { char macAddr[WLAN_MAC_ADDR_SIZE]; if (!penv) return -ENODEV; pr_debug("%s: Receive MAC Addr From user space: %s\n", __func__, buf); if (WLAN_MAC_ADDR_SIZE != sscanf(buf, MAC_ADDRESS_STR, (int *)&macAddr[0], (int *)&macAddr[1], (int *)&macAddr[2], (int *)&macAddr[3], (int *)&macAddr[4], (int *)&macAddr[5])) { pr_err("%s: Failed to Copy MAC\n", __func__); return -EINVAL; } memcpy(penv->wlan_nv_macAddr, macAddr, sizeof(penv->wlan_nv_macAddr)); pr_info("%s: Write MAC Addr:" MAC_ADDRESS_STR "\n", __func__, penv->wlan_nv_macAddr[0], penv->wlan_nv_macAddr[1], penv->wlan_nv_macAddr[2], penv->wlan_nv_macAddr[3], penv->wlan_nv_macAddr[4], penv->wlan_nv_macAddr[5]); return count; } static ssize_t wcnss_wlan_macaddr_show(struct device *dev, struct device_attribute *attr, char *buf) { if (!penv) return -ENODEV; return scnprintf(buf, PAGE_SIZE, MAC_ADDRESS_STR, penv->wlan_nv_macAddr[0], penv->wlan_nv_macAddr[1], penv->wlan_nv_macAddr[2], penv->wlan_nv_macAddr[3], penv->wlan_nv_macAddr[4], penv->wlan_nv_macAddr[5]); } static DEVICE_ATTR(wcnss_mac_addr, S_IRUSR | S_IWUSR, wcnss_wlan_macaddr_show, wcnss_wlan_macaddr_store); static ssize_t wcnss_serial_number_show(struct device *dev, struct device_attribute *attr, char *buf) { Loading Loading @@ -694,8 +741,14 @@ static int wcnss_create_sysfs(struct device *dev) if (ret) goto remove_thermal; ret = device_create_file(dev, &dev_attr_wcnss_mac_addr); if (ret) goto remove_version; return 0; remove_version: device_remove_file(dev, &dev_attr_wcnss_version); remove_thermal: device_remove_file(dev, &dev_attr_thermal_mitigation); remove_serial: Loading @@ -710,6 +763,7 @@ static void wcnss_remove_sysfs(struct device *dev) device_remove_file(dev, &dev_attr_serial_number); device_remove_file(dev, &dev_attr_thermal_mitigation); device_remove_file(dev, &dev_attr_wcnss_version); device_remove_file(dev, &dev_attr_wcnss_mac_addr); } } static void wcnss_smd_notify_event(void *data, unsigned int event) Loading Loading @@ -981,6 +1035,20 @@ unsigned int wcnss_get_serial_number(void) } EXPORT_SYMBOL(wcnss_get_serial_number); int wcnss_get_wlan_mac_address(char mac_addr[WLAN_MAC_ADDR_SIZE]) { if (!penv) return -ENODEV; memcpy(mac_addr, penv->wlan_nv_macAddr, WLAN_MAC_ADDR_SIZE); pr_debug("%s: Get MAC Addr:" MAC_ADDRESS_STR "\n", __func__, penv->wlan_nv_macAddr[0], penv->wlan_nv_macAddr[1], penv->wlan_nv_macAddr[2], penv->wlan_nv_macAddr[3], penv->wlan_nv_macAddr[4], penv->wlan_nv_macAddr[5]); return 0; } EXPORT_SYMBOL(wcnss_get_wlan_mac_address); static int enable_wcnss_suspend_notify; static int enable_wcnss_suspend_notify_set(const char *val, Loading
include/linux/wcnss_wlan.h +2 −0 Original line number Diff line number Diff line Loading @@ -41,6 +41,7 @@ enum { #define HAVE_WCNSS_RESET_INTR 1 #define HAVE_WCNSS_CAL_DOWNLOAD 1 #define HAVE_WCNSS_RX_BUFF_COUNT 1 #define WLAN_MAC_ADDR_SIZE (6) struct device *wcnss_wlan_get_device(void); struct resource *wcnss_wlan_get_memory_map(struct device *dev); Loading @@ -64,6 +65,7 @@ int wcnss_wlan_power(struct device *dev, int wcnss_req_power_on_lock(char *driver_name); int wcnss_free_power_on_lock(char *driver_name); unsigned int wcnss_get_serial_number(void); int wcnss_get_wlan_mac_address(char mac_addr[WLAN_MAC_ADDR_SIZE]); void wcnss_allow_suspend(void); void wcnss_prevent_suspend(void); int wcnss_hardware_type(void); Loading