Loading drivers/char/diag/diagfwd_glink.c +14 −1 Original line number Original line Diff line number Diff line Loading @@ -487,6 +487,18 @@ static void diag_glink_remote_disconnect_work_fn(struct work_struct *work) atomic_set(&glink_info->tx_intent_ready, 0); atomic_set(&glink_info->tx_intent_ready, 0); } } static void diag_glink_late_init_work_fn(struct work_struct *work) { struct diag_glink_info *glink_info = container_of(work, struct diag_glink_info, late_init_work); if (!glink_info || !glink_info->hdl) return; DIAG_LOG(DIAG_DEBUG_PERIPHERALS, "p: %d t: %d\n", glink_info->peripheral, glink_info->type); diagfwd_channel_open(glink_info->fwd_ctxt); } static void diag_glink_transport_notify_state(void *handle, const void *priv, static void diag_glink_transport_notify_state(void *handle, const void *priv, unsigned event) unsigned event) { { Loading Loading @@ -617,7 +629,7 @@ static void glink_late_init(struct diag_glink_info *glink_info) glink_info->inited = 1; glink_info->inited = 1; if (atomic_read(&glink_info->opened)) if (atomic_read(&glink_info->opened)) diagfwd_channel_open(glink_info->fwd_ctxt); queue_work(glink_info->wq, &(glink_info->late_init_work)); DIAG_LOG(DIAG_DEBUG_PERIPHERALS, "%s exiting\n", DIAG_LOG(DIAG_DEBUG_PERIPHERALS, "%s exiting\n", glink_info->name); glink_info->name); Loading Loading @@ -665,6 +677,7 @@ static void __diag_glink_init(struct diag_glink_info *glink_info) INIT_WORK(&(glink_info->connect_work), diag_glink_connect_work_fn); INIT_WORK(&(glink_info->connect_work), diag_glink_connect_work_fn); INIT_WORK(&(glink_info->remote_disconnect_work), INIT_WORK(&(glink_info->remote_disconnect_work), diag_glink_remote_disconnect_work_fn); diag_glink_remote_disconnect_work_fn); INIT_WORK(&(glink_info->late_init_work), diag_glink_late_init_work_fn); link_info.glink_link_state_notif_cb = diag_glink_notify_cb; link_info.glink_link_state_notif_cb = diag_glink_notify_cb; link_info.transport = NULL; link_info.transport = NULL; link_info.edge = glink_info->edge; link_info.edge = glink_info->edge; Loading drivers/char/diag/diagfwd_glink.h +1 −0 Original line number Original line Diff line number Diff line Loading @@ -37,6 +37,7 @@ struct diag_glink_info { struct work_struct read_work; struct work_struct read_work; struct work_struct connect_work; struct work_struct connect_work; struct work_struct remote_disconnect_work; struct work_struct remote_disconnect_work; struct work_struct late_init_work; struct diagfwd_info *fwd_ctxt; struct diagfwd_info *fwd_ctxt; }; }; Loading Loading
drivers/char/diag/diagfwd_glink.c +14 −1 Original line number Original line Diff line number Diff line Loading @@ -487,6 +487,18 @@ static void diag_glink_remote_disconnect_work_fn(struct work_struct *work) atomic_set(&glink_info->tx_intent_ready, 0); atomic_set(&glink_info->tx_intent_ready, 0); } } static void diag_glink_late_init_work_fn(struct work_struct *work) { struct diag_glink_info *glink_info = container_of(work, struct diag_glink_info, late_init_work); if (!glink_info || !glink_info->hdl) return; DIAG_LOG(DIAG_DEBUG_PERIPHERALS, "p: %d t: %d\n", glink_info->peripheral, glink_info->type); diagfwd_channel_open(glink_info->fwd_ctxt); } static void diag_glink_transport_notify_state(void *handle, const void *priv, static void diag_glink_transport_notify_state(void *handle, const void *priv, unsigned event) unsigned event) { { Loading Loading @@ -617,7 +629,7 @@ static void glink_late_init(struct diag_glink_info *glink_info) glink_info->inited = 1; glink_info->inited = 1; if (atomic_read(&glink_info->opened)) if (atomic_read(&glink_info->opened)) diagfwd_channel_open(glink_info->fwd_ctxt); queue_work(glink_info->wq, &(glink_info->late_init_work)); DIAG_LOG(DIAG_DEBUG_PERIPHERALS, "%s exiting\n", DIAG_LOG(DIAG_DEBUG_PERIPHERALS, "%s exiting\n", glink_info->name); glink_info->name); Loading Loading @@ -665,6 +677,7 @@ static void __diag_glink_init(struct diag_glink_info *glink_info) INIT_WORK(&(glink_info->connect_work), diag_glink_connect_work_fn); INIT_WORK(&(glink_info->connect_work), diag_glink_connect_work_fn); INIT_WORK(&(glink_info->remote_disconnect_work), INIT_WORK(&(glink_info->remote_disconnect_work), diag_glink_remote_disconnect_work_fn); diag_glink_remote_disconnect_work_fn); INIT_WORK(&(glink_info->late_init_work), diag_glink_late_init_work_fn); link_info.glink_link_state_notif_cb = diag_glink_notify_cb; link_info.glink_link_state_notif_cb = diag_glink_notify_cb; link_info.transport = NULL; link_info.transport = NULL; link_info.edge = glink_info->edge; link_info.edge = glink_info->edge; Loading
drivers/char/diag/diagfwd_glink.h +1 −0 Original line number Original line Diff line number Diff line Loading @@ -37,6 +37,7 @@ struct diag_glink_info { struct work_struct read_work; struct work_struct read_work; struct work_struct connect_work; struct work_struct connect_work; struct work_struct remote_disconnect_work; struct work_struct remote_disconnect_work; struct work_struct late_init_work; struct diagfwd_info *fwd_ctxt; struct diagfwd_info *fwd_ctxt; }; }; Loading