Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 26865
b: refs/heads/master
c: 1b81d66
h: refs/heads/master
i:
  26863: 8f56bbd
v: v3
  • Loading branch information
Adrian Bunk authored and Linus Torvalds committed May 21, 2006
1 parent e57f125 commit 059ed4d
Show file tree
Hide file tree
Showing 5 changed files with 9 additions and 61 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: ccf06998fe179ae2cc9517ed1d75433dc0b5032d
refs/heads/master: 1b81d6637d27a0e6a0506ecef65493b50d859cfc
17 changes: 0 additions & 17 deletions trunk/Documentation/firmware_class/README
Original file line number Diff line number Diff line change
Expand Up @@ -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
usage.

Note: If persistence is implemented on top of initramfs,
register_firmware() may not be appropriate.

11 changes: 0 additions & 11 deletions trunk/Documentation/firmware_class/firmware_sample_driver.c
Original file line number Diff line number Diff line change
Expand Up @@ -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>
Expand All @@ -17,11 +15,6 @@

#include "linux/firmware.h"

#define WE_CAN_NEED_FIRMWARE_BEFORE_USERSPACE_IS_AVAILABLE
#ifdef WE_CAN_NEED_FIRMWARE_BEFORE_USERSPACE_IS_AVAILABLE
char __init inkernel_firmware[] = "let's say that this is firmware\n";
#endif

static struct device ghost_device = {
.bus_id = "ghost0",
};
Expand Down Expand Up @@ -104,10 +97,6 @@ static void sample_probe_async(void)

static int sample_init(void)
{
#ifdef WE_CAN_NEED_FIRMWARE_BEFORE_USERSPACE_IS_AVAILABLE
register_firmware("sample_driver_fw", inkernel_firmware,
sizeof(inkernel_firmware));
#endif
device_initialize(&ghost_device);
/* since there is no real hardware insertion I just call the
* sample probe functions here */
Expand Down
39 changes: 8 additions & 31 deletions trunk/drivers/base/firmware_class.c
Original file line number Diff line number Diff line change
Expand Up @@ -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,
};

int
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;
Expand All @@ -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)
{
Expand Down Expand Up @@ -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.
**/
void
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;
Expand Down Expand Up @@ -630,4 +608,3 @@ module_exit(firmware_class_exit);
EXPORT_SYMBOL(release_firmware);
EXPORT_SYMBOL(request_firmware);
EXPORT_SYMBOL(request_firmware_nowait);
EXPORT_SYMBOL(register_firmware);
1 change: 0 additions & 1 deletion trunk/include/linux/firmware.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);
#endif

0 comments on commit 059ed4d

Please sign in to comment.