1/* SPDX-License-Identifier: GPL-2.0-only */
2/*
3 * Copyright (c) 2017-2020, The Linux Foundation. All rights reserved.
4 */
5
6#ifndef _DP_DEBUG_H_
7#define _DP_DEBUG_H_
8
9#include "dp_panel.h"
10#include "dp_link.h"
11
12/**
13 * struct dp_debug
14 * @debug_en: specifies whether debug mode enabled
15 * @vdisplay: used to filter out vdisplay value
16 * @hdisplay: used to filter out hdisplay value
17 * @vrefresh: used to filter out vrefresh value
18 * @tpg_state: specifies whether tpg feature is enabled
19 */
20struct dp_debug {
21	bool debug_en;
22	int aspect_ratio;
23	int vdisplay;
24	int hdisplay;
25	int vrefresh;
26};
27
28#if defined(CONFIG_DEBUG_FS)
29
30/**
31 * dp_debug_get() - configure and get the DisplayPlot debug module data
32 *
33 * @dev: device instance of the caller
34 * @panel: instance of panel module
35 * @link: instance of link module
36 * @connector: double pointer to display connector
37 * @minor: pointer to drm minor number after device registration
38 * return: pointer to allocated debug module data
39 *
40 * This function sets up the debug module and provides a way
41 * for debugfs input to be communicated with existing modules
42 */
43struct dp_debug *dp_debug_get(struct device *dev, struct dp_panel *panel,
44		struct dp_link *link,
45		struct drm_connector *connector,
46		struct drm_minor *minor);
47
48/**
49 * dp_debug_put()
50 *
51 * Cleans up dp_debug instance
52 *
53 * @dp_debug: instance of dp_debug
54 */
55void dp_debug_put(struct dp_debug *dp_debug);
56
57#else
58
59static inline
60struct dp_debug *dp_debug_get(struct device *dev, struct dp_panel *panel,
61		struct dp_link *link,
62		struct drm_connector *connector, struct drm_minor *minor)
63{
64	return ERR_PTR(-EINVAL);
65}
66
67static inline void dp_debug_put(struct dp_debug *dp_debug)
68{
69}
70
71#endif /* defined(CONFIG_DEBUG_FS) */
72
73#endif /* _DP_DEBUG_H_ */
74