Lines Matching refs:fwlp
63 struct fw_upload_priv *fwlp = to_fw_sysfs(dev)->fw_upload_priv; in status_show() local
65 return sysfs_emit(buf, "%s\n", fw_upload_progress(dev, fwlp->progress)); in status_show()
72 struct fw_upload_priv *fwlp = to_fw_sysfs(dev)->fw_upload_priv; in error_show() local
75 mutex_lock(&fwlp->lock); in error_show()
77 if (fwlp->progress != FW_UPLOAD_PROG_IDLE) in error_show()
79 else if (!fwlp->err_code) in error_show()
83 fw_upload_progress(dev, fwlp->err_progress), in error_show()
84 fw_upload_error(dev, fwlp->err_code)); in error_show()
86 mutex_unlock(&fwlp->lock); in error_show()
95 struct fw_upload_priv *fwlp = to_fw_sysfs(dev)->fw_upload_priv; in cancel_store() local
102 mutex_lock(&fwlp->lock); in cancel_store()
103 if (fwlp->progress == FW_UPLOAD_PROG_IDLE) in cancel_store()
106 fwlp->ops->cancel(fwlp->fw_upload); in cancel_store()
107 mutex_unlock(&fwlp->lock); in cancel_store()
116 struct fw_upload_priv *fwlp = to_fw_sysfs(dev)->fw_upload_priv; in remaining_size_show() local
118 return sysfs_emit(buf, "%u\n", fwlp->remaining_size); in remaining_size_show()
135 static void fw_upload_update_progress(struct fw_upload_priv *fwlp, in fw_upload_update_progress() argument
138 mutex_lock(&fwlp->lock); in fw_upload_update_progress()
139 fwlp->progress = new_progress; in fw_upload_update_progress()
140 mutex_unlock(&fwlp->lock); in fw_upload_update_progress()
143 static void fw_upload_set_error(struct fw_upload_priv *fwlp, in fw_upload_set_error() argument
146 mutex_lock(&fwlp->lock); in fw_upload_set_error()
147 fwlp->err_progress = fwlp->progress; in fw_upload_set_error()
148 fwlp->err_code = err_code; in fw_upload_set_error()
149 mutex_unlock(&fwlp->lock); in fw_upload_set_error()
152 static void fw_upload_prog_complete(struct fw_upload_priv *fwlp) in fw_upload_prog_complete() argument
154 mutex_lock(&fwlp->lock); in fw_upload_prog_complete()
155 fwlp->progress = FW_UPLOAD_PROG_IDLE; in fw_upload_prog_complete()
156 mutex_unlock(&fwlp->lock); in fw_upload_prog_complete()
161 struct fw_upload_priv *fwlp; in fw_upload_main() local
168 fwlp = container_of(work, struct fw_upload_priv, work); in fw_upload_main()
169 fwl = fwlp->fw_upload; in fw_upload_main()
173 fw_upload_update_progress(fwlp, FW_UPLOAD_PROG_PREPARING); in fw_upload_main()
174 ret = fwlp->ops->prepare(fwl, fwlp->data, fwlp->remaining_size); in fw_upload_main()
176 fw_upload_set_error(fwlp, ret); in fw_upload_main()
180 fw_upload_update_progress(fwlp, FW_UPLOAD_PROG_TRANSFERRING); in fw_upload_main()
181 while (fwlp->remaining_size) { in fw_upload_main()
182 ret = fwlp->ops->write(fwl, fwlp->data, offset, in fw_upload_main()
183 fwlp->remaining_size, &written); in fw_upload_main()
189 fw_upload_set_error(fwlp, ret); in fw_upload_main()
193 fwlp->remaining_size -= written; in fw_upload_main()
197 fw_upload_update_progress(fwlp, FW_UPLOAD_PROG_PROGRAMMING); in fw_upload_main()
198 ret = fwlp->ops->poll_complete(fwl); in fw_upload_main()
200 fw_upload_set_error(fwlp, ret); in fw_upload_main()
203 if (fwlp->ops->cleanup) in fw_upload_main()
204 fwlp->ops->cleanup(fwl); in fw_upload_main()
218 fwlp->data = NULL; in fw_upload_main()
219 fw_upload_prog_complete(fwlp); in fw_upload_main()
230 struct fw_upload_priv *fwlp; in fw_upload_start() local
241 fwlp = fw_sysfs->fw_upload_priv; in fw_upload_start()
242 mutex_lock(&fwlp->lock); in fw_upload_start()
245 if (fwlp->progress != FW_UPLOAD_PROG_IDLE) { in fw_upload_start()
246 mutex_unlock(&fwlp->lock); in fw_upload_start()
252 fwlp->progress = FW_UPLOAD_PROG_RECEIVING; in fw_upload_start()
253 fwlp->err_code = 0; in fw_upload_start()
254 fwlp->remaining_size = fw_priv->size; in fw_upload_start()
255 fwlp->data = fw_priv->data; in fw_upload_start()
262 queue_work(system_long_wq, &fwlp->work); in fw_upload_start()
263 mutex_unlock(&fwlp->lock); in fw_upload_start()