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()
104 mutex_unlock(&fwlp->lock); in cancel_store()
108 fwlp->ops->cancel(fwlp->fw_upload); in cancel_store()
109 mutex_unlock(&fwlp->lock); in cancel_store()
118 struct fw_upload_priv *fwlp = to_fw_sysfs(dev)->fw_upload_priv; in remaining_size_show() local
120 return sysfs_emit(buf, "%u\n", fwlp->remaining_size); in remaining_size_show()
137 static void fw_upload_update_progress(struct fw_upload_priv *fwlp, in fw_upload_update_progress() argument
140 mutex_lock(&fwlp->lock); in fw_upload_update_progress()
141 fwlp->progress = new_progress; in fw_upload_update_progress()
142 mutex_unlock(&fwlp->lock); in fw_upload_update_progress()
145 static void fw_upload_set_error(struct fw_upload_priv *fwlp, in fw_upload_set_error() argument
148 mutex_lock(&fwlp->lock); in fw_upload_set_error()
149 fwlp->err_progress = fwlp->progress; in fw_upload_set_error()
150 fwlp->err_code = err_code; in fw_upload_set_error()
151 mutex_unlock(&fwlp->lock); in fw_upload_set_error()
154 static void fw_upload_prog_complete(struct fw_upload_priv *fwlp) in fw_upload_prog_complete() argument
156 mutex_lock(&fwlp->lock); in fw_upload_prog_complete()
157 fwlp->progress = FW_UPLOAD_PROG_IDLE; in fw_upload_prog_complete()
158 mutex_unlock(&fwlp->lock); in fw_upload_prog_complete()
163 struct fw_upload_priv *fwlp; in fw_upload_main() local
170 fwlp = container_of(work, struct fw_upload_priv, work); in fw_upload_main()
171 fwl = fwlp->fw_upload; in fw_upload_main()
175 fw_upload_update_progress(fwlp, FW_UPLOAD_PROG_PREPARING); in fw_upload_main()
176 ret = fwlp->ops->prepare(fwl, fwlp->data, fwlp->remaining_size); in fw_upload_main()
178 fw_upload_set_error(fwlp, ret); in fw_upload_main()
182 fw_upload_update_progress(fwlp, FW_UPLOAD_PROG_TRANSFERRING); in fw_upload_main()
183 while (fwlp->remaining_size) { in fw_upload_main()
184 ret = fwlp->ops->write(fwl, fwlp->data, offset, in fw_upload_main()
185 fwlp->remaining_size, &written); in fw_upload_main()
191 fw_upload_set_error(fwlp, ret); in fw_upload_main()
195 fwlp->remaining_size -= written; in fw_upload_main()
199 fw_upload_update_progress(fwlp, FW_UPLOAD_PROG_PROGRAMMING); in fw_upload_main()
200 ret = fwlp->ops->poll_complete(fwl); in fw_upload_main()
202 fw_upload_set_error(fwlp, ret); in fw_upload_main()
205 if (fwlp->ops->cleanup) in fw_upload_main()
206 fwlp->ops->cleanup(fwl); in fw_upload_main()
220 fwlp->data = NULL; in fw_upload_main()
221 fw_upload_prog_complete(fwlp); in fw_upload_main()
232 struct fw_upload_priv *fwlp; in fw_upload_start() local
243 fwlp = fw_sysfs->fw_upload_priv; in fw_upload_start()
244 mutex_lock(&fwlp->lock); in fw_upload_start()
247 if (fwlp->progress != FW_UPLOAD_PROG_IDLE) { in fw_upload_start()
248 mutex_unlock(&fwlp->lock); in fw_upload_start()
254 fwlp->progress = FW_UPLOAD_PROG_RECEIVING; in fw_upload_start()
255 fwlp->err_code = 0; in fw_upload_start()
256 fwlp->remaining_size = fw_priv->size; in fw_upload_start()
257 fwlp->data = fw_priv->data; in fw_upload_start()
264 queue_work(system_long_wq, &fwlp->work); in fw_upload_start()
265 mutex_unlock(&fwlp->lock); in fw_upload_start()