diff options
Diffstat (limited to 'samples/firmware_class/firmware_sample_driver.c')
-rw-r--r-- | samples/firmware_class/firmware_sample_driver.c | 45 |
1 files changed, 25 insertions, 20 deletions
diff --git a/samples/firmware_class/firmware_sample_driver.c b/samples/firmware_class/firmware_sample_driver.c index ff0f2f2bd1a8..165cff98032e 100644 --- a/samples/firmware_class/firmware_sample_driver.c +++ b/samples/firmware_class/firmware_sample_driver.c @@ -12,8 +12,7 @@ #include <linux/init.h> #include <linux/device.h> #include <linux/string.h> - -#include "linux/firmware.h" +#include <linux/firmware.h> static struct device ghost_device = { .bus_id = "ghost0", @@ -31,11 +30,14 @@ static void sample_firmware_load(char *firmware, int size) static void sample_probe_default(void) { /* uses the default method to get the firmware */ - const struct firmware *fw_entry; - printk(KERN_INFO "firmware_sample_driver: a ghost device got inserted :)\n"); + const struct firmware *fw_entry; + int retval; + + printk(KERN_INFO "firmware_sample_driver: " + "a ghost device got inserted :)\n"); - if(request_firmware(&fw_entry, "sample_driver_fw", &ghost_device)!=0) - { + retval = request_firmware(&fw_entry, "sample_driver_fw", &ghost_device); + if (retval) { printk(KERN_ERR "firmware_sample_driver: Firmware not available\n"); return; @@ -47,17 +49,20 @@ static void sample_probe_default(void) /* finish setting up the device */ } + static void sample_probe_specific(void) { + int retval; /* Uses some specific hotplug support to get the firmware from * userspace directly into the hardware, or via some sysfs file */ /* NOTE: This currently doesn't work */ - printk(KERN_INFO "firmware_sample_driver: a ghost device got inserted :)\n"); + printk(KERN_INFO "firmware_sample_driver: " + "a ghost device got inserted :)\n"); - if(request_firmware(NULL, "sample_driver_fw", &ghost_device)!=0) - { + retval = request_firmware(NULL, "sample_driver_fw", &ghost_device); + if (retval) { printk(KERN_ERR "firmware_sample_driver: Firmware load failed\n"); return; @@ -70,7 +75,7 @@ static void sample_probe_specific(void) } static void sample_probe_async_cont(const struct firmware *fw, void *context) { - if(!fw){ + if (!fw) { printk(KERN_ERR "firmware_sample_driver: firmware load failed\n"); return; @@ -80,19 +85,18 @@ static void sample_probe_async_cont(const struct firmware *fw, void *context) (char *)context); sample_firmware_load(fw->data, fw->size); } + 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, - "sample_driver_fw", &ghost_device, - "my device pointer", - sample_probe_async_cont); - if(error){ - printk(KERN_ERR - "firmware_sample_driver:" + error = request_firmware_nowait(THIS_MODULE, FW_ACTION_NOHOTPLUG, + "sample_driver_fw", &ghost_device, + "my device pointer", + sample_probe_async_cont); + if (error) + printk(KERN_ERR "firmware_sample_driver:" " request_firmware_nowait failed\n"); - } } static int sample_init(void) @@ -105,11 +109,12 @@ static int sample_init(void) sample_probe_async(); return 0; } + static void __exit sample_exit(void) { } -module_init (sample_init); -module_exit (sample_exit); +module_init(sample_init); +module_exit(sample_exit); MODULE_LICENSE("GPL"); |