Lines Matching refs:fw
101 static void fw_copy_to_prealloc_buf(struct firmware *fw, in fw_copy_to_prealloc_buf() argument
104 if (!buf || size < fw->size) in fw_copy_to_prealloc_buf()
106 memcpy(buf, fw->data, fw->size); in fw_copy_to_prealloc_buf()
109 static bool fw_get_builtin_firmware(struct firmware *fw, const char *name, in fw_get_builtin_firmware() argument
116 fw->size = b_fw->size; in fw_get_builtin_firmware()
117 fw->data = b_fw->data; in fw_get_builtin_firmware()
118 fw_copy_to_prealloc_buf(fw, buf, size); in fw_get_builtin_firmware()
127 static bool fw_is_builtin_firmware(const struct firmware *fw) in fw_is_builtin_firmware() argument
132 if (fw->data == b_fw->data) in fw_is_builtin_firmware()
140 static inline bool fw_get_builtin_firmware(struct firmware *fw, in fw_get_builtin_firmware() argument
147 static inline bool fw_is_builtin_firmware(const struct firmware *fw) in fw_is_builtin_firmware() argument
534 static void firmware_free_data(const struct firmware *fw) in firmware_free_data() argument
537 if (!fw->priv) { in firmware_free_data()
538 vfree(fw->data); in firmware_free_data()
541 free_fw_priv(fw->priv); in firmware_free_data()
545 static void fw_set_page_data(struct fw_priv *fw_priv, struct firmware *fw) in fw_set_page_data() argument
547 fw->priv = fw_priv; in fw_set_page_data()
549 fw->pages = fw_priv->pages; in fw_set_page_data()
551 fw->size = fw_priv->size; in fw_set_page_data()
552 fw->data = fw_priv->data; in fw_set_page_data()
635 int assign_fw(struct firmware *fw, struct device *device, in assign_fw() argument
638 struct fw_priv *fw_priv = fw->priv; in assign_fw()
675 fw_set_page_data(fw_priv, fw); in assign_fw()
736 static void fw_abort_batch_reqs(struct firmware *fw) in fw_abort_batch_reqs() argument
741 if (!fw || !fw->priv) in fw_abort_batch_reqs()
744 fw_priv = fw->priv; in fw_abort_batch_reqs()
755 struct firmware *fw = NULL; in _request_firmware() local
766 ret = _request_firmware_prepare(&fw, name, device, buf, size, in _request_firmware()
771 ret = fw_get_filesystem_firmware(device, fw->priv, "", NULL); in _request_firmware()
774 ret = fw_get_filesystem_firmware(device, fw->priv, ".xz", in _request_firmware()
783 ret = firmware_fallback_sysfs(fw, name, device, opt_flags, ret); in _request_firmware()
785 ret = assign_fw(fw, device, opt_flags); in _request_firmware()
789 fw_abort_batch_reqs(fw); in _request_firmware()
790 release_firmware(fw); in _request_firmware()
791 fw = NULL; in _request_firmware()
794 *firmware_p = fw; in _request_firmware()
945 void release_firmware(const struct firmware *fw) in release_firmware() argument
947 if (fw) { in release_firmware()
948 if (!fw_is_builtin_firmware(fw)) in release_firmware()
949 firmware_free_data(fw); in release_firmware()
950 kfree(fw); in release_firmware()
962 void (*cont)(const struct firmware *fw, void *context);
969 const struct firmware *fw; in request_firmware_work_func() local
973 _request_firmware(&fw, fw_work->name, fw_work->device, NULL, 0, in request_firmware_work_func()
975 fw_work->cont(fw, fw_work->context); in request_firmware_work_func()
1010 void (*cont)(const struct firmware *fw, void *context)) in request_firmware_nowait() argument
1069 const struct firmware *fw; in cache_firmware() local
1073 ret = request_firmware(&fw, fw_name, NULL); in cache_firmware()
1075 kfree(fw); in cache_firmware()
1108 struct firmware fw; in uncache_firmware() local
1112 if (fw_get_builtin_firmware(&fw, fw_name, NULL, 0)) in uncache_firmware()