blob: 055b095c7ed307ed0517a211ecf428fedf110c44 [file] [log] [blame]
/*
* regdump.h - framework for dump the system periperal registers.
*
* Copyright (C) 2012 Lei Wen <leiwen@marvell.com>, Marvell Inc.
*
* This file is released under the GPLv2.
*/
#ifndef _LINUX_REGDUMP_OPS_H
#define _LINUX_REGDUMP_OPS_H
#include <linux/list.h>
#include <linux/slab.h>
struct regdump_ops;
struct regdump_region {
const char *name;
unsigned long start;
unsigned long size;
int (*cond)(struct regdump_ops *ops);
};
struct regdump_ops {
struct list_head node;
const char *dev_name;
int enable;
void __iomem *base;
void *buffer;
struct regdump_region *regions;
unsigned long reg_nums;
unsigned long phy_base;
};
static inline int regdump_cond_true(struct regdump_ops *ops)
{
return 1;
}
static inline int regdump_cond_false(struct regdump_ops *ops)
{
return 0;
}
#ifdef CONFIG_REGDUMP
extern int dump_reg_to_mem(void);
extern int dump_reg_to_console(void);
extern int register_regdump_ops(struct regdump_ops *ops);
extern int unregister_regdump_ops(struct regdump_ops *ops);
#else
#define register_regdump_ops(ops) do {} while (0)
#define unregister_regdump_ops(ops) do {} while (0)
#define dump_reg_to_mem() do {} while (0)
#define regdump_cond_true() do {} while (0)
#define regdump_cond_false() do {} while (0)
#endif
#endif