162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Copyright (c) 2017-2020, The Linux Foundation. All rights reserved.
462306a36Sopenharmony_ci */
562306a36Sopenharmony_ci
662306a36Sopenharmony_ci#ifndef _DP_DEBUG_H_
762306a36Sopenharmony_ci#define _DP_DEBUG_H_
862306a36Sopenharmony_ci
962306a36Sopenharmony_ci#include "dp_panel.h"
1062306a36Sopenharmony_ci#include "dp_link.h"
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ci/**
1362306a36Sopenharmony_ci * struct dp_debug
1462306a36Sopenharmony_ci * @debug_en: specifies whether debug mode enabled
1562306a36Sopenharmony_ci * @vdisplay: used to filter out vdisplay value
1662306a36Sopenharmony_ci * @hdisplay: used to filter out hdisplay value
1762306a36Sopenharmony_ci * @vrefresh: used to filter out vrefresh value
1862306a36Sopenharmony_ci * @tpg_state: specifies whether tpg feature is enabled
1962306a36Sopenharmony_ci */
2062306a36Sopenharmony_cistruct dp_debug {
2162306a36Sopenharmony_ci	bool debug_en;
2262306a36Sopenharmony_ci	int aspect_ratio;
2362306a36Sopenharmony_ci	int vdisplay;
2462306a36Sopenharmony_ci	int hdisplay;
2562306a36Sopenharmony_ci	int vrefresh;
2662306a36Sopenharmony_ci};
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ci#if defined(CONFIG_DEBUG_FS)
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_ci/**
3162306a36Sopenharmony_ci * dp_debug_get() - configure and get the DisplayPlot debug module data
3262306a36Sopenharmony_ci *
3362306a36Sopenharmony_ci * @dev: device instance of the caller
3462306a36Sopenharmony_ci * @panel: instance of panel module
3562306a36Sopenharmony_ci * @link: instance of link module
3662306a36Sopenharmony_ci * @connector: double pointer to display connector
3762306a36Sopenharmony_ci * @minor: pointer to drm minor number after device registration
3862306a36Sopenharmony_ci * return: pointer to allocated debug module data
3962306a36Sopenharmony_ci *
4062306a36Sopenharmony_ci * This function sets up the debug module and provides a way
4162306a36Sopenharmony_ci * for debugfs input to be communicated with existing modules
4262306a36Sopenharmony_ci */
4362306a36Sopenharmony_cistruct dp_debug *dp_debug_get(struct device *dev, struct dp_panel *panel,
4462306a36Sopenharmony_ci		struct dp_link *link,
4562306a36Sopenharmony_ci		struct drm_connector *connector,
4662306a36Sopenharmony_ci		struct drm_minor *minor);
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_ci/**
4962306a36Sopenharmony_ci * dp_debug_put()
5062306a36Sopenharmony_ci *
5162306a36Sopenharmony_ci * Cleans up dp_debug instance
5262306a36Sopenharmony_ci *
5362306a36Sopenharmony_ci * @dp_debug: instance of dp_debug
5462306a36Sopenharmony_ci */
5562306a36Sopenharmony_civoid dp_debug_put(struct dp_debug *dp_debug);
5662306a36Sopenharmony_ci
5762306a36Sopenharmony_ci#else
5862306a36Sopenharmony_ci
5962306a36Sopenharmony_cistatic inline
6062306a36Sopenharmony_cistruct dp_debug *dp_debug_get(struct device *dev, struct dp_panel *panel,
6162306a36Sopenharmony_ci		struct dp_link *link,
6262306a36Sopenharmony_ci		struct drm_connector *connector, struct drm_minor *minor)
6362306a36Sopenharmony_ci{
6462306a36Sopenharmony_ci	return ERR_PTR(-EINVAL);
6562306a36Sopenharmony_ci}
6662306a36Sopenharmony_ci
6762306a36Sopenharmony_cistatic inline void dp_debug_put(struct dp_debug *dp_debug)
6862306a36Sopenharmony_ci{
6962306a36Sopenharmony_ci}
7062306a36Sopenharmony_ci
7162306a36Sopenharmony_ci#endif /* defined(CONFIG_DEBUG_FS) */
7262306a36Sopenharmony_ci
7362306a36Sopenharmony_ci#endif /* _DP_DEBUG_H_ */
74