video.h 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. #ifndef __ACPI_VIDEO_H
  2. #define __ACPI_VIDEO_H
  3. #include <linux/errno.h> /* for ENODEV */
  4. #include <linux/types.h> /* for bool */
  5. struct acpi_video_brightness_flags {
  6. u8 _BCL_no_ac_battery_levels:1; /* no AC/Battery levels in _BCL */
  7. u8 _BCL_reversed:1; /* _BCL package is in a reversed order */
  8. u8 _BQC_use_index:1; /* _BQC returns an index value */
  9. };
  10. struct acpi_video_device_brightness {
  11. int curr;
  12. int count;
  13. int *levels;
  14. struct acpi_video_brightness_flags flags;
  15. };
  16. struct acpi_device;
  17. #define ACPI_VIDEO_CLASS "video"
  18. #define ACPI_VIDEO_DISPLAY_CRT 1
  19. #define ACPI_VIDEO_DISPLAY_TV 2
  20. #define ACPI_VIDEO_DISPLAY_DVI 3
  21. #define ACPI_VIDEO_DISPLAY_LCD 4
  22. #define ACPI_VIDEO_DISPLAY_LEGACY_MONITOR 0x0100
  23. #define ACPI_VIDEO_DISPLAY_LEGACY_PANEL 0x0110
  24. #define ACPI_VIDEO_DISPLAY_LEGACY_TV 0x0200
  25. #define ACPI_VIDEO_NOTIFY_SWITCH 0x80
  26. #define ACPI_VIDEO_NOTIFY_PROBE 0x81
  27. #define ACPI_VIDEO_NOTIFY_CYCLE 0x82
  28. #define ACPI_VIDEO_NOTIFY_NEXT_OUTPUT 0x83
  29. #define ACPI_VIDEO_NOTIFY_PREV_OUTPUT 0x84
  30. #define ACPI_VIDEO_NOTIFY_CYCLE_BRIGHTNESS 0x85
  31. #define ACPI_VIDEO_NOTIFY_INC_BRIGHTNESS 0x86
  32. #define ACPI_VIDEO_NOTIFY_DEC_BRIGHTNESS 0x87
  33. #define ACPI_VIDEO_NOTIFY_ZERO_BRIGHTNESS 0x88
  34. #define ACPI_VIDEO_NOTIFY_DISPLAY_OFF 0x89
  35. enum acpi_backlight_type {
  36. acpi_backlight_undef = -1,
  37. acpi_backlight_none = 0,
  38. acpi_backlight_video,
  39. acpi_backlight_vendor,
  40. acpi_backlight_native,
  41. };
  42. #if IS_ENABLED(CONFIG_ACPI_VIDEO)
  43. extern int acpi_video_register(void);
  44. extern void acpi_video_unregister(void);
  45. extern int acpi_video_get_edid(struct acpi_device *device, int type,
  46. int device_id, void **edid);
  47. extern enum acpi_backlight_type acpi_video_get_backlight_type(void);
  48. extern void acpi_video_set_dmi_backlight_type(enum acpi_backlight_type type);
  49. /*
  50. * Note: The value returned by acpi_video_handles_brightness_key_presses()
  51. * may change over time and should not be cached.
  52. */
  53. extern bool acpi_video_handles_brightness_key_presses(void);
  54. extern int acpi_video_get_levels(struct acpi_device *device,
  55. struct acpi_video_device_brightness **dev_br,
  56. int *pmax_level);
  57. #else
  58. static inline int acpi_video_register(void) { return -ENODEV; }
  59. static inline void acpi_video_unregister(void) { return; }
  60. static inline int acpi_video_get_edid(struct acpi_device *device, int type,
  61. int device_id, void **edid)
  62. {
  63. return -ENODEV;
  64. }
  65. static inline enum acpi_backlight_type acpi_video_get_backlight_type(void)
  66. {
  67. return acpi_backlight_vendor;
  68. }
  69. static inline void acpi_video_set_dmi_backlight_type(enum acpi_backlight_type type)
  70. {
  71. }
  72. static inline bool acpi_video_handles_brightness_key_presses(void)
  73. {
  74. return false;
  75. }
  76. static inline int acpi_video_get_levels(struct acpi_device *device,
  77. struct acpi_video_device_brightness **dev_br,
  78. int *pmax_level)
  79. {
  80. return -ENODEV;
  81. }
  82. #endif
  83. #endif