Loading drivers/platform/msm/mhi_dev/mhi.c +12 −5 Original line number Diff line number Diff line Loading @@ -1021,10 +1021,9 @@ static void mhi_dev_process_cmd_ring(struct mhi_dev *mhi, if (rc) pr_err("Error sending command completion event\n"); mhi_update_state_info(ch_id, MHI_STATE_CONNECTED); /* Trigger callback to clients */ mhi_dev_trigger_cb(); mhi_update_state_info(ch_id, MHI_STATE_CONNECTED); if (ch_id == MHI_CLIENT_MBIM_OUT) kobject_uevent_env(&mhi_ctx->dev->kobj, KOBJ_CHANGE, connected); Loading Loading @@ -2455,8 +2454,10 @@ int mhi_register_state_cb(void (*mhi_state_cb) * If channel is open during registration, no callback is issued. * Instead return -EEXIST to notify the client. Clients request * is added to the list to notify future state change notification. * Channel struct may not be allocated yet if this function is called * early during boot - add an explicit check for non-null "ch". */ if (mhi_ctx->ch[channel].state == MHI_DEV_CH_STARTED) { if (mhi_ctx->ch && (mhi_ctx->ch[channel].state == MHI_DEV_CH_STARTED)) { mutex_unlock(&mhi_ctx->mhi_lock); return -EEXIST; } Loading Loading @@ -2835,8 +2836,6 @@ static int mhi_dev_resume_mmio_mhi_init(struct mhi_dev *mhi_ctx) INIT_LIST_HEAD(&mhi_ctx->event_ring_list); INIT_LIST_HEAD(&mhi_ctx->process_ring_list); INIT_LIST_HEAD(&mhi_ctx->client_cb_list); mutex_init(&mhi_ctx->mhi_lock); mutex_init(&mhi_ctx->mhi_event_lock); mutex_init(&mhi_ctx->mhi_write_test); Loading Loading @@ -2986,6 +2985,14 @@ static int mhi_dev_probe(struct platform_device *pdev) dev_err(&pdev->dev, "Failed to create IPC logging context\n"); } /* * The below list and mutex should be initialized * before calling mhi_uci_init to avoid crash in * mhi_register_state_cb when accessing these. */ INIT_LIST_HEAD(&mhi_ctx->client_cb_list); mutex_init(&mhi_ctx->mhi_lock); mhi_uci_init(); mhi_update_state_info(MHI_DEV_UEVENT_CTRL, MHI_STATE_CONFIGURED); Loading Loading
drivers/platform/msm/mhi_dev/mhi.c +12 −5 Original line number Diff line number Diff line Loading @@ -1021,10 +1021,9 @@ static void mhi_dev_process_cmd_ring(struct mhi_dev *mhi, if (rc) pr_err("Error sending command completion event\n"); mhi_update_state_info(ch_id, MHI_STATE_CONNECTED); /* Trigger callback to clients */ mhi_dev_trigger_cb(); mhi_update_state_info(ch_id, MHI_STATE_CONNECTED); if (ch_id == MHI_CLIENT_MBIM_OUT) kobject_uevent_env(&mhi_ctx->dev->kobj, KOBJ_CHANGE, connected); Loading Loading @@ -2455,8 +2454,10 @@ int mhi_register_state_cb(void (*mhi_state_cb) * If channel is open during registration, no callback is issued. * Instead return -EEXIST to notify the client. Clients request * is added to the list to notify future state change notification. * Channel struct may not be allocated yet if this function is called * early during boot - add an explicit check for non-null "ch". */ if (mhi_ctx->ch[channel].state == MHI_DEV_CH_STARTED) { if (mhi_ctx->ch && (mhi_ctx->ch[channel].state == MHI_DEV_CH_STARTED)) { mutex_unlock(&mhi_ctx->mhi_lock); return -EEXIST; } Loading Loading @@ -2835,8 +2836,6 @@ static int mhi_dev_resume_mmio_mhi_init(struct mhi_dev *mhi_ctx) INIT_LIST_HEAD(&mhi_ctx->event_ring_list); INIT_LIST_HEAD(&mhi_ctx->process_ring_list); INIT_LIST_HEAD(&mhi_ctx->client_cb_list); mutex_init(&mhi_ctx->mhi_lock); mutex_init(&mhi_ctx->mhi_event_lock); mutex_init(&mhi_ctx->mhi_write_test); Loading Loading @@ -2986,6 +2985,14 @@ static int mhi_dev_probe(struct platform_device *pdev) dev_err(&pdev->dev, "Failed to create IPC logging context\n"); } /* * The below list and mutex should be initialized * before calling mhi_uci_init to avoid crash in * mhi_register_state_cb when accessing these. */ INIT_LIST_HEAD(&mhi_ctx->client_cb_list); mutex_init(&mhi_ctx->mhi_lock); mhi_uci_init(); mhi_update_state_info(MHI_DEV_UEVENT_CTRL, MHI_STATE_CONFIGURED); Loading