Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 84b5c4fe authored by Luis R. Rodriguez's avatar Luis R. Rodriguez Committed by Greg Kroah-Hartman
Browse files

firmware_loader: document firmware_sysfs_fallback()



This also sets the expecations for future fallback interfaces, even
if they are not exported.

Reviewed-by: default avatarKees Cook <keescook@chromium.org>
Signed-off-by: default avatarLuis R. Rodriguez <mcgrof@kernel.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent cf1cde7c
Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
@@ -662,6 +662,26 @@ static bool fw_run_sysfs_fallback(enum fw_opt opt_flags)
	return fw_force_sysfs_fallback(opt_flags);
}

/**
 * firmware_fallback_sysfs() - use the fallback mechanism to find firmware
 * @fw: pointer to firmware image
 * @name: name of firmware file to look for
 * @device: device for which firmware is being loaded
 * @opt_flags: options to control firmware loading behaviour
 * @ret: return value from direct lookup which triggered the fallback mechanism
 *
 * This function is called if direct lookup for the firmware failed, it enables
 * a fallback mechanism through userspace by exposing a sysfs loading
 * interface. Userspace is in charge of loading the firmware through the syfs
 * loading interface. This syfs fallback mechanism may be disabled completely
 * on a system by setting the proc sysctl value ignore_sysfs_fallback to true.
 * If this false we check if the internal API caller set the @FW_OPT_NOFALLBACK
 * flag, if so it would also disable the fallback mechanism. A system may want
 * to enfoce the sysfs fallback mechanism at all times, it can do this by
 * setting ignore_sysfs_fallback to false and force_sysfs_fallback to true.
 * Enabling force_sysfs_fallback is functionally equivalent to build a kernel
 * with CONFIG_FW_LOADER_USER_HELPER_FALLBACK.
 **/
int firmware_fallback_sysfs(struct firmware *fw, const char *name,
			    struct device *device,
			    enum fw_opt opt_flags,