Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: MIT */
0002 /*
0003  * Copyright (C) 2020 Red Hat, Inc.
0004  *
0005  * Authors:
0006  * Hans de Goede <hdegoede@redhat.com>
0007  */
0008 
0009 #ifndef __DRM_PRIVACY_SCREEN_CONSUMER_H__
0010 #define __DRM_PRIVACY_SCREEN_CONSUMER_H__
0011 
0012 #include <linux/device.h>
0013 #include <drm/drm_connector.h>
0014 
0015 struct drm_privacy_screen;
0016 
0017 #if IS_ENABLED(CONFIG_DRM_PRIVACY_SCREEN)
0018 struct drm_privacy_screen *drm_privacy_screen_get(struct device *dev,
0019                           const char *con_id);
0020 void drm_privacy_screen_put(struct drm_privacy_screen *priv);
0021 
0022 int drm_privacy_screen_set_sw_state(struct drm_privacy_screen *priv,
0023                     enum drm_privacy_screen_status sw_state);
0024 void drm_privacy_screen_get_state(struct drm_privacy_screen *priv,
0025                   enum drm_privacy_screen_status *sw_state_ret,
0026                   enum drm_privacy_screen_status *hw_state_ret);
0027 
0028 int drm_privacy_screen_register_notifier(struct drm_privacy_screen *priv,
0029                      struct notifier_block *nb);
0030 int drm_privacy_screen_unregister_notifier(struct drm_privacy_screen *priv,
0031                        struct notifier_block *nb);
0032 #else
0033 static inline struct drm_privacy_screen *drm_privacy_screen_get(struct device *dev,
0034                                 const char *con_id)
0035 {
0036     return ERR_PTR(-ENODEV);
0037 }
0038 static inline void drm_privacy_screen_put(struct drm_privacy_screen *priv)
0039 {
0040 }
0041 static inline int drm_privacy_screen_set_sw_state(struct drm_privacy_screen *priv,
0042                           enum drm_privacy_screen_status sw_state)
0043 {
0044     return -ENODEV;
0045 }
0046 static inline void drm_privacy_screen_get_state(struct drm_privacy_screen *priv,
0047                         enum drm_privacy_screen_status *sw_state_ret,
0048                         enum drm_privacy_screen_status *hw_state_ret)
0049 {
0050     *sw_state_ret = PRIVACY_SCREEN_DISABLED;
0051     *hw_state_ret = PRIVACY_SCREEN_DISABLED;
0052 }
0053 static inline int drm_privacy_screen_register_notifier(struct drm_privacy_screen *priv,
0054                                struct notifier_block *nb)
0055 {
0056     return -ENODEV;
0057 }
0058 static inline int drm_privacy_screen_unregister_notifier(struct drm_privacy_screen *priv,
0059                              struct notifier_block *nb)
0060 {
0061     return -ENODEV;
0062 }
0063 #endif
0064 
0065 #endif