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 | |
28 | int drm_privacy_screen_register_notifier(struct drm_privacy_screen *priv, |
29 | struct notifier_block *nb); |
30 | int drm_privacy_screen_unregister_notifier(struct drm_privacy_screen *priv, |
31 | struct notifier_block *nb); |
32 | #else |
33 | static inline struct drm_privacy_screen *drm_privacy_screen_get(struct device *dev, |
34 | const char *con_id) |
35 | { |
36 | return ERR_PTR(-ENODEV); |
37 | } |
38 | static inline void drm_privacy_screen_put(struct drm_privacy_screen *priv) |
39 | { |
40 | } |
41 | static inline int drm_privacy_screen_set_sw_state(struct drm_privacy_screen *priv, |
42 | enum drm_privacy_screen_status sw_state) |
43 | { |
44 | return -ENODEV; |
45 | } |
46 | static inline void drm_privacy_screen_get_state(struct drm_privacy_screen *priv, |
47 | enum drm_privacy_screen_status *sw_state_ret, |
48 | enum drm_privacy_screen_status *hw_state_ret) |
49 | { |
50 | *sw_state_ret = PRIVACY_SCREEN_DISABLED; |
51 | *hw_state_ret = PRIVACY_SCREEN_DISABLED; |
52 | } |
53 | static inline int drm_privacy_screen_register_notifier(struct drm_privacy_screen *priv, |
54 | struct notifier_block *nb) |
55 | { |
56 | return -ENODEV; |
57 | } |
58 | static inline int drm_privacy_screen_unregister_notifier(struct drm_privacy_screen *priv, |
59 | struct notifier_block *nb) |
60 | { |
61 | return -ENODEV; |
62 | } |
63 | #endif |
64 | |
65 | #endif |
66 | |