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