mmrm_internal.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. /* SPDX-License-Identifier: GPL-2.0-only */
  2. /*
  3. * Copyright (c) 2020-2021, The Linux Foundation. All rights reserved.
  4. */
  5. #ifndef _MMRM_INTERNAL_H_
  6. #define _MMRM_INTERNAL_H_
  7. #include <linux/device.h>
  8. #include <linux/types.h>
  9. #include "mmrm_resources.h"
  10. #include "mmrm_clk_rsrc_mgr.h"
  11. struct mmrm_common_data {
  12. char key[128];
  13. int value;
  14. };
  15. struct mmrm_throttle_clients_data {
  16. u32 domain;
  17. u32 id;
  18. };
  19. struct mmrm_platform_data {
  20. struct mmrm_common_data *common_data;
  21. struct mmrm_throttle_clients_data *throttle_clk_clients_data;
  22. u32 common_data_length;
  23. u16 throttle_clk_clients_data_length;
  24. u32 scheme;
  25. };
  26. struct mmrm_driver_data {
  27. /* platform data */
  28. struct mmrm_platform_data *platform_data;
  29. /* clk */
  30. bool is_clk_scaling_supported;
  31. struct mmrm_clk_platform_resources clk_res;
  32. struct mmrm_clk_mgr *clk_mgr;
  33. struct mmrm_clk_mgr_ops *clk_mgr_ops;
  34. /* debugfs */
  35. struct dentry *debugfs_root;
  36. };
  37. struct mmrm_platform_data *mmrm_get_platform_data(struct device *dev);
  38. int mmrm_count_clk_clients_frm_dt(struct platform_device *pdev);
  39. int mmrm_read_platform_resources(
  40. struct platform_device *pdev,
  41. struct mmrm_driver_data *drv_data);
  42. int mmrm_free_platform_resources(struct mmrm_driver_data *drv_data);
  43. int mmrm_init(struct mmrm_driver_data *drv_data);
  44. int mmrm_deinit(struct mmrm_driver_data *drv_data);
  45. #endif //_MMRM_INTERNAL_H_