Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 02631fcc authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "diag: Enable masks for user pd memory device session"

parents 019955f7 7687d76d
Loading
Loading
Loading
Loading
+59 −16
Original line number Original line Diff line number Diff line
@@ -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;
@@ -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;
@@ -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;
@@ -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;
@@ -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;
@@ -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;
@@ -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;
+0 −4
Original line number Original line Diff line number Diff line
@@ -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)
+5 −0
Original line number Original line Diff line number Diff line
@@ -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
@@ -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);


+24 −0
Original line number Original line Diff line number Diff line
@@ -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;