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