static void diag_hsic_write_complete(void *ctxt, char *buf, int len, int actual_size) { int index = (int)(uintptr_t)ctxt; struct diag_hsic_info *ch = NULL; if (index < 0 || index >= NUM_HSIC_DEV) { pr_err_ratelimited("diag: In %s, invalid HSIC index %d\n", __func__, index); return; } ch = &diag_hsic[index]; diag_remote_dev_write_done(ch->dev_id, buf, actual_size, ch->id); return; }
static void diag_smux_event(void *priv, int event_type, const void *metadata) { int len = 0; int id = (int)priv; unsigned char *rx_buf = NULL; struct diag_smux_info *ch = NULL; if (id < 0 || id >= NUM_SMUX_DEV) return; ch = &diag_smux[id]; if (metadata) { len = ((struct smux_meta_read *)metadata)->len; rx_buf = ((struct smux_meta_read *)metadata)->buffer; } switch (event_type) { case SMUX_CONNECTED: pr_info("diag: SMUX_CONNECTED received, ch: %d\n", ch->id); ch->opened = 1; ch->in_busy = 0; break; case SMUX_DISCONNECTED: ch->opened = 0; msm_smux_close(ch->lcid); pr_info("diag: SMUX_DISCONNECTED received, ch: %d\n", ch->id); break; case SMUX_WRITE_DONE: DIAGFWD_DBUG("diag: SMUX Write done, ch: %d\n", ch->id); diag_remote_dev_write_done(ch->dev_id, rx_buf, len, ch->id); break; case SMUX_WRITE_FAIL: pr_info("diag: SMUX Write Failed, ch: %d\n", ch->id); break; case SMUX_READ_FAIL: pr_info("diag: SMUX Read Failed, ch: %d\n", ch->id); break; case SMUX_READ_DONE: ch->read_buf = rx_buf; ch->read_len = len; ch->in_busy = 1; diag_remote_dev_read_done(ch->dev_id, ch->read_buf, ch->read_len); break; }; }