#define pr_fmt(fmt) …
#include <linux/init.h>
#include <linux/module.h>
#include <linux/slab.h>
#include <linux/string.h>
#include <linux/errno.h>
#include <linux/blkdev.h>
#include <linux/platform_device.h>
#include <linux/spinlock.h>
#include <linux/moduleparam.h>
#include <linux/firmware.h>
#include <linux/dma-mapping.h>
#include <asm/set_memory.h>
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
MODULE_VERSION(…) …;
#define BIOS_SCAN_LIMIT …
#define MAX_IMAGE_LENGTH …
static struct _rbu_data { … } rbu_data;
static char image_type[MAX_IMAGE_LENGTH + 1] = …;
module_param_string(…);
MODULE_PARM_DESC(…) …;
static unsigned long allocation_floor = …;
module_param(allocation_floor, ulong, 0644);
MODULE_PARM_DESC(…) …;
struct packet_data { … };
static struct packet_data packet_data_head;
static struct platform_device *rbu_device;
static int context;
static void init_packet_head(void)
{ … }
static int create_packet(void *data, size_t length)
{ … }
static int packetize_data(const u8 *data, size_t length)
{ … }
static int do_packet_read(char *data, struct packet_data *newpacket,
int length, int bytes_read, int *list_read_count)
{ … }
static int packet_read_list(char *data, size_t * pread_length)
{ … }
static void packet_empty_list(void)
{ … }
static void img_update_free(void)
{ … }
static int img_update_realloc(unsigned long size)
{ … }
static ssize_t read_packet_data(char *buffer, loff_t pos, size_t count)
{ … }
static ssize_t read_rbu_mono_data(char *buffer, loff_t pos, size_t count)
{ … }
static ssize_t data_read(struct file *filp, struct kobject *kobj,
struct bin_attribute *bin_attr,
char *buffer, loff_t pos, size_t count)
{ … }
static BIN_ATTR_RO(data, 0);
static void callbackfn_rbu(const struct firmware *fw, void *context)
{ … }
static ssize_t image_type_read(struct file *filp, struct kobject *kobj,
struct bin_attribute *bin_attr,
char *buffer, loff_t pos, size_t count)
{ … }
static ssize_t image_type_write(struct file *filp, struct kobject *kobj,
struct bin_attribute *bin_attr,
char *buffer, loff_t pos, size_t count)
{ … }
static BIN_ATTR_RW(image_type, 0);
static ssize_t packet_size_read(struct file *filp, struct kobject *kobj,
struct bin_attribute *bin_attr,
char *buffer, loff_t pos, size_t count)
{ … }
static ssize_t packet_size_write(struct file *filp, struct kobject *kobj,
struct bin_attribute *bin_attr,
char *buffer, loff_t pos, size_t count)
{ … }
static BIN_ATTR_RW(packet_size, 0);
static struct bin_attribute *rbu_bin_attrs[] = …;
static const struct attribute_group rbu_group = …;
static int __init dcdrbu_init(void)
{ … }
static __exit void dcdrbu_exit(void)
{ … }
module_exit(dcdrbu_exit);
module_init(…) …;