Lines Matching refs:user

782 static void sbefifo_release_command(struct sbefifo_user *user)  in sbefifo_release_command()  argument
784 if (is_vmalloc_addr(user->pending_cmd)) in sbefifo_release_command()
785 vfree(user->pending_cmd); in sbefifo_release_command()
786 user->pending_cmd = NULL; in sbefifo_release_command()
787 user->pending_len = 0; in sbefifo_release_command()
793 struct sbefifo_user *user; in sbefifo_user_open() local
795 user = kzalloc(sizeof(struct sbefifo_user), GFP_KERNEL); in sbefifo_user_open()
796 if (!user) in sbefifo_user_open()
799 file->private_data = user; in sbefifo_user_open()
800 user->sbefifo = sbefifo; in sbefifo_user_open()
801 user->cmd_page = (void *)__get_free_page(GFP_KERNEL); in sbefifo_user_open()
802 if (!user->cmd_page) { in sbefifo_user_open()
803 kfree(user); in sbefifo_user_open()
806 mutex_init(&user->file_lock); in sbefifo_user_open()
807 user->cmd_timeout_ms = SBEFIFO_TIMEOUT_IN_CMD; in sbefifo_user_open()
808 user->read_timeout_ms = SBEFIFO_TIMEOUT_START_RSP; in sbefifo_user_open()
816 struct sbefifo_user *user = file->private_data; in sbefifo_user_read() local
823 if (!user) in sbefifo_user_read()
825 sbefifo = user->sbefifo; in sbefifo_user_read()
829 mutex_lock(&user->file_lock); in sbefifo_user_read()
832 if (user->pending_len == 0) { in sbefifo_user_read()
836 if (user->pending_len < 8) { in sbefifo_user_read()
840 cmd_len = user->pending_len >> 2; in sbefifo_user_read()
851 sbefifo->timeout_in_cmd_ms = user->cmd_timeout_ms; in sbefifo_user_read()
852 sbefifo->timeout_start_rsp_ms = user->read_timeout_ms; in sbefifo_user_read()
853 rc = __sbefifo_submit(sbefifo, user->pending_cmd, cmd_len, &resp_iter); in sbefifo_user_read()
863 sbefifo_release_command(user); in sbefifo_user_read()
864 mutex_unlock(&user->file_lock); in sbefifo_user_read()
871 struct sbefifo_user *user = file->private_data; in sbefifo_user_write() local
875 if (!user) in sbefifo_user_write()
877 sbefifo = user->sbefifo; in sbefifo_user_write()
883 mutex_lock(&user->file_lock); in sbefifo_user_write()
887 user->pending_cmd = user->cmd_page; in sbefifo_user_write()
889 user->pending_cmd = vmalloc(len); in sbefifo_user_write()
890 if (!user->pending_cmd) { in sbefifo_user_write()
896 if (copy_from_user(user->pending_cmd, buf, len)) { in sbefifo_user_write()
902 if (len == 4 && be32_to_cpu(*(__be32 *)user->pending_cmd) == in sbefifo_user_write()
906 user->pending_len = 0; in sbefifo_user_write()
912 rc = sbefifo_request_reset(user->sbefifo); in sbefifo_user_write()
920 user->pending_len = len; in sbefifo_user_write()
922 if (!user->pending_len) in sbefifo_user_write()
923 sbefifo_release_command(user); in sbefifo_user_write()
925 mutex_unlock(&user->file_lock); in sbefifo_user_write()
933 struct sbefifo_user *user = file->private_data; in sbefifo_user_release() local
935 if (!user) in sbefifo_user_release()
938 sbefifo_release_command(user); in sbefifo_user_release()
939 free_page((unsigned long)user->cmd_page); in sbefifo_user_release()
940 kfree(user); in sbefifo_user_release()
945 static int sbefifo_cmd_timeout(struct sbefifo_user *user, void __user *argp) in sbefifo_cmd_timeout() argument
947 struct device *dev = &user->sbefifo->dev; in sbefifo_cmd_timeout()
954 user->cmd_timeout_ms = SBEFIFO_TIMEOUT_IN_CMD; in sbefifo_cmd_timeout()
955 dev_dbg(dev, "Command timeout reset to %us\n", user->cmd_timeout_ms / 1000); in sbefifo_cmd_timeout()
959 user->cmd_timeout_ms = timeout * 1000; /* user timeout is in sec */ in sbefifo_cmd_timeout()
964 static int sbefifo_read_timeout(struct sbefifo_user *user, void __user *argp) in sbefifo_read_timeout() argument
966 struct device *dev = &user->sbefifo->dev; in sbefifo_read_timeout()
973 user->read_timeout_ms = SBEFIFO_TIMEOUT_START_RSP; in sbefifo_read_timeout()
974 dev_dbg(dev, "Timeout reset to %us\n", user->read_timeout_ms / 1000); in sbefifo_read_timeout()
978 user->read_timeout_ms = timeout * 1000; /* user timeout is in sec */ in sbefifo_read_timeout()
985 struct sbefifo_user *user = file->private_data; in sbefifo_user_ioctl() local
988 if (!user) in sbefifo_user_ioctl()
991 mutex_lock(&user->file_lock); in sbefifo_user_ioctl()
994 rc = sbefifo_cmd_timeout(user, (void __user *)arg); in sbefifo_user_ioctl()
997 rc = sbefifo_read_timeout(user, (void __user *)arg); in sbefifo_user_ioctl()
1000 mutex_unlock(&user->file_lock); in sbefifo_user_ioctl()