Centos-kernel-stream-9/drivers/base/firmware_loader/sysfs.h

119 lines
3.1 KiB
C
Raw Normal View History

firmware_loader: Split sysfs support from fallback Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2122318 Conflicts: drivers/base/firmware_loader/fallback.c - context differences when deleting old code drivers/base/firmware_loader/sysfs.c - the new code had to be modified to match the code moved from fallback.c Notably, CONFIG_FW_LOADER_USER_HELPER references were removed and (un)register_sysfs_loader was simplified and the references to firmware_config_sysctl() were removed. commit e0c11a8b985137aebf4bcd07cd957b80ac23924d Author: Russ Weight <russell.h.weight@intel.com> Date: Thu, 21 Apr 2022 14:21:59 -0700 In preparation for sharing the "loading" and "data" sysfs nodes with the new firmware upload support, split out sysfs functionality from fallback.c and fallback.h into sysfs.c and sysfs.h. This includes the firmware class driver code that is associated with the sysfs files and the fw_fallback_config support for the timeout sysfs node. CONFIG_FW_LOADER_SYSFS is created and is selected by CONFIG_FW_LOADER_USER_HELPER in order to include sysfs.o in firmware_class-objs. This is mostly just a code reorganization. There are a few symbols that change in scope, and these can be identified by looking at the header file changes. A few white-space warnings from checkpatch are also addressed in this patch. Reviewed-by: Luis Chamberlain <mcgrof@kernel.org> Reviewed-by: Tianfei zhang <tianfei.zhang@intel.com> Tested-by: Matthew Gerlach <matthew.gerlach@linux.intel.com> Signed-off-by: Russ Weight <russell.h.weight@intel.com> Link: https://lore.kernel.org/r/20220421212204.36052-4-russell.h.weight@intel.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Mark Langsdorf <mlangsdo@redhat.com>
2022-10-04 20:47:41 +00:00
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __FIRMWARE_SYSFS_H
#define __FIRMWARE_SYSFS_H
#include <linux/device.h>
#include "firmware.h"
firmware_loader: Split sysfs support from fallback Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2122318 Conflicts: drivers/base/firmware_loader/fallback.c - context differences when deleting old code drivers/base/firmware_loader/sysfs.c - the new code had to be modified to match the code moved from fallback.c Notably, CONFIG_FW_LOADER_USER_HELPER references were removed and (un)register_sysfs_loader was simplified and the references to firmware_config_sysctl() were removed. commit e0c11a8b985137aebf4bcd07cd957b80ac23924d Author: Russ Weight <russell.h.weight@intel.com> Date: Thu, 21 Apr 2022 14:21:59 -0700 In preparation for sharing the "loading" and "data" sysfs nodes with the new firmware upload support, split out sysfs functionality from fallback.c and fallback.h into sysfs.c and sysfs.h. This includes the firmware class driver code that is associated with the sysfs files and the fw_fallback_config support for the timeout sysfs node. CONFIG_FW_LOADER_SYSFS is created and is selected by CONFIG_FW_LOADER_USER_HELPER in order to include sysfs.o in firmware_class-objs. This is mostly just a code reorganization. There are a few symbols that change in scope, and these can be identified by looking at the header file changes. A few white-space warnings from checkpatch are also addressed in this patch. Reviewed-by: Luis Chamberlain <mcgrof@kernel.org> Reviewed-by: Tianfei zhang <tianfei.zhang@intel.com> Tested-by: Matthew Gerlach <matthew.gerlach@linux.intel.com> Signed-off-by: Russ Weight <russell.h.weight@intel.com> Link: https://lore.kernel.org/r/20220421212204.36052-4-russell.h.weight@intel.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Mark Langsdorf <mlangsdo@redhat.com>
2022-10-04 20:47:41 +00:00
MODULE_IMPORT_NS(FIRMWARE_LOADER_PRIVATE);
extern struct firmware_fallback_config fw_fallback_config;
extern struct device_attribute dev_attr_loading;
firmware_loader: Split sysfs support from fallback Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2122318 Conflicts: drivers/base/firmware_loader/fallback.c - context differences when deleting old code drivers/base/firmware_loader/sysfs.c - the new code had to be modified to match the code moved from fallback.c Notably, CONFIG_FW_LOADER_USER_HELPER references were removed and (un)register_sysfs_loader was simplified and the references to firmware_config_sysctl() were removed. commit e0c11a8b985137aebf4bcd07cd957b80ac23924d Author: Russ Weight <russell.h.weight@intel.com> Date: Thu, 21 Apr 2022 14:21:59 -0700 In preparation for sharing the "loading" and "data" sysfs nodes with the new firmware upload support, split out sysfs functionality from fallback.c and fallback.h into sysfs.c and sysfs.h. This includes the firmware class driver code that is associated with the sysfs files and the fw_fallback_config support for the timeout sysfs node. CONFIG_FW_LOADER_SYSFS is created and is selected by CONFIG_FW_LOADER_USER_HELPER in order to include sysfs.o in firmware_class-objs. This is mostly just a code reorganization. There are a few symbols that change in scope, and these can be identified by looking at the header file changes. A few white-space warnings from checkpatch are also addressed in this patch. Reviewed-by: Luis Chamberlain <mcgrof@kernel.org> Reviewed-by: Tianfei zhang <tianfei.zhang@intel.com> Tested-by: Matthew Gerlach <matthew.gerlach@linux.intel.com> Signed-off-by: Russ Weight <russell.h.weight@intel.com> Link: https://lore.kernel.org/r/20220421212204.36052-4-russell.h.weight@intel.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Mark Langsdorf <mlangsdo@redhat.com>
2022-10-04 20:47:41 +00:00
#ifdef CONFIG_FW_LOADER_USER_HELPER
/**
* struct firmware_fallback_config - firmware fallback configuration settings
*
* Helps describe and fine tune the fallback mechanism.
*
* @force_sysfs_fallback: force the sysfs fallback mechanism to be used
* as if one had enabled CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y.
* Useful to help debug a CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y
* functionality on a kernel where that config entry has been disabled.
* @ignore_sysfs_fallback: force to disable the sysfs fallback mechanism.
* This emulates the behaviour as if we had set the kernel
* config CONFIG_FW_LOADER_USER_HELPER=n.
* @old_timeout: for internal use
* @loading_timeout: the timeout to wait for the fallback mechanism before
* giving up, in seconds.
*/
struct firmware_fallback_config {
unsigned int force_sysfs_fallback;
unsigned int ignore_sysfs_fallback;
int old_timeout;
int loading_timeout;
};
/* These getters are vetted to use int properly */
static inline int __firmware_loading_timeout(void)
{
return fw_fallback_config.loading_timeout;
}
/* These setters are vetted to use int properly */
static inline void __fw_fallback_set_timeout(int timeout)
{
fw_fallback_config.loading_timeout = timeout;
}
#endif
#ifdef CONFIG_FW_LOADER_SYSFS
int register_sysfs_loader(void);
void unregister_sysfs_loader(void);
#ifdef CONFIG_SYSCTL
int register_firmware_config_sysctl(void);
void unregister_firmware_config_sysctl(void);
#else
static inline int register_firmware_config_sysctl(void)
{
return 0;
}
static inline void unregister_firmware_config_sysctl(void) { }
#endif /* CONFIG_SYSCTL */
#else /* CONFIG_FW_LOADER_SYSFS */
static inline int register_sysfs_loader(void)
{
return 0;
}
static inline void unregister_sysfs_loader(void)
{
}
#endif /* CONFIG_FW_LOADER_SYSFS */
struct fw_sysfs {
bool nowait;
struct device dev;
struct fw_priv *fw_priv;
struct firmware *fw;
void *fw_upload_priv;
firmware_loader: Split sysfs support from fallback Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2122318 Conflicts: drivers/base/firmware_loader/fallback.c - context differences when deleting old code drivers/base/firmware_loader/sysfs.c - the new code had to be modified to match the code moved from fallback.c Notably, CONFIG_FW_LOADER_USER_HELPER references were removed and (un)register_sysfs_loader was simplified and the references to firmware_config_sysctl() were removed. commit e0c11a8b985137aebf4bcd07cd957b80ac23924d Author: Russ Weight <russell.h.weight@intel.com> Date: Thu, 21 Apr 2022 14:21:59 -0700 In preparation for sharing the "loading" and "data" sysfs nodes with the new firmware upload support, split out sysfs functionality from fallback.c and fallback.h into sysfs.c and sysfs.h. This includes the firmware class driver code that is associated with the sysfs files and the fw_fallback_config support for the timeout sysfs node. CONFIG_FW_LOADER_SYSFS is created and is selected by CONFIG_FW_LOADER_USER_HELPER in order to include sysfs.o in firmware_class-objs. This is mostly just a code reorganization. There are a few symbols that change in scope, and these can be identified by looking at the header file changes. A few white-space warnings from checkpatch are also addressed in this patch. Reviewed-by: Luis Chamberlain <mcgrof@kernel.org> Reviewed-by: Tianfei zhang <tianfei.zhang@intel.com> Tested-by: Matthew Gerlach <matthew.gerlach@linux.intel.com> Signed-off-by: Russ Weight <russell.h.weight@intel.com> Link: https://lore.kernel.org/r/20220421212204.36052-4-russell.h.weight@intel.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Mark Langsdorf <mlangsdo@redhat.com>
2022-10-04 20:47:41 +00:00
};
#define to_fw_sysfs(__dev) container_of_const(__dev, struct fw_sysfs, dev)
firmware_loader: Split sysfs support from fallback Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2122318 Conflicts: drivers/base/firmware_loader/fallback.c - context differences when deleting old code drivers/base/firmware_loader/sysfs.c - the new code had to be modified to match the code moved from fallback.c Notably, CONFIG_FW_LOADER_USER_HELPER references were removed and (un)register_sysfs_loader was simplified and the references to firmware_config_sysctl() were removed. commit e0c11a8b985137aebf4bcd07cd957b80ac23924d Author: Russ Weight <russell.h.weight@intel.com> Date: Thu, 21 Apr 2022 14:21:59 -0700 In preparation for sharing the "loading" and "data" sysfs nodes with the new firmware upload support, split out sysfs functionality from fallback.c and fallback.h into sysfs.c and sysfs.h. This includes the firmware class driver code that is associated with the sysfs files and the fw_fallback_config support for the timeout sysfs node. CONFIG_FW_LOADER_SYSFS is created and is selected by CONFIG_FW_LOADER_USER_HELPER in order to include sysfs.o in firmware_class-objs. This is mostly just a code reorganization. There are a few symbols that change in scope, and these can be identified by looking at the header file changes. A few white-space warnings from checkpatch are also addressed in this patch. Reviewed-by: Luis Chamberlain <mcgrof@kernel.org> Reviewed-by: Tianfei zhang <tianfei.zhang@intel.com> Tested-by: Matthew Gerlach <matthew.gerlach@linux.intel.com> Signed-off-by: Russ Weight <russell.h.weight@intel.com> Link: https://lore.kernel.org/r/20220421212204.36052-4-russell.h.weight@intel.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Mark Langsdorf <mlangsdo@redhat.com>
2022-10-04 20:47:41 +00:00
void __fw_load_abort(struct fw_priv *fw_priv);
static inline void fw_load_abort(struct fw_sysfs *fw_sysfs)
{
struct fw_priv *fw_priv = fw_sysfs->fw_priv;
__fw_load_abort(fw_priv);
}
struct fw_sysfs *
fw_create_instance(struct firmware *firmware, const char *fw_name,
struct device *device, u32 opt_flags);
#ifdef CONFIG_FW_UPLOAD
extern struct device_attribute dev_attr_status;
extern struct device_attribute dev_attr_error;
extern struct device_attribute dev_attr_cancel;
extern struct device_attribute dev_attr_remaining_size;
int fw_upload_start(struct fw_sysfs *fw_sysfs);
void fw_upload_free(struct fw_sysfs *fw_sysfs);
umode_t fw_upload_is_visible(struct kobject *kobj, struct attribute *attr, int n);
#else
static inline int fw_upload_start(struct fw_sysfs *fw_sysfs)
{
return 0;
}
static inline void fw_upload_free(struct fw_sysfs *fw_sysfs)
{
}
#endif
firmware_loader: Split sysfs support from fallback Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2122318 Conflicts: drivers/base/firmware_loader/fallback.c - context differences when deleting old code drivers/base/firmware_loader/sysfs.c - the new code had to be modified to match the code moved from fallback.c Notably, CONFIG_FW_LOADER_USER_HELPER references were removed and (un)register_sysfs_loader was simplified and the references to firmware_config_sysctl() were removed. commit e0c11a8b985137aebf4bcd07cd957b80ac23924d Author: Russ Weight <russell.h.weight@intel.com> Date: Thu, 21 Apr 2022 14:21:59 -0700 In preparation for sharing the "loading" and "data" sysfs nodes with the new firmware upload support, split out sysfs functionality from fallback.c and fallback.h into sysfs.c and sysfs.h. This includes the firmware class driver code that is associated with the sysfs files and the fw_fallback_config support for the timeout sysfs node. CONFIG_FW_LOADER_SYSFS is created and is selected by CONFIG_FW_LOADER_USER_HELPER in order to include sysfs.o in firmware_class-objs. This is mostly just a code reorganization. There are a few symbols that change in scope, and these can be identified by looking at the header file changes. A few white-space warnings from checkpatch are also addressed in this patch. Reviewed-by: Luis Chamberlain <mcgrof@kernel.org> Reviewed-by: Tianfei zhang <tianfei.zhang@intel.com> Tested-by: Matthew Gerlach <matthew.gerlach@linux.intel.com> Signed-off-by: Russ Weight <russell.h.weight@intel.com> Link: https://lore.kernel.org/r/20220421212204.36052-4-russell.h.weight@intel.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Mark Langsdorf <mlangsdo@redhat.com>
2022-10-04 20:47:41 +00:00
#endif /* __FIRMWARE_SYSFS_H */