14562236bSHarry Wentland /*
24562236bSHarry Wentland  * Copyright 2012-16 Advanced Micro Devices, Inc.
36ca3928dSTimothy Pearson  * Copyright 2019 Raptor Engineering, LLC
44562236bSHarry Wentland  *
54562236bSHarry Wentland  * Permission is hereby granted, free of charge, to any person obtaining a
64562236bSHarry Wentland  * copy of this software and associated documentation files (the "Software"),
74562236bSHarry Wentland  * to deal in the Software without restriction, including without limitation
84562236bSHarry Wentland  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
94562236bSHarry Wentland  * and/or sell copies of the Software, and to permit persons to whom the
104562236bSHarry Wentland  * Software is furnished to do so, subject to the following conditions:
114562236bSHarry Wentland  *
124562236bSHarry Wentland  * The above copyright notice and this permission notice shall be included in
134562236bSHarry Wentland  * all copies or substantial portions of the Software.
144562236bSHarry Wentland  *
154562236bSHarry Wentland  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
164562236bSHarry Wentland  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
174562236bSHarry Wentland  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
184562236bSHarry Wentland  * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
194562236bSHarry Wentland  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
204562236bSHarry Wentland  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
214562236bSHarry Wentland  * OTHER DEALINGS IN THE SOFTWARE.
224562236bSHarry Wentland  *
234562236bSHarry Wentland  * Authors: AMD
244562236bSHarry Wentland  *
254562236bSHarry Wentland  */
264562236bSHarry Wentland 
274562236bSHarry Wentland #ifndef _OS_TYPES_H_
284562236bSHarry Wentland #define _OS_TYPES_H_
294562236bSHarry Wentland 
3009de5cd2SHarry Wentland #include <linux/slab.h>
314fc4dca8SSam Ravnborg #include <linux/kgdb.h>
3293052132SDave Airlie #include <linux/kref.h>
334fc4dca8SSam Ravnborg #include <linux/types.h>
34178fbb6dSJimmy Kizito #include <linux/delay.h>
3509de5cd2SHarry Wentland #include <linux/mm.h>
364fc4dca8SSam Ravnborg 
374fc4dca8SSam Ravnborg #include <asm/byteorder.h>
384fc4dca8SSam Ravnborg 
39da68386dSThomas Zimmermann #include <drm/display/drm_dp_helper.h>
404fc4dca8SSam Ravnborg #include <drm/drm_print.h>
4193052132SDave Airlie 
42160b8e75SRex Zhu #include "cgs_common.h"
434562236bSHarry Wentland 
444562236bSHarry Wentland #if defined(__BIG_ENDIAN) && !defined(BIGENDIAN_CPU)
454562236bSHarry Wentland #define BIGENDIAN_CPU
464562236bSHarry Wentland #elif defined(__LITTLE_ENDIAN) && !defined(LITTLEENDIAN_CPU)
474562236bSHarry Wentland #define LITTLEENDIAN_CPU
484562236bSHarry Wentland #endif
494562236bSHarry Wentland 
504562236bSHarry Wentland #undef FRAME_SIZE
514562236bSHarry Wentland 
52e8e722d6SHarry Wentland #define dm_output_to_console(fmt, ...) DRM_DEBUG_KMS(fmt, ##__VA_ARGS__)
534562236bSHarry Wentland 
544562236bSHarry Wentland #define dm_error(fmt, ...) DRM_ERROR(fmt, ##__VA_ARGS__)
554562236bSHarry Wentland 
56*4652ae7aSHarry Wentland #if defined(CONFIG_DRM_AMD_DC_FP)
5796ee6373SRodrigo Siqueira #include "amdgpu_dm/dc_fpu.h"
5896ee6373SRodrigo Siqueira #define DC_FP_START() dc_fpu_begin(__func__, __LINE__)
5996ee6373SRodrigo Siqueira #define DC_FP_END() dc_fpu_end(__func__, __LINE__)
60*4652ae7aSHarry Wentland #endif /* CONFIG_DRM_AMD_DC_FP */
614562236bSHarry Wentland 
6275e68891SHarry Wentland /*
6375e68891SHarry Wentland  *
6475e68891SHarry Wentland  * general debug capabilities
6575e68891SHarry Wentland  *
6675e68891SHarry Wentland  */
67bcc3775dSTakashi Iwai #ifdef CONFIG_DEBUG_KERNEL_DC
68bcc3775dSTakashi Iwai #define dc_breakpoint()		kgdb_breakpoint()
6975e68891SHarry Wentland #else
70bcc3775dSTakashi Iwai #define dc_breakpoint()		do {} while (0)
7175e68891SHarry Wentland #endif
7275e68891SHarry Wentland 
73bcc3775dSTakashi Iwai #define ASSERT_CRITICAL(expr) do {		\
74bcc3775dSTakashi Iwai 		if (WARN_ON(!(expr)))		\
75bcc3775dSTakashi Iwai 			dc_breakpoint();	\
76bcc3775dSTakashi Iwai 	} while (0)
7775e68891SHarry Wentland 
78bcc3775dSTakashi Iwai #define ASSERT(expr) do {			\
79bcc3775dSTakashi Iwai 		if (WARN_ON_ONCE(!(expr)))	\
80bcc3775dSTakashi Iwai 			dc_breakpoint();	\
81bcc3775dSTakashi Iwai 	} while (0)
8275e68891SHarry Wentland 
831aad7078SNicholas Kazlauskas #define BREAK_TO_DEBUGGER() \
841aad7078SNicholas Kazlauskas 	do { \
851aad7078SNicholas Kazlauskas 		DRM_DEBUG_DRIVER("%s():%d\n", __func__, __LINE__); \
86bcc3775dSTakashi Iwai 		dc_breakpoint(); \
871aad7078SNicholas Kazlauskas 	} while (0)
8875e68891SHarry Wentland 
8975e68891SHarry Wentland #define DC_ERR(...)  do { \
9075e68891SHarry Wentland 	dm_error(__VA_ARGS__); \
9175e68891SHarry Wentland 	BREAK_TO_DEBUGGER(); \
9275e68891SHarry Wentland } while (0)
9375e68891SHarry Wentland 
944562236bSHarry Wentland #endif /* _OS_TYPES_H_ */
95