Loading drivers/char/diag/diag_masks.c +59 −16 Original line number Original line Diff line number Diff line Loading @@ -28,7 +28,8 @@ #define DIAG_SET_FEATURE_MASK(x) (feature_bytes[(x)/8] |= (1 << (x & 0x7))) #define DIAG_SET_FEATURE_MASK(x) (feature_bytes[(x)/8] |= (1 << (x & 0x7))) #define diag_check_update(x) \ #define diag_check_update(x) \ (!info || (info && (info->peripheral_mask & MD_PERIPHERAL_MASK(x)))) \ (!info || (info && (info->peripheral_mask & MD_PERIPHERAL_MASK(x))) \ || (info && (info->peripheral_mask & MD_PERIPHERAL_PD_MASK(x)))) \ struct diag_mask_info msg_mask; struct diag_mask_info msg_mask; struct diag_mask_info msg_bt_mask; struct diag_mask_info msg_bt_mask; Loading Loading @@ -89,7 +90,7 @@ static void diag_send_log_mask_update(uint8_t peripheral, int equip_id) int err = 0; int err = 0; int send_once = 0; int send_once = 0; int header_len = sizeof(struct diag_ctrl_log_mask); int header_len = sizeof(struct diag_ctrl_log_mask); uint8_t *buf = NULL; uint8_t *buf = NULL, upd = 0; uint8_t *temp = NULL; uint8_t *temp = NULL; uint32_t mask_size = 0; uint32_t mask_size = 0; struct diag_ctrl_log_mask ctrl_pkt; struct diag_ctrl_log_mask ctrl_pkt; Loading @@ -106,11 +107,25 @@ static void diag_send_log_mask_update(uint8_t peripheral, int equip_id) return; return; } } if (driver->md_session_mask != 0 && if (driver->md_session_mask != 0) { driver->md_session_mask & MD_PERIPHERAL_MASK(peripheral)) if (driver->md_session_mask & MD_PERIPHERAL_MASK(peripheral)) { mask_info = driver->md_session_map[peripheral]->log_mask; if (driver->md_session_map[peripheral]) else mask_info = driver->md_session_map[peripheral]->log_mask; } else if (driver->md_session_mask & MD_PERIPHERAL_PD_MASK(peripheral)) { upd = diag_mask_to_pd_value(driver->md_session_mask); if (upd && driver->md_session_map[upd]) mask_info = driver->md_session_map[upd]->log_mask; } else { DIAG_LOG(DIAG_DEBUG_MASKS, "asking for mask update with unknown session mask\n"); return; } } else { mask_info = &log_mask; mask_info = &log_mask; } if (!mask_info || !mask_info->ptr || !mask_info->update_buf) if (!mask_info || !mask_info->ptr || !mask_info->update_buf) return; return; Loading Loading @@ -195,7 +210,7 @@ static void diag_send_log_mask_update(uint8_t peripheral, int equip_id) static void diag_send_event_mask_update(uint8_t peripheral) static void diag_send_event_mask_update(uint8_t peripheral) { { uint8_t *buf = NULL; uint8_t *buf = NULL, upd = 0; uint8_t *temp = NULL; uint8_t *temp = NULL; struct diag_ctrl_event_mask header; struct diag_ctrl_event_mask header; struct diag_mask_info *mask_info = NULL; struct diag_mask_info *mask_info = NULL; Loading @@ -220,11 +235,25 @@ static void diag_send_event_mask_update(uint8_t peripheral) return; return; } } if (driver->md_session_mask != 0 && if (driver->md_session_mask != 0) { (driver->md_session_mask & MD_PERIPHERAL_MASK(peripheral))) if (driver->md_session_mask & MD_PERIPHERAL_MASK(peripheral)) { mask_info = driver->md_session_map[peripheral]->event_mask; if (driver->md_session_map[peripheral]) else mask_info = driver->md_session_map[peripheral]->event_mask; } else if (driver->md_session_mask & MD_PERIPHERAL_PD_MASK(peripheral)) { upd = diag_mask_to_pd_value(driver->md_session_mask); if (upd && driver->md_session_map[upd]) mask_info = driver->md_session_map[upd]->event_mask; } else { DIAG_LOG(DIAG_DEBUG_MASKS, "asking for mask update with unknown session mask\n"); return; } } else { mask_info = &event_mask; mask_info = &event_mask; } if (!mask_info || !mask_info->ptr || !mask_info->update_buf) if (!mask_info || !mask_info->ptr || !mask_info->update_buf) return; return; Loading Loading @@ -284,7 +313,7 @@ static void diag_send_msg_mask_update(uint8_t peripheral, int first, int last) int err = 0; int err = 0; int header_len = sizeof(struct diag_ctrl_msg_mask); int header_len = sizeof(struct diag_ctrl_msg_mask); int temp_len = 0; int temp_len = 0; uint8_t *buf = NULL; uint8_t *buf = NULL, upd = 0; uint8_t *temp = NULL; uint8_t *temp = NULL; uint32_t mask_size = 0; uint32_t mask_size = 0; struct diag_mask_info *mask_info = NULL; struct diag_mask_info *mask_info = NULL; Loading @@ -301,11 +330,25 @@ static void diag_send_msg_mask_update(uint8_t peripheral, int first, int last) return; return; } } if (driver->md_session_mask != 0 && if (driver->md_session_mask != 0) { (driver->md_session_mask & MD_PERIPHERAL_MASK(peripheral))) if (driver->md_session_mask & MD_PERIPHERAL_MASK(peripheral)) { mask_info = driver->md_session_map[peripheral]->msg_mask; if (driver->md_session_map[peripheral]) else mask_info = driver->md_session_map[peripheral]->msg_mask; } else if (driver->md_session_mask & MD_PERIPHERAL_PD_MASK(peripheral)) { upd = diag_mask_to_pd_value(driver->md_session_mask); if (upd && driver->md_session_map[upd]) mask_info = driver->md_session_map[upd]->msg_mask; } else { DIAG_LOG(DIAG_DEBUG_MASKS, "asking for mask update with unknown session mask\n"); return; } } else { mask_info = &msg_mask; mask_info = &msg_mask; } if (!mask_info || !mask_info->ptr || !mask_info->update_buf) if (!mask_info || !mask_info->ptr || !mask_info->update_buf) return; return; Loading drivers/char/diag/diag_memorydevice.c +0 −4 Original line number Original line Diff line number Diff line Loading @@ -360,10 +360,6 @@ drop_data: err = copy_to_user(buf + sizeof(int), err = copy_to_user(buf + sizeof(int), (void *)&num_data, (void *)&num_data, sizeof(int)); sizeof(int)); } else { DIAG_LOG(DIAG_DEBUG_PERIPHERALS, "diag: md_session_map[%d] with pid = %d Exited..\n", peripheral, driver->md_session_map[peripheral]->pid); } } diag_ws_on_copy_complete(DIAG_WS_MUX); diag_ws_on_copy_complete(DIAG_WS_MUX); if (drain_again) if (drain_again) Loading drivers/char/diag/diagchar.h +5 −0 Original line number Original line Diff line number Diff line Loading @@ -235,6 +235,10 @@ #define MD_PERIPHERAL_MASK(x) (1 << x) #define MD_PERIPHERAL_MASK(x) (1 << x) #define MD_PERIPHERAL_PD_MASK(x) \ ((x == PERIPHERAL_MODEM) ? (1 << UPD_WLAN) : \ ((x == PERIPHERAL_LPASS) ? (1 << UPD_AUDIO | 1 << UPD_SENSORS) : 0))\ /* /* * Number of stm processors includes all the peripherals and * Number of stm processors includes all the peripherals and * apps.Added 1 below to indicate apps * apps.Added 1 below to indicate apps Loading Loading @@ -675,6 +679,7 @@ void diag_cmd_remove_reg_by_proc(int proc); int diag_cmd_chk_polling(struct diag_cmd_reg_entry_t *entry); int diag_cmd_chk_polling(struct diag_cmd_reg_entry_t *entry); int diag_mask_param(void); int diag_mask_param(void); void diag_clear_masks(struct diag_md_session_t *info); void diag_clear_masks(struct diag_md_session_t *info); uint8_t diag_mask_to_pd_value(uint32_t peripheral_mask); void diag_record_stats(int type, int flag); void diag_record_stats(int type, int flag); Loading drivers/char/diag/diagchar_core.c +24 −0 Original line number Original line Diff line number Diff line Loading @@ -403,6 +403,30 @@ static uint32_t diag_translate_kernel_to_user_mask(uint32_t peripheral_mask) ret |= DIAG_CON_UPD_SENSORS; ret |= DIAG_CON_UPD_SENSORS; return ret; return ret; } } uint8_t diag_mask_to_pd_value(uint32_t peripheral_mask) { uint8_t upd = 0; uint32_t pd_mask = 0; pd_mask = diag_translate_kernel_to_user_mask(peripheral_mask); switch (pd_mask) { case DIAG_CON_UPD_WLAN: upd = UPD_WLAN; break; case DIAG_CON_UPD_AUDIO: upd = UPD_AUDIO; break; case DIAG_CON_UPD_SENSORS: upd = UPD_SENSORS; break; default: DIAG_LOG(DIAG_DEBUG_MASKS, "asking for mask update with no pd mask set\n"); } return upd; } int diag_mask_param(void) int diag_mask_param(void) { { return diag_mask_clear_param; return diag_mask_clear_param; Loading Loading
drivers/char/diag/diag_masks.c +59 −16 Original line number Original line Diff line number Diff line Loading @@ -28,7 +28,8 @@ #define DIAG_SET_FEATURE_MASK(x) (feature_bytes[(x)/8] |= (1 << (x & 0x7))) #define DIAG_SET_FEATURE_MASK(x) (feature_bytes[(x)/8] |= (1 << (x & 0x7))) #define diag_check_update(x) \ #define diag_check_update(x) \ (!info || (info && (info->peripheral_mask & MD_PERIPHERAL_MASK(x)))) \ (!info || (info && (info->peripheral_mask & MD_PERIPHERAL_MASK(x))) \ || (info && (info->peripheral_mask & MD_PERIPHERAL_PD_MASK(x)))) \ struct diag_mask_info msg_mask; struct diag_mask_info msg_mask; struct diag_mask_info msg_bt_mask; struct diag_mask_info msg_bt_mask; Loading Loading @@ -89,7 +90,7 @@ static void diag_send_log_mask_update(uint8_t peripheral, int equip_id) int err = 0; int err = 0; int send_once = 0; int send_once = 0; int header_len = sizeof(struct diag_ctrl_log_mask); int header_len = sizeof(struct diag_ctrl_log_mask); uint8_t *buf = NULL; uint8_t *buf = NULL, upd = 0; uint8_t *temp = NULL; uint8_t *temp = NULL; uint32_t mask_size = 0; uint32_t mask_size = 0; struct diag_ctrl_log_mask ctrl_pkt; struct diag_ctrl_log_mask ctrl_pkt; Loading @@ -106,11 +107,25 @@ static void diag_send_log_mask_update(uint8_t peripheral, int equip_id) return; return; } } if (driver->md_session_mask != 0 && if (driver->md_session_mask != 0) { driver->md_session_mask & MD_PERIPHERAL_MASK(peripheral)) if (driver->md_session_mask & MD_PERIPHERAL_MASK(peripheral)) { mask_info = driver->md_session_map[peripheral]->log_mask; if (driver->md_session_map[peripheral]) else mask_info = driver->md_session_map[peripheral]->log_mask; } else if (driver->md_session_mask & MD_PERIPHERAL_PD_MASK(peripheral)) { upd = diag_mask_to_pd_value(driver->md_session_mask); if (upd && driver->md_session_map[upd]) mask_info = driver->md_session_map[upd]->log_mask; } else { DIAG_LOG(DIAG_DEBUG_MASKS, "asking for mask update with unknown session mask\n"); return; } } else { mask_info = &log_mask; mask_info = &log_mask; } if (!mask_info || !mask_info->ptr || !mask_info->update_buf) if (!mask_info || !mask_info->ptr || !mask_info->update_buf) return; return; Loading Loading @@ -195,7 +210,7 @@ static void diag_send_log_mask_update(uint8_t peripheral, int equip_id) static void diag_send_event_mask_update(uint8_t peripheral) static void diag_send_event_mask_update(uint8_t peripheral) { { uint8_t *buf = NULL; uint8_t *buf = NULL, upd = 0; uint8_t *temp = NULL; uint8_t *temp = NULL; struct diag_ctrl_event_mask header; struct diag_ctrl_event_mask header; struct diag_mask_info *mask_info = NULL; struct diag_mask_info *mask_info = NULL; Loading @@ -220,11 +235,25 @@ static void diag_send_event_mask_update(uint8_t peripheral) return; return; } } if (driver->md_session_mask != 0 && if (driver->md_session_mask != 0) { (driver->md_session_mask & MD_PERIPHERAL_MASK(peripheral))) if (driver->md_session_mask & MD_PERIPHERAL_MASK(peripheral)) { mask_info = driver->md_session_map[peripheral]->event_mask; if (driver->md_session_map[peripheral]) else mask_info = driver->md_session_map[peripheral]->event_mask; } else if (driver->md_session_mask & MD_PERIPHERAL_PD_MASK(peripheral)) { upd = diag_mask_to_pd_value(driver->md_session_mask); if (upd && driver->md_session_map[upd]) mask_info = driver->md_session_map[upd]->event_mask; } else { DIAG_LOG(DIAG_DEBUG_MASKS, "asking for mask update with unknown session mask\n"); return; } } else { mask_info = &event_mask; mask_info = &event_mask; } if (!mask_info || !mask_info->ptr || !mask_info->update_buf) if (!mask_info || !mask_info->ptr || !mask_info->update_buf) return; return; Loading Loading @@ -284,7 +313,7 @@ static void diag_send_msg_mask_update(uint8_t peripheral, int first, int last) int err = 0; int err = 0; int header_len = sizeof(struct diag_ctrl_msg_mask); int header_len = sizeof(struct diag_ctrl_msg_mask); int temp_len = 0; int temp_len = 0; uint8_t *buf = NULL; uint8_t *buf = NULL, upd = 0; uint8_t *temp = NULL; uint8_t *temp = NULL; uint32_t mask_size = 0; uint32_t mask_size = 0; struct diag_mask_info *mask_info = NULL; struct diag_mask_info *mask_info = NULL; Loading @@ -301,11 +330,25 @@ static void diag_send_msg_mask_update(uint8_t peripheral, int first, int last) return; return; } } if (driver->md_session_mask != 0 && if (driver->md_session_mask != 0) { (driver->md_session_mask & MD_PERIPHERAL_MASK(peripheral))) if (driver->md_session_mask & MD_PERIPHERAL_MASK(peripheral)) { mask_info = driver->md_session_map[peripheral]->msg_mask; if (driver->md_session_map[peripheral]) else mask_info = driver->md_session_map[peripheral]->msg_mask; } else if (driver->md_session_mask & MD_PERIPHERAL_PD_MASK(peripheral)) { upd = diag_mask_to_pd_value(driver->md_session_mask); if (upd && driver->md_session_map[upd]) mask_info = driver->md_session_map[upd]->msg_mask; } else { DIAG_LOG(DIAG_DEBUG_MASKS, "asking for mask update with unknown session mask\n"); return; } } else { mask_info = &msg_mask; mask_info = &msg_mask; } if (!mask_info || !mask_info->ptr || !mask_info->update_buf) if (!mask_info || !mask_info->ptr || !mask_info->update_buf) return; return; Loading
drivers/char/diag/diag_memorydevice.c +0 −4 Original line number Original line Diff line number Diff line Loading @@ -360,10 +360,6 @@ drop_data: err = copy_to_user(buf + sizeof(int), err = copy_to_user(buf + sizeof(int), (void *)&num_data, (void *)&num_data, sizeof(int)); sizeof(int)); } else { DIAG_LOG(DIAG_DEBUG_PERIPHERALS, "diag: md_session_map[%d] with pid = %d Exited..\n", peripheral, driver->md_session_map[peripheral]->pid); } } diag_ws_on_copy_complete(DIAG_WS_MUX); diag_ws_on_copy_complete(DIAG_WS_MUX); if (drain_again) if (drain_again) Loading
drivers/char/diag/diagchar.h +5 −0 Original line number Original line Diff line number Diff line Loading @@ -235,6 +235,10 @@ #define MD_PERIPHERAL_MASK(x) (1 << x) #define MD_PERIPHERAL_MASK(x) (1 << x) #define MD_PERIPHERAL_PD_MASK(x) \ ((x == PERIPHERAL_MODEM) ? (1 << UPD_WLAN) : \ ((x == PERIPHERAL_LPASS) ? (1 << UPD_AUDIO | 1 << UPD_SENSORS) : 0))\ /* /* * Number of stm processors includes all the peripherals and * Number of stm processors includes all the peripherals and * apps.Added 1 below to indicate apps * apps.Added 1 below to indicate apps Loading Loading @@ -675,6 +679,7 @@ void diag_cmd_remove_reg_by_proc(int proc); int diag_cmd_chk_polling(struct diag_cmd_reg_entry_t *entry); int diag_cmd_chk_polling(struct diag_cmd_reg_entry_t *entry); int diag_mask_param(void); int diag_mask_param(void); void diag_clear_masks(struct diag_md_session_t *info); void diag_clear_masks(struct diag_md_session_t *info); uint8_t diag_mask_to_pd_value(uint32_t peripheral_mask); void diag_record_stats(int type, int flag); void diag_record_stats(int type, int flag); Loading
drivers/char/diag/diagchar_core.c +24 −0 Original line number Original line Diff line number Diff line Loading @@ -403,6 +403,30 @@ static uint32_t diag_translate_kernel_to_user_mask(uint32_t peripheral_mask) ret |= DIAG_CON_UPD_SENSORS; ret |= DIAG_CON_UPD_SENSORS; return ret; return ret; } } uint8_t diag_mask_to_pd_value(uint32_t peripheral_mask) { uint8_t upd = 0; uint32_t pd_mask = 0; pd_mask = diag_translate_kernel_to_user_mask(peripheral_mask); switch (pd_mask) { case DIAG_CON_UPD_WLAN: upd = UPD_WLAN; break; case DIAG_CON_UPD_AUDIO: upd = UPD_AUDIO; break; case DIAG_CON_UPD_SENSORS: upd = UPD_SENSORS; break; default: DIAG_LOG(DIAG_DEBUG_MASKS, "asking for mask update with no pd mask set\n"); } return upd; } int diag_mask_param(void) int diag_mask_param(void) { { return diag_mask_clear_param; return diag_mask_clear_param; Loading