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

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

Merge "diag: Close the SMD transport type if sockets are supported"

parents c2f6d103 7d8eae98
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -619,6 +619,7 @@ void diagfwd_close_transport(uint8_t transport, uint8_t peripheral)
	struct diagfwd_info *dest_info = NULL;
	int (*init_fn)(uint8_t) = NULL;
	void (*invalidate_fn)(void *, struct diagfwd_info *) = NULL;
	int (*check_channel_state)(void *) = NULL;
	uint8_t transport_open = 0;

	if (peripheral >= NUM_PERIPHERALS)
@@ -629,20 +630,23 @@ void diagfwd_close_transport(uint8_t transport, uint8_t peripheral)
		transport_open = TRANSPORT_SOCKET;
		init_fn = diag_socket_init_peripheral;
		invalidate_fn = diag_socket_invalidate;
		check_channel_state = diag_socket_check_state;
		break;
	case TRANSPORT_SOCKET:
		transport_open = TRANSPORT_SMD;
		init_fn = diag_smd_init_peripheral;
		invalidate_fn = diag_smd_invalidate;
		check_channel_state = diag_smd_check_state;
		break;
	default:
		return;

	}

	fwd_info = &early_init_info[transport_open][peripheral];
	fwd_info = &early_init_info[transport][peripheral];
	if (fwd_info->p_ops && fwd_info->p_ops->close)
		fwd_info->p_ops->close(fwd_info->ctxt);
	fwd_info = &early_init_info[transport_open][peripheral];
	dest_info = &peripheral_info[TYPE_CNTL][peripheral];
	dest_info->inited = 1;
	dest_info->ctxt = fwd_info->ctxt;
@@ -654,7 +658,9 @@ void diagfwd_close_transport(uint8_t transport, uint8_t peripheral)
	dest_info->inited = fwd_info->inited;
	dest_info->buf_1 = fwd_info->buf_1;
	dest_info->buf_2 = fwd_info->buf_2;
	dest_info->transport = fwd_info->transport;
	invalidate_fn(dest_info->ctxt, dest_info);
	if (!check_channel_state(dest_info->ctxt))
		diagfwd_late_open(dest_info);
	diagfwd_cntl_open(dest_info);
	init_fn(peripheral);
+9 −0
Original line number Diff line number Diff line
@@ -417,7 +417,16 @@ static void diag_smd_queue_read(void *ctxt)
		queue_work(smd_info->wq, &(smd_info->read_work));
	}
}
int diag_smd_check_state(void *ctxt)
{
	struct diag_smd_info *info = NULL;

	if (!ctxt)
		return 0;

	info = (struct diag_smd_info *)ctxt;
	return (int)(atomic_read(&info->diag_state));
}
void diag_smd_invalidate(void *ctxt, struct diagfwd_info *fwd_ctxt)
{
	struct diag_smd_info *smd_info = NULL;
+1 −0
Original line number Diff line number Diff line
@@ -45,5 +45,6 @@ void diag_smd_exit(void);
int diag_smd_init(void);
void diag_smd_early_exit(void);
void diag_smd_invalidate(void *ctxt, struct diagfwd_info *fwd_ctxt);
int diag_smd_check_state(void *ctxt);

#endif
+11 −0
Original line number Diff line number Diff line
@@ -655,6 +655,17 @@ void diag_socket_invalidate(void *ctxt, struct diagfwd_info *fwd_ctxt)
	info->fwd_ctxt = fwd_ctxt;
}

int diag_socket_check_state(void *ctxt)
{
	struct diag_socket_info *info = NULL;

	if (!ctxt)
		return 0;

	info = (struct diag_socket_info *)ctxt;
	return (int)(atomic_read(&info->diag_state));
}

static void __diag_socket_init(struct diag_socket_info *info)
{
	uint16_t ins_base = 0;
+1 −0
Original line number Diff line number Diff line
@@ -92,4 +92,5 @@ int diag_socket_init_peripheral(uint8_t peripheral);
void diag_socket_exit(void);
void diag_socket_early_exit(void);
void diag_socket_invalidate(void *ctxt, struct diagfwd_info *fwd_ctxt);
int diag_socket_check_state(void *ctxt);
#endif