wcd-irq.h 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. /* SPDX-License-Identifier: GPL-2.0-only */
  2. /*
  3. * Copyright (c) 2018, The Linux Foundation. All rights reserved.
  4. */
  5. #ifndef __WCD_IRQ_H_
  6. #define __WCD_IRQ_H_
  7. #include <linux/types.h>
  8. #include <linux/interrupt.h>
  9. #include <linux/regmap.h>
  10. struct wcd_irq_info {
  11. struct regmap_irq_chip *wcd_regmap_irq_chip;
  12. char *codec_name;
  13. struct regmap *regmap;
  14. struct regmap_irq_chip_data *irq_chip;
  15. struct device *dev;
  16. };
  17. #if (IS_ENABLED(CONFIG_WCD9XXX_CODEC_CORE) | \
  18. IS_ENABLED(CONFIG_WCD9XXX_CODEC_CORE_V2))
  19. int wcd_irq_init(struct wcd_irq_info *irq_info, struct irq_domain **virq);
  20. int wcd_irq_exit(struct wcd_irq_info *irq_info, struct irq_domain *virq);
  21. int wcd_request_irq(struct wcd_irq_info *irq_info, int irq, const char *name,
  22. irq_handler_t handler, void *data);
  23. void wcd_free_irq(struct wcd_irq_info *irq_info, int irq, void *data);
  24. void wcd_enable_irq(struct wcd_irq_info *irq_info, int irq);
  25. void wcd_disable_irq(struct wcd_irq_info *irq_info, int irq);
  26. #else
  27. static inline int wcd_irq_init(struct wcd_irq_info *irq_info,
  28. struct irq_domain **virq)
  29. {
  30. return 0;
  31. };
  32. static inline int wcd_irq_exit(struct wcd_irq_info *irq_info,
  33. struct irq_domain *virq)
  34. {
  35. return 0;
  36. };
  37. static inline int wcd_request_irq(struct wcd_irq_info *irq_info,
  38. int irq, const char *name,
  39. irq_handler_t handler, void *data)
  40. {
  41. return 0;
  42. };
  43. static inline void wcd_free_irq(struct wcd_irq_info *irq_info, int irq, void *data);
  44. {
  45. };
  46. static inline void wcd_enable_irq(struct wcd_irq_info *irq_info, int irq);
  47. {
  48. };
  49. static inline void wcd_disable_irq(struct wcd_irq_info *irq_info, int irq);
  50. {
  51. };
  52. #endif
  53. #endif /* __WCD_IRQ_H_ */