Commit 1b81d663 authored by Adrian Bunk's avatar Adrian Bunk Committed by Linus Torvalds

[PATCH] drivers/base/firmware_class.c: cleanups

- remove the following global function that is both unused and
  - register_firmware()

- make the following needlessly global function static:
  - firmware_class_uevent()
Signed-off-by: default avatarAdrian Bunk <>
Signed-off-by: default avatarAndrew Morton <>
Signed-off-by: default avatarLinus Torvalds <>
parent ccf06998
......@@ -105,20 +105,3 @@
on the setup, so I think that the choice on what firmware to make
persistent should be left to userspace.
- Why register_firmware()+__init can be useful:
- For boot devices needing firmware.
- To make the transition easier:
The firmware can be declared __init and register_firmware()
called on module_init. Then the firmware is warranted to be
there even if "firmware hotplug userspace" is not there yet or
it doesn't yet provide the needed firmware.
Once the firmware is widely available in userspace, it can be
removed from the kernel. Or made optional (CONFIG_.*_FIRMWARE).
In either case, if firmware hotplug support is there, it can move the
firmware out of kernel memory into the real filesystem for later
Note: If persistence is implemented on top of initramfs,
register_firmware() may not be appropriate.
......@@ -5,8 +5,6 @@
* Sample code on how to use request_firmware() from drivers.
* Note that register_firmware() is currently useless.
#include <linux/module.h>
......@@ -17,11 +15,6 @@
#include "linux/firmware.h"
char __init inkernel_firmware[] = "let's say that this is firmware\n";
static struct device ghost_device = {
.bus_id = "ghost0",
......@@ -104,10 +97,6 @@ static void sample_probe_async(void)
static int sample_init(void)
register_firmware("sample_driver_fw", inkernel_firmware,
/* since there is no real hardware insertion I just call the
* sample probe functions here */
......@@ -86,18 +86,9 @@ firmware_timeout_store(struct class *class, const char *buf, size_t count)
static CLASS_ATTR(timeout, 0644, firmware_timeout_show, firmware_timeout_store);
static void fw_class_dev_release(struct class_device *class_dev);
int firmware_class_uevent(struct class_device *dev, char **envp,
int num_envp, char *buffer, int buffer_size);
static struct class firmware_class = {
.name = "firmware",
.uevent = firmware_class_uevent,
.release = fw_class_dev_release,
firmware_class_uevent(struct class_device *class_dev, char **envp,
int num_envp, char *buffer, int buffer_size)
static int firmware_class_uevent(struct class_device *class_dev, char **envp,
int num_envp, char *buffer, int buffer_size)
struct firmware_priv *fw_priv = class_get_devdata(class_dev);
int i = 0, len = 0;
......@@ -116,6 +107,12 @@ firmware_class_uevent(struct class_device *class_dev, char **envp,
return 0;
static struct class firmware_class = {
.name = "firmware",
.uevent = firmware_class_uevent,
.release = fw_class_dev_release,
static ssize_t
firmware_loading_show(struct class_device *class_dev, char *buf)
......@@ -493,25 +490,6 @@ release_firmware(const struct firmware *fw)
* register_firmware: - provide a firmware image for later usage
* @name: name of firmware image file
* @data: buffer pointer for the firmware image
* @size: size of the data buffer area
* Make sure that @data will be available by requesting firmware @name.
* Note: This will not be possible until some kind of persistence
* is available.
register_firmware(const char *name, const u8 *data, size_t size)
/* This is meaningless without firmware caching, so until we
* decide if firmware caching is reasonable just leave it as a
* noop */
/* Async support */
struct firmware_work {
struct work_struct work;
......@@ -630,4 +608,3 @@ module_exit(firmware_class_exit);
......@@ -19,5 +19,4 @@ int request_firmware_nowait(
void (*cont)(const struct firmware *fw, void *context));
void release_firmware(const struct firmware *fw);
void register_firmware(const char *name, const u8 *data, size_t size);
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment