msm_vidc_state.h 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. /* SPDX-License-Identifier: GPL-2.0-only */
  2. /*
  3. * Copyright (c) 2020-2021, The Linux Foundation. All rights reserved.
  4. * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
  5. */
  6. #ifndef _MSM_VIDC_STATE_H_
  7. #define _MSM_VIDC_STATE_H_
  8. #include "msm_vidc_internal.h"
  9. struct msm_vidc_core;
  10. #define FOREACH_CORE_STATE(CORE_STATE) { \
  11. CORE_STATE(CORE_DEINIT) \
  12. CORE_STATE(CORE_INIT_WAIT) \
  13. CORE_STATE(CORE_INIT) \
  14. CORE_STATE(CORE_ERROR) \
  15. }
  16. enum msm_vidc_core_state FOREACH_CORE_STATE(GENERATE_MSM_VIDC_ENUM);
  17. enum msm_vidc_core_sub_state {
  18. CORE_SUBSTATE_NONE = 0x0,
  19. CORE_SUBSTATE_POWER_ENABLE = BIT(0),
  20. CORE_SUBSTATE_GDSC_HANDOFF = BIT(1),
  21. CORE_SUBSTATE_PM_SUSPEND = BIT(2),
  22. CORE_SUBSTATE_FW_PWR_CTRL = BIT(3),
  23. CORE_SUBSTATE_PAGE_FAULT = BIT(4),
  24. CORE_SUBSTATE_CPU_WATCHDOG = BIT(5),
  25. CORE_SUBSTATE_VIDEO_UNRESPONSIVE = BIT(6),
  26. CORE_SUBSTATE_MAX = BIT(7),
  27. };
  28. enum msm_vidc_core_event_type {
  29. CORE_EVENT_NONE = BIT(0),
  30. CORE_EVENT_UPDATE_SUB_STATE = BIT(1),
  31. };
  32. struct msm_vidc_core_state_handle {
  33. enum msm_vidc_core_state state;
  34. int (*handle)(struct msm_vidc_core *core,
  35. enum msm_vidc_core_event_type type,
  36. struct msm_vidc_event_data *data);
  37. };
  38. enum msm_vidc_allow msm_vidc_allow_core_state_change(
  39. struct msm_vidc_core *core, enum msm_vidc_core_state req_state);
  40. int msm_vidc_update_core_state(struct msm_vidc_core *core,
  41. enum msm_vidc_core_state request_state, const char *func);
  42. bool core_in_valid_state(struct msm_vidc_core *core);
  43. bool is_core_state(struct msm_vidc_core *core, enum msm_vidc_core_state state);
  44. bool is_core_sub_state(struct msm_vidc_core *core,
  45. enum msm_vidc_core_sub_state sub_state);
  46. const char *core_state_name(enum msm_vidc_core_state state);
  47. const char *core_sub_state_name(enum msm_vidc_core_sub_state sub_state);
  48. #endif // _MSM_VIDC_STATE_H_