Lines Matching defs:fwlp
62 struct fw_upload_priv *fwlp = to_fw_sysfs(dev)->fw_upload_priv;
64 return sysfs_emit(buf, "%s\n", fw_upload_progress(dev, fwlp->progress));
71 struct fw_upload_priv *fwlp = to_fw_sysfs(dev)->fw_upload_priv;
74 mutex_lock(&fwlp->lock);
76 if (fwlp->progress != FW_UPLOAD_PROG_IDLE)
78 else if (!fwlp->err_code)
82 fw_upload_progress(dev, fwlp->err_progress),
83 fw_upload_error(dev, fwlp->err_code));
85 mutex_unlock(&fwlp->lock);
94 struct fw_upload_priv *fwlp = to_fw_sysfs(dev)->fw_upload_priv;
101 mutex_lock(&fwlp->lock);
102 if (fwlp->progress == FW_UPLOAD_PROG_IDLE)
105 fwlp->ops->cancel(fwlp->fw_upload);
106 mutex_unlock(&fwlp->lock);
115 struct fw_upload_priv *fwlp = to_fw_sysfs(dev)->fw_upload_priv;
117 return sysfs_emit(buf, "%u\n", fwlp->remaining_size);
134 static void fw_upload_update_progress(struct fw_upload_priv *fwlp,
137 mutex_lock(&fwlp->lock);
138 fwlp->progress = new_progress;
139 mutex_unlock(&fwlp->lock);
142 static void fw_upload_set_error(struct fw_upload_priv *fwlp,
145 mutex_lock(&fwlp->lock);
146 fwlp->err_progress = fwlp->progress;
147 fwlp->err_code = err_code;
148 mutex_unlock(&fwlp->lock);
151 static void fw_upload_prog_complete(struct fw_upload_priv *fwlp)
153 mutex_lock(&fwlp->lock);
154 fwlp->progress = FW_UPLOAD_PROG_IDLE;
155 mutex_unlock(&fwlp->lock);
160 struct fw_upload_priv *fwlp;
167 fwlp = container_of(work, struct fw_upload_priv, work);
168 fwl = fwlp->fw_upload;
172 fw_upload_update_progress(fwlp, FW_UPLOAD_PROG_PREPARING);
173 ret = fwlp->ops->prepare(fwl, fwlp->data, fwlp->remaining_size);
175 fw_upload_set_error(fwlp, ret);
179 fw_upload_update_progress(fwlp, FW_UPLOAD_PROG_TRANSFERRING);
180 while (fwlp->remaining_size) {
181 ret = fwlp->ops->write(fwl, fwlp->data, offset,
182 fwlp->remaining_size, &written);
188 fw_upload_set_error(fwlp, ret);
192 fwlp->remaining_size -= written;
196 fw_upload_update_progress(fwlp, FW_UPLOAD_PROG_PROGRAMMING);
197 ret = fwlp->ops->poll_complete(fwl);
199 fw_upload_set_error(fwlp, ret);
202 if (fwlp->ops->cleanup)
203 fwlp->ops->cleanup(fwl);
209 * Note: fwlp->remaining_size is left unmodified here to provide
217 fwlp->data = NULL;
218 fw_upload_prog_complete(fwlp);
229 struct fw_upload_priv *fwlp;
240 fwlp = fw_sysfs->fw_upload_priv;
241 mutex_lock(&fwlp->lock);
244 if (fwlp->progress != FW_UPLOAD_PROG_IDLE) {
245 mutex_unlock(&fwlp->lock);
251 fwlp->progress = FW_UPLOAD_PROG_RECEIVING;
252 fwlp->err_code = 0;
253 fwlp->remaining_size = fw_priv->size;
254 fwlp->data = fw_priv->data;
261 queue_work(system_long_wq, &fwlp->work);
262 mutex_unlock(&fwlp->lock);