drm: allow drm_atomic_print_state() to accept any drm_printer
Currently drm_atomic_print_state() internally allocates and uses a drm_info printer. Allow it to accept any drm_printer type so that the API can be leveraged even for taking drm snapshot. Rename the drm_atomic_print_state() to drm_atomic_print_new_state() so that it reflects its functionality better. changes in v5: - none Reported-by: kernel test robot <lkp@intel.com> Signed-off-by: Abhinav Kumar <abhinavk@codeaurora.org> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> Link: https://lore.kernel.org/r/1618606645-19695-2-git-send-email-abhinavk@codeaurora.org Signed-off-by: Rob Clark <robdclark@chromium.org>
This commit is contained in:
		
							parent
							
								
									f21c8a276c
								
							
						
					
					
						commit
						a4324a7a1c
					
				| @ -1,6 +1,7 @@ | ||||
| /*
 | ||||
|  * Copyright (C) 2014 Red Hat | ||||
|  * Copyright (C) 2014 Intel Corp. | ||||
|  * Copyright (c) 2020-2021, The Linux Foundation. All rights reserved. | ||||
|  * | ||||
|  * Permission is hereby granted, free of charge, to any person obtaining a | ||||
|  * copy of this software and associated documentation files (the "Software"), | ||||
| @ -1608,9 +1609,20 @@ commit: | ||||
| } | ||||
| EXPORT_SYMBOL(__drm_atomic_helper_set_config); | ||||
| 
 | ||||
| void drm_atomic_print_state(const struct drm_atomic_state *state) | ||||
| /**
 | ||||
|  * drm_atomic_print_new_state - prints drm atomic state | ||||
|  * @state: atomic configuration to check | ||||
|  * @p: drm printer | ||||
|  * | ||||
|  * This functions prints the drm atomic state snapshot using the drm printer | ||||
|  * which is passed to it. This snapshot can be used for debugging purposes. | ||||
|  * | ||||
|  * Note that this function looks into the new state objects and hence its not | ||||
|  * safe to be used after the call to drm_atomic_helper_commit_hw_done(). | ||||
|  */ | ||||
| void drm_atomic_print_new_state(const struct drm_atomic_state *state, | ||||
| 		struct drm_printer *p) | ||||
| { | ||||
| 	struct drm_printer p = drm_info_printer(state->dev->dev); | ||||
| 	struct drm_plane *plane; | ||||
| 	struct drm_plane_state *plane_state; | ||||
| 	struct drm_crtc *crtc; | ||||
| @ -1619,17 +1631,23 @@ void drm_atomic_print_state(const struct drm_atomic_state *state) | ||||
| 	struct drm_connector_state *connector_state; | ||||
| 	int i; | ||||
| 
 | ||||
| 	if (!p) { | ||||
| 		DRM_ERROR("invalid drm printer\n"); | ||||
| 		return; | ||||
| 	} | ||||
| 
 | ||||
| 	DRM_DEBUG_ATOMIC("checking %p\n", state); | ||||
| 
 | ||||
| 	for_each_new_plane_in_state(state, plane, plane_state, i) | ||||
| 		drm_atomic_plane_print_state(&p, plane_state); | ||||
| 		drm_atomic_plane_print_state(p, plane_state); | ||||
| 
 | ||||
| 	for_each_new_crtc_in_state(state, crtc, crtc_state, i) | ||||
| 		drm_atomic_crtc_print_state(&p, crtc_state); | ||||
| 		drm_atomic_crtc_print_state(p, crtc_state); | ||||
| 
 | ||||
| 	for_each_new_connector_in_state(state, connector, connector_state, i) | ||||
| 		drm_atomic_connector_print_state(&p, connector_state); | ||||
| 		drm_atomic_connector_print_state(p, connector_state); | ||||
| } | ||||
| EXPORT_SYMBOL(drm_atomic_print_new_state); | ||||
| 
 | ||||
| static void __drm_state_dump(struct drm_device *dev, struct drm_printer *p, | ||||
| 			     bool take_locks) | ||||
|  | ||||
| @ -2,6 +2,7 @@ | ||||
|  * Copyright (C) 2014 Red Hat | ||||
|  * Copyright (C) 2014 Intel Corp. | ||||
|  * Copyright (C) 2018 Intel Corp. | ||||
|  * Copyright (c) 2020, The Linux Foundation. All rights reserved. | ||||
|  * | ||||
|  * Permission is hereby granted, free of charge, to any person obtaining a | ||||
|  * copy of this software and associated documentation files (the "Software"), | ||||
| @ -1321,6 +1322,7 @@ int drm_mode_atomic_ioctl(struct drm_device *dev, | ||||
| 	struct drm_out_fence_state *fence_state; | ||||
| 	int ret = 0; | ||||
| 	unsigned int i, j, num_fences; | ||||
| 	struct drm_printer p = drm_info_printer(dev->dev); | ||||
| 
 | ||||
| 	/* disallow for drivers not supporting atomic: */ | ||||
| 	if (!drm_core_check_feature(dev, DRIVER_ATOMIC)) | ||||
| @ -1453,7 +1455,7 @@ retry: | ||||
| 		ret = drm_atomic_nonblocking_commit(state); | ||||
| 	} else { | ||||
| 		if (drm_debug_enabled(DRM_UT_STATE)) | ||||
| 			drm_atomic_print_state(state); | ||||
| 			drm_atomic_print_new_state(state, &p); | ||||
| 
 | ||||
| 		ret = drm_atomic_commit(state); | ||||
| 	} | ||||
|  | ||||
| @ -5,6 +5,7 @@ | ||||
|  *   Jesse Barnes <jesse.barnes@intel.com> | ||||
|  * Copyright © 2014 Intel Corporation | ||||
|  *   Daniel Vetter <daniel.vetter@ffwll.ch> | ||||
|  * Copyright (c) 2020, The Linux Foundation. All rights reserved. | ||||
|  * | ||||
|  * Permission is hereby granted, free of charge, to any person obtaining a | ||||
|  * copy of this software and associated documentation files (the "Software"), | ||||
| @ -236,7 +237,8 @@ int __drm_atomic_helper_disable_plane(struct drm_plane *plane, | ||||
| int __drm_atomic_helper_set_config(struct drm_mode_set *set, | ||||
| 				   struct drm_atomic_state *state); | ||||
| 
 | ||||
| void drm_atomic_print_state(const struct drm_atomic_state *state); | ||||
| void drm_atomic_print_new_state(const struct drm_atomic_state *state, | ||||
| 		struct drm_printer *p); | ||||
| 
 | ||||
| /* drm_atomic_uapi.c */ | ||||
| int drm_atomic_connector_commit_dpms(struct drm_atomic_state *state, | ||||
|  | ||||
| @ -8,6 +8,7 @@ | ||||
| #include <drm/drm_device.h> | ||||
| #include <drm/drm_mode.h> | ||||
| #include <drm/drm_fourcc.h> | ||||
| #include <drm/drm_print.h> | ||||
| 
 | ||||
| #include "../drm_crtc_internal.h" | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user