Lines Matching full:foo*
881 foo_read_or_write(struct foo_priv *foo, void *data)
883 lock(&foo->private_lock);
884 add_request_to_io_queue(foo, data);
885 if (foo->num_pending_requests++ == 0)
886 pm_runtime_get(&foo->dev);
887 if (!foo->is_suspended)
888 foo_process_next_request(foo);
889 unlock(&foo->private_lock);
892 foo_io_completion(struct foo_priv *foo, void *req)
894 lock(&foo->private_lock);
895 if (--foo->num_pending_requests == 0) {
896 pm_runtime_mark_last_busy(&foo->dev);
897 pm_runtime_put_autosuspend(&foo->dev);
899 foo_process_next_request(foo);
901 unlock(&foo->private_lock);
905 int foo_runtime_suspend(struct device *dev)
907 struct foo_priv foo = container_of(dev, ...);
910 lock(&foo->private_lock);
911 if (foo->num_pending_requests > 0) {
915 foo->is_suspended = 1;
917 unlock(&foo->private_lock);
921 int foo_runtime_resume(struct device *dev)
923 struct foo_priv foo = container_of(dev, ...);
925 lock(&foo->private_lock);
927 foo->is_suspended = 0;
928 pm_runtime_mark_last_busy(&foo->dev);
929 if (foo->num_pending_requests > 0)
930 foo_process_next_request(foo);
931 unlock(&foo->private_lock);
935 The important point is that after foo_io_completion() asks for an autosuspend,
936 the foo_runtime_suspend() callback may race with foo_read_or_write().
937 Therefore foo_runtime_suspend() has to check whether there are any pending I/O