mtkdcs_drv.c 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. #define pr_fmt(fmt) "["KBUILD_MODNAME"]" fmt
  2. #include <linux/module.h>
  3. #include <linux/kernel.h>
  4. #include <linux/device.h>
  5. #include <linux/slab.h>
  6. #include <linux/printk.h>
  7. /* Memory lowpower private header file */
  8. #include "../internal.h"
  9. /*
  10. * config - data collection, trigger LPDMA (4->2)
  11. */
  12. static int mtkdcs_config(int times, get_range_t func)
  13. {
  14. pr_debug("%s:+\n", __func__);
  15. /* Trigger LPDMA (4 -> 2) */
  16. pr_debug("%s:-\n", __func__);
  17. return 0;
  18. }
  19. /*
  20. * enable - Notify PowerMCU to turn off high channels
  21. */
  22. static int mtkdcs_enable(void)
  23. {
  24. pr_debug("%s:+\n", __func__);
  25. /* Turn off high channels */
  26. pr_debug("%s:-\n", __func__);
  27. return 0;
  28. }
  29. /*
  30. * disable - Notify PowerMCU to turn on high channels (May needless)
  31. */
  32. static int mtkdcs_disable(void)
  33. {
  34. pr_debug("%s:+\n", __func__);
  35. /* Turn on high channels */
  36. pr_debug("%s:-\n", __func__);
  37. return 0;
  38. }
  39. /*
  40. * restore - trigger LPDMA (2->4)
  41. */
  42. static int mtkdcs_restore(void)
  43. {
  44. pr_debug("%s:+\n", __func__);
  45. /* Trigger LPDMA (2 -> 4) */
  46. pr_debug("%s:-\n", __func__);
  47. return 0;
  48. }
  49. static struct memory_lowpower_operation mtkdcs_handler = {
  50. .level = MLP_LEVEL_DCS,
  51. .config = mtkdcs_config,
  52. .enable = mtkdcs_enable,
  53. .disable = mtkdcs_disable,
  54. .restore = mtkdcs_restore,
  55. };
  56. static int __init mtkdcs_init(void)
  57. {
  58. pr_debug("%s ++\n", __func__);
  59. /* Register feature operations */
  60. register_memory_lowpower_operation(&mtkdcs_handler);
  61. pr_debug("%s --\n", __func__);
  62. return 0;
  63. }
  64. static void __exit mtkdcs_exit(void)
  65. {
  66. unregister_memory_lowpower_operation(&mtkdcs_handler);
  67. }
  68. late_initcall(mtkdcs_init);
  69. module_exit(mtkdcs_exit);