mei: bus: call device disable handler prior to disconnection
call device's disable handler prior to disconnection so it can possibly close the communication with fw client in graceful way Signed-off-by: Tomas Winkler <tomas.winkler@intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
a9bed61053
commit
b3de8e3719
1 changed files with 11 additions and 14 deletions
|
@ -467,37 +467,34 @@ int mei_cl_disable_device(struct mei_cl_device *device)
|
||||||
|
|
||||||
dev = cl->dev;
|
dev = cl->dev;
|
||||||
|
|
||||||
|
if (device->ops && device->ops->disable)
|
||||||
|
device->ops->disable(device);
|
||||||
|
|
||||||
|
device->event_cb = NULL;
|
||||||
|
|
||||||
mutex_lock(&dev->device_lock);
|
mutex_lock(&dev->device_lock);
|
||||||
|
|
||||||
if (cl->state != MEI_FILE_CONNECTED) {
|
if (cl->state != MEI_FILE_CONNECTED) {
|
||||||
mutex_unlock(&dev->device_lock);
|
|
||||||
dev_err(dev->dev, "Already disconnected");
|
dev_err(dev->dev, "Already disconnected");
|
||||||
|
err = 0;
|
||||||
return 0;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
cl->state = MEI_FILE_DISCONNECTING;
|
cl->state = MEI_FILE_DISCONNECTING;
|
||||||
|
|
||||||
err = mei_cl_disconnect(cl);
|
err = mei_cl_disconnect(cl);
|
||||||
if (err < 0) {
|
if (err < 0) {
|
||||||
mutex_unlock(&dev->device_lock);
|
dev_err(dev->dev, "Could not disconnect from the ME client");
|
||||||
dev_err(dev->dev,
|
goto out;
|
||||||
"Could not disconnect from the ME client");
|
|
||||||
|
|
||||||
return err;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Flush queues and remove any pending read */
|
/* Flush queues and remove any pending read */
|
||||||
mei_cl_flush_queues(cl, NULL);
|
mei_cl_flush_queues(cl, NULL);
|
||||||
|
|
||||||
device->event_cb = NULL;
|
out:
|
||||||
|
|
||||||
mutex_unlock(&dev->device_lock);
|
mutex_unlock(&dev->device_lock);
|
||||||
|
return err;
|
||||||
|
|
||||||
if (!device->ops || !device->ops->disable)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
return device->ops->disable(device);
|
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(mei_cl_disable_device);
|
EXPORT_SYMBOL_GPL(mei_cl_disable_device);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue