sec_panel_notifier_v2.h 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. // SPDX-License-Identifier: GPL-2.0
  2. /*
  3. * Copyright (c) Samsung Electronics Co., Ltd.
  4. *
  5. * This program is free software; you can redistribute it and/or modify
  6. * it under the terms of the GNU General Public License version 2 as
  7. * published by the Free Software Foundation.
  8. */
  9. #ifndef __SEC_PANEL_NOTIFIER_V2_H__
  10. #define __SEC_PANEL_NOTIFIER_V2_H__
  11. #include <linux/notifier.h>
  12. enum panel_notifier_event_t {
  13. PANEL_EVENT_BL_STATE_CHANGED,
  14. PANEL_EVENT_VRR_STATE_CHANGED,
  15. PANEL_EVENT_LFD_STATE_CHANGED,
  16. PANEL_EVENT_PANEL_STATE_CHANGED,
  17. PANEL_EVENT_UB_CON_STATE_CHANGED,
  18. PANEL_EVENT_COPR_STATE_CHANGED,
  19. PANEL_EVENT_TEST_MODE_STATE_CHANGED,
  20. PANEL_EVENT_SCREEN_MODE_STATE_CHANGED,
  21. PANEL_EVENT_ESD_STATE_CHANGED,
  22. MAX_PANEL_EVENT,
  23. };
  24. enum panel_notifier_event_state_t {
  25. PANEL_EVENT_STATE_NONE,
  26. /* PANEL_EVENT_BL_STATE_CHANGED */
  27. /* PANEL_EVENT_VRR_STATE_CHANGED */
  28. /* PANEL_EVENT_LFD_STATE_CHANGED */
  29. /* PANEL_EVENT_PANEL_STATE_CHANGED */
  30. PANEL_EVENT_PANEL_STATE_OFF,
  31. PANEL_EVENT_PANEL_STATE_ON,
  32. PANEL_EVENT_PANEL_STATE_LPM,
  33. /* PANEL_EVENT_UB_CON_STATE_CHANGED */
  34. PANEL_EVENT_UB_CON_STATE_CONNECTED,
  35. PANEL_EVENT_UB_CON_STATE_DISCONNECTED,
  36. /* PANEL_EVENT_COPR_STATE_CHANGED */
  37. PANEL_EVENT_COPR_STATE_DISABLED,
  38. PANEL_EVENT_COPR_STATE_ENABLED,
  39. /* PANEL_EVENT_TEST_MODE_STATE_CHANGED */
  40. PANEL_EVENT_TEST_MODE_STATE_NONE,
  41. PANEL_EVENT_TEST_MODE_STATE_GCT,
  42. /* PANEL_EVENT_SCREEN_MODE_STATE_CHANGED */
  43. /* PANEL_EVENT_ESD_STATE_CHANGED */
  44. MAX_PANEL_EVENT_STATE,
  45. };
  46. struct panel_event_bl_data {
  47. int level;
  48. int aor;
  49. int finger_mask_hbm_on;
  50. int acl_status;
  51. int gradual_acl_val;
  52. };
  53. /* dms: display modes */
  54. struct panel_event_dms_data {
  55. int fps;
  56. int lfd_min_freq;
  57. int lfd_max_freq;
  58. };
  59. struct panel_notifier_event_data {
  60. /* base */
  61. unsigned int display_index;
  62. /* state */
  63. enum panel_notifier_event_state_t state;
  64. /* additional data */
  65. union {
  66. struct panel_event_bl_data bl;
  67. struct panel_event_dms_data dms;
  68. unsigned int screen_mode;
  69. } d;
  70. };
  71. #if IS_ENABLED(CONFIG_SEC_PANEL_NOTIFIER_V2)
  72. extern int panel_notifier_register(struct notifier_block *nb);
  73. extern int panel_notifier_unregister(struct notifier_block *nb);
  74. extern int panel_notifier_call_chain(unsigned long val, void *v);
  75. #else
  76. static inline int panel_notifier_register(struct notifier_block *nb)
  77. {
  78. return 0;
  79. };
  80. static inline int panel_notifier_unregister(struct notifier_block *nb)
  81. {
  82. return 0;
  83. };
  84. static inline int panel_notifier_call_chain(unsigned long val, void *v)
  85. {
  86. return 0;
  87. };
  88. #endif /* CONFIG_SEC_PANEL_NOTIFIER_V2 */
  89. #endif /* __SEC_PANEL_NOTIFIER_V2_H__ */