Commit 22d66c85 authored by Johan Hovold's avatar Johan Hovold Committed by Greg Kroah-Hartman

serdev: use zero to indicate infinite write timeout

Use zero to indicate infinite timeout for the synchronous
serdev_device_write() helper.

This allows drivers to specify an infinite timeout without knowing about
serdev implementation details, while also allowing the same timeout
argument to be used for both serdev_device_write() and
serdev_device_wait_until_sent().

Note that passing zero to the current helper makes no sense; just call
the asynchronous serdev_device_write_buf() directly instead.
Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent dc93967b
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
#include <linux/of_device.h> #include <linux/of_device.h>
#include <linux/pm_domain.h> #include <linux/pm_domain.h>
#include <linux/pm_runtime.h> #include <linux/pm_runtime.h>
#include <linux/sched.h>
#include <linux/serdev.h> #include <linux/serdev.h>
#include <linux/slab.h> #include <linux/slab.h>
...@@ -235,10 +236,12 @@ int serdev_device_write(struct serdev_device *serdev, ...@@ -235,10 +236,12 @@ int serdev_device_write(struct serdev_device *serdev,
struct serdev_controller *ctrl = serdev->ctrl; struct serdev_controller *ctrl = serdev->ctrl;
int ret; int ret;
if (!ctrl || !ctrl->ops->write_buf || if (!ctrl || !ctrl->ops->write_buf || !serdev->ops->write_wakeup)
(timeout && !serdev->ops->write_wakeup))
return -EINVAL; return -EINVAL;
if (timeout == 0)
timeout = MAX_SCHEDULE_TIMEOUT;
mutex_lock(&serdev->write_lock); mutex_lock(&serdev->write_lock);
do { do {
reinit_completion(&serdev->write_comp); reinit_completion(&serdev->write_comp);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment