#define pr_fmt(fmt) …
#include <linux/module.h>
#include <linux/of.h>
#include <linux/of_address.h>
#include <linux/miscdevice.h>
#include <linux/platform_device.h>
#include <linux/uaccess.h>
#include <linux/slab.h>
#include <linux/fs.h>
#include <linux/io.h>
#define MCFBALR_OFFSET …
#define MCFBAHR_OFFSET …
#define MC_FW_ADDR_MASK_HIGH …
#define MC_FW_ADDR_MASK_LOW …
#define MC_BUFFER_OFFSET …
#define MC_BUFFER_SIZE …
#define MC_OFFSET_DELTA …
#define AIOP_BUFFER_OFFSET …
#define AIOP_BUFFER_SIZE …
#define AIOP_OFFSET_DELTA …
#define LOG_HEADER_FLAG_BUFFER_WRAPAROUND …
#define LAST_BYTE(a) …
#define MAGIC_MC …
#define MAGIC_AIOP …
struct log_header { … };
struct console_data { … };
static struct resource mc_base_addr;
static inline void adjust_end(struct console_data *cd)
{ … }
static u64 get_mc_fw_base_address(void)
{ … }
static ssize_t dpaa2_console_size(struct console_data *cd)
{ … }
static int dpaa2_generic_console_open(struct inode *node, struct file *fp,
u64 offset, u64 size,
u32 expected_magic,
u32 offset_delta)
{ … }
static int dpaa2_mc_console_open(struct inode *node, struct file *fp)
{ … }
static int dpaa2_aiop_console_open(struct inode *node, struct file *fp)
{ … }
static int dpaa2_console_close(struct inode *node, struct file *fp)
{ … }
static ssize_t dpaa2_console_read(struct file *fp, char __user *buf,
size_t count, loff_t *f_pos)
{ … }
static const struct file_operations dpaa2_mc_console_fops = …;
static struct miscdevice dpaa2_mc_console_dev = …;
static const struct file_operations dpaa2_aiop_console_fops = …;
static struct miscdevice dpaa2_aiop_console_dev = …;
static int dpaa2_console_probe(struct platform_device *pdev)
{ … }
static void dpaa2_console_remove(struct platform_device *pdev)
{ … }
static const struct of_device_id dpaa2_console_match_table[] = …;
MODULE_DEVICE_TABLE(of, dpaa2_console_match_table);
static struct platform_driver dpaa2_console_driver = …;
module_platform_driver(…) …;
MODULE_LICENSE(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;