irq.c 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. /*
  2. * Copyright (C) 2016 Imagination Technologies
  3. * Author: Paul Burton <paul.burton@imgtec.com>
  4. *
  5. * This program is free software; you can redistribute it and/or modify it
  6. * under the terms of the GNU General Public License as published by the
  7. * Free Software Foundation; either version 2 of the License, or (at your
  8. * option) any later version.
  9. */
  10. #include <linux/clk.h>
  11. #include <linux/clk-provider.h>
  12. #include <linux/clocksource.h>
  13. #include <linux/init.h>
  14. #include <linux/types.h>
  15. #include <asm/irq.h>
  16. #include <asm/mips-cps.h>
  17. #include <asm/time.h>
  18. int get_c0_fdc_int(void)
  19. {
  20. int mips_cpu_fdc_irq;
  21. if (cpu_has_veic)
  22. panic("Unimplemented!");
  23. else if (mips_gic_present())
  24. mips_cpu_fdc_irq = gic_get_c0_fdc_int();
  25. else if (cp0_fdc_irq >= 0)
  26. mips_cpu_fdc_irq = MIPS_CPU_IRQ_BASE + cp0_fdc_irq;
  27. else
  28. mips_cpu_fdc_irq = -1;
  29. return mips_cpu_fdc_irq;
  30. }
  31. int get_c0_perfcount_int(void)
  32. {
  33. int mips_cpu_perf_irq;
  34. if (cpu_has_veic)
  35. panic("Unimplemented!");
  36. else if (mips_gic_present())
  37. mips_cpu_perf_irq = gic_get_c0_perfcount_int();
  38. else if (cp0_perfcount_irq >= 0)
  39. mips_cpu_perf_irq = MIPS_CPU_IRQ_BASE + cp0_perfcount_irq;
  40. else
  41. mips_cpu_perf_irq = -1;
  42. return mips_cpu_perf_irq;
  43. }
  44. unsigned int get_c0_compare_int(void)
  45. {
  46. int mips_cpu_timer_irq;
  47. if (cpu_has_veic)
  48. panic("Unimplemented!");
  49. else if (mips_gic_present())
  50. mips_cpu_timer_irq = gic_get_c0_compare_int();
  51. else
  52. mips_cpu_timer_irq = MIPS_CPU_IRQ_BASE + cp0_compare_irq;
  53. return mips_cpu_timer_irq;
  54. }