linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git] / Documentation / firmware_class / firmware_sample_driver.c
index 87feccd..d3ad2c2 100644 (file)
@@ -5,6 +5,8 @@
  *
  * Sample code on how to use request_firmware() from drivers.
  *
+ * Note that register_firmware() is currently useless.
+ *
  */
 
 #include <linux/module.h>
 
 #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 = {
+       .name      = "Ghost Device",
        .bus_id    = "ghost0",
 };
 
@@ -84,7 +92,7 @@ static void sample_probe_async(void)
 {
        /* Let's say that I can't sleep */
        int error;
-       error = request_firmware_nowait (THIS_MODULE, FW_ACTION_NOHOTPLUG,
+       error = request_firmware_nowait (THIS_MODULE,
                                         "sample_driver_fw", &ghost_device,
                                         "my device pointer",
                                         sample_probe_async_cont);
@@ -97,6 +105,10 @@ 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 */