1 /* SPDX-License-Identifier: MIT */
2 /*
3  * Copyright (C) 2020 Red Hat, Inc.
4  *
5  * Authors:
6  * Hans de Goede <hdegoede@redhat.com>
7  */
8 
9 #ifndef __DRM_PRIVACY_SCREEN_CONSUMER_H__
10 #define __DRM_PRIVACY_SCREEN_CONSUMER_H__
11 
12 #include <linux/device.h>
13 #include <drm/drm_connector.h>
14 
15 struct drm_privacy_screen;
16 
17 #if IS_ENABLED(CONFIG_DRM_PRIVACY_SCREEN)
18 struct drm_privacy_screen *drm_privacy_screen_get(struct device *dev,
19 						  const char *con_id);
20 void drm_privacy_screen_put(struct drm_privacy_screen *priv);
21 
22 int drm_privacy_screen_set_sw_state(struct drm_privacy_screen *priv,
23 				    enum drm_privacy_screen_status sw_state);
24 void drm_privacy_screen_get_state(struct drm_privacy_screen *priv,
25 				  enum drm_privacy_screen_status *sw_state_ret,
26 				  enum drm_privacy_screen_status *hw_state_ret);
27 #else
28 static inline struct drm_privacy_screen *drm_privacy_screen_get(struct device *dev,
29 								const char *con_id)
30 {
31 	return ERR_PTR(-ENODEV);
32 }
33 static inline void drm_privacy_screen_put(struct drm_privacy_screen *priv)
34 {
35 }
36 static inline int drm_privacy_screen_set_sw_state(struct drm_privacy_screen *priv,
37 						  enum drm_privacy_screen_status sw_state)
38 {
39 	return -ENODEV;
40 }
41 static inline void drm_privacy_screen_get_state(struct drm_privacy_screen *priv,
42 						enum drm_privacy_screen_status *sw_state_ret,
43 						enum drm_privacy_screen_status *hw_state_ret)
44 {
45 	*sw_state_ret = PRIVACY_SCREEN_DISABLED;
46 	*hw_state_ret = PRIVACY_SCREEN_DISABLED;
47 }
48 #endif
49 
50 #endif
51