fw_sysfs
kobject_uevent(&fw_sysfs->dev.kobj, KOBJ_ADD);
fw_load_abort(fw_sysfs);
struct fw_sysfs *fw_sysfs;
fw_sysfs = fw_create_instance(firmware, name, device, opt_flags);
if (IS_ERR(fw_sysfs)) {
ret = PTR_ERR(fw_sysfs);
fw_sysfs->fw_priv = firmware->priv;
ret = fw_load_sysfs_fallback(fw_sysfs, timeout);
static int fw_load_sysfs_fallback(struct fw_sysfs *fw_sysfs, long timeout)
struct device *f_dev = &fw_sysfs->dev;
struct fw_priv *fw_priv = fw_sysfs->fw_priv;
fw_upload_free(fw_sysfs);
kfree(fw_sysfs);
struct fw_sysfs *fw_sysfs = to_fw_sysfs(dev);
if (fw_sysfs->fw_priv)
loading = fw_state_is_loading(fw_sysfs->fw_priv);
struct fw_sysfs *fw_sysfs = to_fw_sysfs(dev);
fw_priv = fw_sysfs->fw_priv;
rc = fw_upload_start(fw_sysfs);
fw_load_abort(fw_sysfs);
if (fw_sysfs->fw_upload_priv)
fw_state_init(fw_sysfs->fw_priv);
struct fw_sysfs *fw_sysfs = to_fw_sysfs(dev);
fw_priv = fw_sysfs->fw_priv;
static int fw_realloc_pages(struct fw_sysfs *fw_sysfs, int min_size)
err = fw_grow_paged_buf(fw_sysfs->fw_priv,
fw_load_abort(fw_sysfs);
struct fw_sysfs *fw_sysfs = to_fw_sysfs(dev);
fw_priv = fw_sysfs->fw_priv;
retval = fw_realloc_pages(fw_sysfs, offset + count);
struct fw_sysfs *
struct fw_sysfs *fw_sysfs;
fw_sysfs = kzalloc_obj(*fw_sysfs);
if (!fw_sysfs) {
fw_sysfs = ERR_PTR(-ENOMEM);
fw_sysfs->nowait = !!(opt_flags & FW_OPT_NOWAIT);
fw_sysfs->fw = firmware;
f_dev = &fw_sysfs->dev;
return fw_sysfs;
static int do_firmware_uevent(const struct fw_sysfs *fw_sysfs, struct kobj_uevent_env *env)
if (add_uevent_var(env, "FIRMWARE=%s", fw_sysfs->fw_priv->fw_name))
if (add_uevent_var(env, "ASYNC=%d", fw_sysfs->nowait))
const struct fw_sysfs *fw_sysfs = to_fw_sysfs(dev);
if (fw_sysfs->fw_priv)
err = do_firmware_uevent(fw_sysfs, env);
struct fw_sysfs *fw_sysfs = to_fw_sysfs(dev);
if (fw_sysfs->fw_upload_priv)
int fw_upload_start(struct fw_sysfs *fw_sysfs);
void fw_upload_free(struct fw_sysfs *fw_sysfs);
static inline int fw_upload_start(struct fw_sysfs *fw_sysfs)
static inline void fw_upload_free(struct fw_sysfs *fw_sysfs)
#define to_fw_sysfs(__dev) container_of_const(__dev, struct fw_sysfs, dev)
static inline void fw_load_abort(struct fw_sysfs *fw_sysfs)
struct fw_priv *fw_priv = fw_sysfs->fw_priv;
struct fw_sysfs *
static struct fw_sysfs *fw_sysfs;
fw_sysfs = to_fw_sysfs(kobj_to_dev(kobj));
if (fw_sysfs->fw_upload_priv || attr == &dev_attr_loading.attr)
struct fw_sysfs *fw_sysfs;
fw_sysfs = (struct fw_sysfs *)fwl->priv;
fw_dev = &fw_sysfs->dev;
fw_free_paged_buf(fw_sysfs->fw_priv);
fw_state_init(fw_sysfs->fw_priv);
int fw_upload_start(struct fw_sysfs *fw_sysfs)
struct fw_priv *fw_priv = fw_sysfs->fw_priv;
struct device *fw_dev = &fw_sysfs->dev;
if (!fw_sysfs->fw_upload_priv)
fw_state_init(fw_sysfs->fw_priv);
fwlp = fw_sysfs->fw_upload_priv;
void fw_upload_free(struct fw_sysfs *fw_sysfs)
struct fw_upload_priv *fw_upload_priv = fw_sysfs->fw_upload_priv;
free_fw_priv(fw_sysfs->fw_priv);
struct fw_sysfs *fw_sysfs;
fw_sysfs = fw_create_instance(NULL, name, parent, opt_flags);
if (IS_ERR(fw_sysfs)) {
ret = PTR_ERR(fw_sysfs);
fw_upload->priv = fw_sysfs;
fw_sysfs->fw_upload_priv = fw_upload_priv;
fw_dev = &fw_sysfs->dev;
fw_sysfs->fw_priv = fw_priv;
kfree(fw_sysfs);
struct fw_sysfs *fw_sysfs = fw_upload->priv;
struct fw_upload_priv *fw_upload_priv = fw_sysfs->fw_upload_priv;
device_unregister(&fw_sysfs->dev);