Lines Matching refs:fw_priv
61 static inline bool fw_sysfs_done(struct fw_priv *fw_priv) in fw_sysfs_done() argument
63 return __fw_state_check(fw_priv, FW_STATUS_DONE); in fw_sysfs_done()
66 static inline bool fw_sysfs_loading(struct fw_priv *fw_priv) in fw_sysfs_loading() argument
68 return __fw_state_check(fw_priv, FW_STATUS_LOADING); in fw_sysfs_loading()
71 static inline int fw_sysfs_wait_timeout(struct fw_priv *fw_priv, long timeout) in fw_sysfs_wait_timeout() argument
73 return __fw_state_wait_common(fw_priv, timeout); in fw_sysfs_wait_timeout()
79 struct fw_priv *fw_priv; member
88 static void __fw_load_abort(struct fw_priv *fw_priv) in __fw_load_abort() argument
94 if (fw_sysfs_done(fw_priv)) in __fw_load_abort()
97 list_del_init(&fw_priv->pending_list); in __fw_load_abort()
98 fw_state_aborted(fw_priv); in __fw_load_abort()
103 struct fw_priv *fw_priv = fw_sysfs->fw_priv; in fw_load_abort() local
105 __fw_load_abort(fw_priv); in fw_load_abort()
112 struct fw_priv *fw_priv; in kill_pending_fw_fallback_reqs() local
113 struct fw_priv *next; in kill_pending_fw_fallback_reqs()
116 list_for_each_entry_safe(fw_priv, next, &pending_fw_head, in kill_pending_fw_fallback_reqs()
118 if (!fw_priv->need_uevent || !only_kill_custom) in kill_pending_fw_fallback_reqs()
119 __fw_load_abort(fw_priv); in kill_pending_fw_fallback_reqs()
172 if (add_uevent_var(env, "FIRMWARE=%s", fw_sysfs->fw_priv->fw_name)) in do_firmware_uevent()
188 if (fw_sysfs->fw_priv) in firmware_uevent()
218 if (fw_sysfs->fw_priv) in firmware_loading_show()
219 loading = fw_sysfs_loading(fw_sysfs->fw_priv); in firmware_loading_show()
243 struct fw_priv *fw_priv; in firmware_loading_store() local
248 fw_priv = fw_sysfs->fw_priv; in firmware_loading_store()
249 if (fw_state_is_aborted(fw_priv)) in firmware_loading_store()
255 if (!fw_sysfs_done(fw_priv)) { in firmware_loading_store()
256 fw_free_paged_buf(fw_priv); in firmware_loading_store()
257 fw_state_start(fw_priv); in firmware_loading_store()
261 if (fw_sysfs_loading(fw_priv)) { in firmware_loading_store()
270 rc = fw_map_paged_buf(fw_priv); in firmware_loading_store()
275 rc = security_kernel_post_load_data(fw_priv->data, in firmware_loading_store()
276 fw_priv->size, in firmware_loading_store()
283 list_del_init(&fw_priv->pending_list); in firmware_loading_store()
285 fw_state_aborted(fw_priv); in firmware_loading_store()
288 fw_state_done(fw_priv); in firmware_loading_store()
307 static void firmware_rw_data(struct fw_priv *fw_priv, char *buffer, in firmware_rw_data() argument
311 memcpy(buffer, fw_priv->data + offset, count); in firmware_rw_data()
313 memcpy(fw_priv->data + offset, buffer, count); in firmware_rw_data()
316 static void firmware_rw(struct fw_priv *fw_priv, char *buffer, in firmware_rw() argument
325 page_data = kmap(fw_priv->pages[page_nr]); in firmware_rw()
332 kunmap(fw_priv->pages[page_nr]); in firmware_rw()
345 struct fw_priv *fw_priv; in firmware_data_read() local
349 fw_priv = fw_sysfs->fw_priv; in firmware_data_read()
350 if (!fw_priv || fw_sysfs_done(fw_priv)) { in firmware_data_read()
354 if (offset > fw_priv->size) { in firmware_data_read()
358 if (count > fw_priv->size - offset) in firmware_data_read()
359 count = fw_priv->size - offset; in firmware_data_read()
363 if (fw_priv->data) in firmware_data_read()
364 firmware_rw_data(fw_priv, buffer, offset, count, true); in firmware_data_read()
366 firmware_rw(fw_priv, buffer, offset, count, true); in firmware_data_read()
377 err = fw_grow_paged_buf(fw_sysfs->fw_priv, in fw_realloc_pages()
402 struct fw_priv *fw_priv; in firmware_data_write() local
409 fw_priv = fw_sysfs->fw_priv; in firmware_data_write()
410 if (!fw_priv || fw_sysfs_done(fw_priv)) { in firmware_data_write()
415 if (fw_priv->data) { in firmware_data_write()
416 if (offset + count > fw_priv->allocated_size) { in firmware_data_write()
420 firmware_rw_data(fw_priv, buffer, offset, count, false); in firmware_data_write()
428 firmware_rw(fw_priv, buffer, offset, count, false); in firmware_data_write()
431 fw_priv->size = max_t(size_t, offset + count, fw_priv->size); in firmware_data_write()
501 struct fw_priv *fw_priv = fw_sysfs->fw_priv; in fw_load_sysfs_fallback() local
504 if (!fw_priv->data) in fw_load_sysfs_fallback()
505 fw_priv->is_paged_buf = true; in fw_load_sysfs_fallback()
516 list_add(&fw_priv->pending_list, &pending_fw_head); in fw_load_sysfs_fallback()
519 if (fw_priv->opt_flags & FW_OPT_UEVENT) { in fw_load_sysfs_fallback()
520 fw_priv->need_uevent = true; in fw_load_sysfs_fallback()
522 dev_dbg(f_dev, "firmware: requesting %s\n", fw_priv->fw_name); in fw_load_sysfs_fallback()
528 retval = fw_sysfs_wait_timeout(fw_priv, timeout); in fw_load_sysfs_fallback()
535 if (fw_state_is_aborted(fw_priv)) { in fw_load_sysfs_fallback()
540 } else if (fw_priv->is_paged_buf && !fw_priv->data) in fw_load_sysfs_fallback()
580 fw_sysfs->fw_priv = firmware->priv; in fw_load_from_user_helper()