accdet_drv.c 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. #include <accdet.h>
  2. static struct platform_driver accdet_driver;
  3. static int debug_enable_drv = 1;
  4. #define ACCDET_DEBUG_DRV(format, args...) pr_warn(format, ##args)
  5. static long accdet_unlocked_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
  6. {
  7. return mt_accdet_unlocked_ioctl(cmd, arg);
  8. }
  9. static int accdet_open(struct inode *inode, struct file *file)
  10. {
  11. return 0;
  12. }
  13. static int accdet_release(struct inode *inode, struct file *file)
  14. {
  15. return 0;
  16. }
  17. static const struct file_operations accdet_fops = {
  18. .owner = THIS_MODULE,
  19. .unlocked_ioctl = accdet_unlocked_ioctl,
  20. .open = accdet_open,
  21. .release = accdet_release,
  22. };
  23. const struct file_operations *accdet_get_fops(void)
  24. {
  25. return &accdet_fops;
  26. }
  27. static int accdet_probe(struct platform_device *dev)
  28. {
  29. return mt_accdet_probe(dev);
  30. }
  31. static int accdet_remove(struct platform_device *dev)
  32. {
  33. mt_accdet_remove();
  34. return 0;
  35. }
  36. static int accdet_suspend(struct device *device)
  37. { /* wake up */
  38. mt_accdet_suspend();
  39. return 0;
  40. }
  41. static int accdet_resume(struct device *device)
  42. { /* wake up */
  43. mt_accdet_resume();
  44. return 0;
  45. }
  46. /**********************************************************************
  47. //add for IPO-H need update headset state when resume
  48. ***********************************************************************/
  49. #ifdef CONFIG_PM
  50. static int accdet_pm_restore_noirq(struct device *device)
  51. {
  52. mt_accdet_pm_restore_noirq();
  53. return 0;
  54. }
  55. struct of_device_id accdet_of_match[] = {
  56. { .compatible = "mediatek,mt6735-accdet", },
  57. { .compatible = "mediatek,mt6755-accdet", },
  58. { .compatible = "mediatek,mt6580-accdet", },
  59. { .compatible = "mediatek,mt8173-accdet", },
  60. { .compatible = "mediatek,mt8163-accdet", },
  61. { .compatible = "mediatek,mt6797-accdet", },
  62. {},
  63. };
  64. static const struct dev_pm_ops accdet_pm_ops = {
  65. .suspend = accdet_suspend,
  66. .resume = accdet_resume,
  67. .restore_noirq = accdet_pm_restore_noirq,
  68. };
  69. #endif
  70. static struct platform_driver accdet_driver = {
  71. .probe = accdet_probe,
  72. /* .suspend = accdet_suspend, */
  73. /* .resume = accdet_resume, */
  74. .remove = accdet_remove,
  75. .driver = {
  76. .name = "Accdet_Driver",
  77. #ifdef CONFIG_PM
  78. .pm = &accdet_pm_ops,
  79. #endif
  80. .of_match_table = accdet_of_match,
  81. },
  82. };
  83. struct platform_driver accdet_driver_func(void)
  84. {
  85. return accdet_driver;
  86. }
  87. static int accdet_mod_init(void)
  88. {
  89. int ret = 0;
  90. ACCDET_DEBUG_DRV("[Accdet]accdet_mod_init begin!\n");
  91. ret = platform_driver_register(&accdet_driver);
  92. if (ret)
  93. ACCDET_DEBUG_DRV("[Accdet]platform_driver_register error:(%d)\n", ret);
  94. else
  95. ACCDET_DEBUG_DRV("[Accdet]platform_driver_register done!\n");
  96. ACCDET_DEBUG_DRV("[Accdet]accdet_mod_init done!\n");
  97. return ret;
  98. }
  99. static void accdet_mod_exit(void)
  100. {
  101. ACCDET_DEBUG_DRV("[Accdet]accdet_mod_exit\n");
  102. platform_driver_unregister(&accdet_driver);
  103. ACCDET_DEBUG_DRV("[Accdet]accdet_mod_exit Done!\n");
  104. }
  105. /*Patch for CR ALPS00804150 & ALPS00804802 PMIC temp not correct issue*/
  106. int accdet_cable_type_state(void)
  107. {
  108. /* ACCDET_DEBUG("[ACCDET] accdet_cable_type_state=%d\n",accdet_get_cable_type()); */
  109. return accdet_get_cable_type();
  110. }
  111. EXPORT_SYMBOL(accdet_cable_type_state);
  112. /*Patch for CR ALPS00804150 & ALPS00804802 PMIC temp not correct issue*/
  113. module_init(accdet_mod_init);
  114. module_exit(accdet_mod_exit);
  115. module_param(debug_enable_drv, int, 0644);
  116. MODULE_DESCRIPTION("MTK MT6588 ACCDET driver");
  117. MODULE_AUTHOR("Anny <Anny.Hu@mediatek.com>");
  118. MODULE_LICENSE("GPL");