Loading drivers/char/diag/diagfwd_peripheral.c +8 −2 Original line number Diff line number Diff line Loading @@ -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) Loading @@ -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; Loading @@ -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); Loading drivers/char/diag/diagfwd_smd.c +9 −0 Original line number Diff line number Diff line Loading @@ -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; Loading drivers/char/diag/diagfwd_smd.h +1 −0 Original line number Diff line number Diff line Loading @@ -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 drivers/char/diag/diagfwd_socket.c +11 −0 Original line number Diff line number Diff line Loading @@ -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; Loading drivers/char/diag/diagfwd_socket.h +1 −0 Original line number Diff line number Diff line Loading @@ -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 Loading
drivers/char/diag/diagfwd_peripheral.c +8 −2 Original line number Diff line number Diff line Loading @@ -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) Loading @@ -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; Loading @@ -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); Loading
drivers/char/diag/diagfwd_smd.c +9 −0 Original line number Diff line number Diff line Loading @@ -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; Loading
drivers/char/diag/diagfwd_smd.h +1 −0 Original line number Diff line number Diff line Loading @@ -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
drivers/char/diag/diagfwd_socket.c +11 −0 Original line number Diff line number Diff line Loading @@ -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; Loading
drivers/char/diag/diagfwd_socket.h +1 −0 Original line number Diff line number Diff line Loading @@ -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