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_state_is_aborted(fw_priv) || fw_sysfs_done(fw_priv)) in __fw_load_abort()
97 fw_state_aborted(fw_priv); in __fw_load_abort()
102 struct fw_priv *fw_priv = fw_sysfs->fw_priv; in fw_load_abort() local
104 __fw_load_abort(fw_priv); in fw_load_abort()
111 struct fw_priv *fw_priv; in kill_pending_fw_fallback_reqs() local
112 struct fw_priv *next; in kill_pending_fw_fallback_reqs()
115 list_for_each_entry_safe(fw_priv, next, &pending_fw_head, in kill_pending_fw_fallback_reqs()
117 if (!fw_priv->need_uevent || !only_kill_custom) in kill_pending_fw_fallback_reqs()
118 __fw_load_abort(fw_priv); in kill_pending_fw_fallback_reqs()
171 if (add_uevent_var(env, "FIRMWARE=%s", fw_sysfs->fw_priv->fw_name)) in do_firmware_uevent()
187 if (fw_sysfs->fw_priv) in firmware_uevent()
217 if (fw_sysfs->fw_priv) in firmware_loading_show()
218 loading = fw_sysfs_loading(fw_sysfs->fw_priv); in firmware_loading_show()
242 struct fw_priv *fw_priv; in firmware_loading_store() local
247 fw_priv = fw_sysfs->fw_priv; in firmware_loading_store()
248 if (fw_state_is_aborted(fw_priv)) in firmware_loading_store()
254 if (!fw_sysfs_done(fw_priv)) { in firmware_loading_store()
255 fw_free_paged_buf(fw_priv); in firmware_loading_store()
256 fw_state_start(fw_priv); in firmware_loading_store()
260 if (fw_sysfs_loading(fw_priv)) { in firmware_loading_store()
269 rc = fw_map_paged_buf(fw_priv); in firmware_loading_store()
274 rc = security_kernel_post_load_data(fw_priv->data, in firmware_loading_store()
275 fw_priv->size, in firmware_loading_store()
283 fw_state_aborted(fw_priv); in firmware_loading_store()
286 fw_state_done(fw_priv); in firmware_loading_store()
305 static void firmware_rw_data(struct fw_priv *fw_priv, char *buffer, in firmware_rw_data() argument
309 memcpy(buffer, fw_priv->data + offset, count); in firmware_rw_data()
311 memcpy(fw_priv->data + offset, buffer, count); in firmware_rw_data()
314 static void firmware_rw(struct fw_priv *fw_priv, char *buffer, in firmware_rw() argument
323 page_data = kmap(fw_priv->pages[page_nr]); in firmware_rw()
330 kunmap(fw_priv->pages[page_nr]); in firmware_rw()
343 struct fw_priv *fw_priv; in firmware_data_read() local
347 fw_priv = fw_sysfs->fw_priv; in firmware_data_read()
348 if (!fw_priv || fw_sysfs_done(fw_priv)) { in firmware_data_read()
352 if (offset > fw_priv->size) { in firmware_data_read()
356 if (count > fw_priv->size - offset) in firmware_data_read()
357 count = fw_priv->size - offset; in firmware_data_read()
361 if (fw_priv->data) in firmware_data_read()
362 firmware_rw_data(fw_priv, buffer, offset, count, true); in firmware_data_read()
364 firmware_rw(fw_priv, buffer, offset, count, true); in firmware_data_read()
375 err = fw_grow_paged_buf(fw_sysfs->fw_priv, in fw_realloc_pages()
400 struct fw_priv *fw_priv; in firmware_data_write() local
407 fw_priv = fw_sysfs->fw_priv; in firmware_data_write()
408 if (!fw_priv || fw_sysfs_done(fw_priv)) { in firmware_data_write()
413 if (fw_priv->data) { in firmware_data_write()
414 if (offset + count > fw_priv->allocated_size) { in firmware_data_write()
418 firmware_rw_data(fw_priv, buffer, offset, count, false); in firmware_data_write()
426 firmware_rw(fw_priv, buffer, offset, count, false); in firmware_data_write()
429 fw_priv->size = max_t(size_t, offset + count, fw_priv->size); in firmware_data_write()
499 struct fw_priv *fw_priv = fw_sysfs->fw_priv; in fw_load_sysfs_fallback() local
502 if (!fw_priv->data) in fw_load_sysfs_fallback()
503 fw_priv->is_paged_buf = true; in fw_load_sysfs_fallback()
514 if (fw_state_is_aborted(fw_priv)) { in fw_load_sysfs_fallback()
519 list_add(&fw_priv->pending_list, &pending_fw_head); in fw_load_sysfs_fallback()
522 if (fw_priv->opt_flags & FW_OPT_UEVENT) { in fw_load_sysfs_fallback()
523 fw_priv->need_uevent = true; in fw_load_sysfs_fallback()
525 dev_dbg(f_dev, "firmware: requesting %s\n", fw_priv->fw_name); in fw_load_sysfs_fallback()
531 retval = fw_sysfs_wait_timeout(fw_priv, timeout); in fw_load_sysfs_fallback()
538 if (fw_state_is_aborted(fw_priv)) { in fw_load_sysfs_fallback()
541 } else if (fw_priv->is_paged_buf && !fw_priv->data) in fw_load_sysfs_fallback()
582 fw_sysfs->fw_priv = firmware->priv; in fw_load_from_user_helper()