#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/types.h>
#include <linux/bitfield.h>
#include <linux/device.h>
#include <linux/atomic.h>
#include <linux/regmap.h>
#include <linux/platform_device.h>
#include <linux/mfd/syscon.h>
#include <linux/interrupt.h>
#include <linux/io.h>
#include <linux/nmi.h>
#include <linux/of.h>
#include <linux/clk.h>
#include <linux/reset.h>
#include <linux/sysfs.h>
#define BT1_AXI_WERRL …
#define BT1_AXI_WERRH …
#define BT1_AXI_WERRH_TYPE …
#define BT1_AXI_WERRH_ADDR_FLD …
#define BT1_AXI_WERRH_ADDR_MASK …
struct bt1_axi { … };
static irqreturn_t bt1_axi_isr(int irq, void *data)
{ … }
static void bt1_axi_clear_data(void *data)
{ … }
static struct bt1_axi *bt1_axi_create_data(struct platform_device *pdev)
{ … }
static int bt1_axi_request_regs(struct bt1_axi *axi)
{ … }
static int bt1_axi_request_rst(struct bt1_axi *axi)
{ … }
static void bt1_axi_disable_clk(void *data)
{ … }
static int bt1_axi_request_clk(struct bt1_axi *axi)
{ … }
static int bt1_axi_request_irq(struct bt1_axi *axi)
{ … }
static ssize_t count_show(struct device *dev,
struct device_attribute *attr, char *buf)
{ … }
static DEVICE_ATTR_RO(count);
static ssize_t inject_error_show(struct device *dev,
struct device_attribute *attr, char *buf)
{ … }
static ssize_t inject_error_store(struct device *dev,
struct device_attribute *attr,
const char *data, size_t count)
{ … }
static DEVICE_ATTR_RW(inject_error);
static struct attribute *bt1_axi_sysfs_attrs[] = …;
ATTRIBUTE_GROUPS(…);
static void bt1_axi_remove_sysfs(void *data)
{ … }
static int bt1_axi_init_sysfs(struct bt1_axi *axi)
{ … }
static int bt1_axi_probe(struct platform_device *pdev)
{ … }
static const struct of_device_id bt1_axi_of_match[] = …;
MODULE_DEVICE_TABLE(of, bt1_axi_of_match);
static struct platform_driver bt1_axi_driver = …;
module_platform_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;