mpic.h 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. /* SPDX-License-Identifier: GPL-2.0-only */
  2. #ifndef _POWERPC_SYSDEV_MPIC_H
  3. #define _POWERPC_SYSDEV_MPIC_H
  4. /*
  5. * Copyright 2006-2007, Michael Ellerman, IBM Corporation.
  6. */
  7. #ifdef CONFIG_PCI_MSI
  8. extern void mpic_msi_reserve_hwirq(struct mpic *mpic, irq_hw_number_t hwirq);
  9. int __init mpic_msi_init_allocator(struct mpic *mpic);
  10. int __init mpic_u3msi_init(struct mpic *mpic);
  11. #else
  12. static inline void mpic_msi_reserve_hwirq(struct mpic *mpic,
  13. irq_hw_number_t hwirq)
  14. {
  15. return;
  16. }
  17. static inline int mpic_u3msi_init(struct mpic *mpic)
  18. {
  19. return -1;
  20. }
  21. #endif
  22. #if defined(CONFIG_PCI_MSI) && defined(CONFIG_PPC_PASEMI)
  23. int __init mpic_pasemi_msi_init(struct mpic *mpic);
  24. #else
  25. static inline int mpic_pasemi_msi_init(struct mpic *mpic) { return -1; }
  26. #endif
  27. extern int mpic_set_irq_type(struct irq_data *d, unsigned int flow_type);
  28. extern void mpic_set_vector(unsigned int virq, unsigned int vector);
  29. extern int mpic_set_affinity(struct irq_data *d,
  30. const struct cpumask *cpumask, bool force);
  31. extern void mpic_reset_core(int cpu);
  32. #ifdef CONFIG_FSL_SOC
  33. extern int mpic_map_error_int(struct mpic *mpic, unsigned int virq, irq_hw_number_t hw);
  34. void __init mpic_err_int_init(struct mpic *mpic, irq_hw_number_t irqnum);
  35. int __init mpic_setup_error_int(struct mpic *mpic, int intvec);
  36. #else
  37. static inline int mpic_map_error_int(struct mpic *mpic, unsigned int virq, irq_hw_number_t hw)
  38. {
  39. return 0;
  40. }
  41. static inline void mpic_err_int_init(struct mpic *mpic, irq_hw_number_t irqnum)
  42. {
  43. return;
  44. }
  45. static inline int mpic_setup_error_int(struct mpic *mpic, int intvec)
  46. {
  47. return -1;
  48. }
  49. #endif
  50. #endif /* _POWERPC_SYSDEV_MPIC_H */