aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/msm/disp/dpu1/dpu_dbg.h
blob: 1e6fa945f98b3fa4e4f4604b96ce10d2341861fc (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
/* Copyright (c) 2016-2018, The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
 * only version 2 as published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 */

#ifndef DPU_DBG_H_
#define DPU_DBG_H_

#include <stdarg.h>
#include <linux/debugfs.h>
#include <linux/list.h>

enum dpu_dbg_dump_flag {
	DPU_DBG_DUMP_IN_LOG = BIT(0),
	DPU_DBG_DUMP_IN_MEM = BIT(1),
};

#if defined(CONFIG_DEBUG_FS)

/**
 * dpu_dbg_init_dbg_buses - initialize debug bus dumping support for the chipset
 * @hwversion:		Chipset revision
 */
void dpu_dbg_init_dbg_buses(u32 hwversion);

/**
 * dpu_dbg_init - initialize global dpu debug facilities: regdump
 * @dev:		device handle
 * Returns:		0 or -ERROR
 */
int dpu_dbg_init(struct device *dev);

/**
 * dpu_dbg_debugfs_register - register entries at the given debugfs dir
 * @debugfs_root:	debugfs root in which to create dpu debug entries
 * Returns:	0 or -ERROR
 */
int dpu_dbg_debugfs_register(struct dentry *debugfs_root);

/**
 * dpu_dbg_destroy - destroy the global dpu debug facilities
 * Returns:	none
 */
void dpu_dbg_destroy(void);

/**
 * dpu_dbg_dump - trigger dumping of all dpu_dbg facilities
 * @queue_work:	  whether to queue the dumping work to the work_struct
 * @name:	  string indicating origin of dump
 * @dump_dbgbus:  dump the dpu debug bus
 * @dump_vbif_rt: dump the vbif rt bus
 * Returns:	none
 */
void dpu_dbg_dump(bool queue_work, const char *name, bool dump_dbgbus_dpu,
		  bool dump_dbgbus_vbif_rt);

/**
 * dpu_dbg_set_dpu_top_offset - set the target specific offset from mdss base
 *	address of the top registers. Used for accessing debug bus controls.
 * @blk_off: offset from mdss base of the top block
 */
void dpu_dbg_set_dpu_top_offset(u32 blk_off);

#else

static inline void dpu_dbg_init_dbg_buses(u32 hwversion)
{
}

static inline int dpu_dbg_init(struct device *dev)
{
	return 0;
}

static inline int dpu_dbg_debugfs_register(struct dentry *debugfs_root)
{
	return 0;
}

static inline void dpu_dbg_destroy(void)
{
}

static inline void dpu_dbg_dump(bool queue_work, const char *name,
				bool dump_dbgbus_dpu, bool dump_dbgbus_vbif_rt)
{
}

static inline void dpu_dbg_set_dpu_top_offset(u32 blk_off)
{
}

#endif /* defined(CONFIG_DEBUG_FS) */


#endif /* DPU_DBG_H_ */