static struct device avsar = { .bus_id = "vlynq", }; int shim_osLoadFWImage(unsigned char *ptr) { const char *file = "ar0700xx"; const struct firmware *fw_entry; printk("requesting firmware image '%s'\n", file); if(request_firmware(&fw_entry, file, &avsar)) { printk(KERN_ERR "avsar: Firmware not available, calling old function...\n"); return -1; // return shim_osLoadFWImageOLD(ptr); } if(fw_entry->size > 0x4ffff) { printk(KERN_ERR "avsar: Firmware too big (%d bytes), calling old function...\n", fw_entry->size); return -1; } memcpy(ptr, fw_entry->data, fw_entry->size); release_firmware(fw_entry); return fw_entry->size; }