| /* |
| * 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 |