drm_privacy_screen_consumer.h 1.9 KB

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