spear-shirq.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. /*
  2. * SPEAr platform shared irq layer header file
  3. *
  4. * Copyright (C) 2009-2012 ST Microelectronics
  5. * Viresh Kumar <viresh.linux@gmail.com>
  6. *
  7. * This file is licensed under the terms of the GNU General Public
  8. * License version 2. This program is licensed "as is" without any
  9. * warranty of any kind, whether express or implied.
  10. */
  11. #ifndef __SPEAR_SHIRQ_H
  12. #define __SPEAR_SHIRQ_H
  13. #include <linux/irq.h>
  14. #include <linux/types.h>
  15. /*
  16. * struct shirq_regs: shared irq register configuration
  17. *
  18. * enb_reg: enable register offset
  19. * reset_to_enb: val 1 indicates, we need to clear bit for enabling interrupt
  20. * status_reg: status register offset
  21. * status_reg_mask: status register valid mask
  22. * clear_reg: clear register offset
  23. * reset_to_clear: val 1 indicates, we need to clear bit for clearing interrupt
  24. */
  25. struct shirq_regs {
  26. u32 enb_reg;
  27. u32 reset_to_enb;
  28. u32 status_reg;
  29. u32 clear_reg;
  30. u32 reset_to_clear;
  31. };
  32. /*
  33. * struct spear_shirq: shared irq structure
  34. *
  35. * irq: hardware irq number
  36. * irq_base: base irq in linux domain
  37. * irq_nr: no. of shared interrupts in a particular block
  38. * irq_bit_off: starting bit offset in the status register
  39. * invalid_irq: irq group is currently disabled
  40. * base: base address of shared irq register
  41. * regs: register configuration for shared irq block
  42. */
  43. struct spear_shirq {
  44. u32 irq;
  45. u32 irq_base;
  46. u32 irq_nr;
  47. u32 irq_bit_off;
  48. int invalid_irq;
  49. void __iomem *base;
  50. struct shirq_regs regs;
  51. };
  52. int __init spear300_shirq_of_init(struct device_node *np,
  53. struct device_node *parent);
  54. int __init spear310_shirq_of_init(struct device_node *np,
  55. struct device_node *parent);
  56. int __init spear320_shirq_of_init(struct device_node *np,
  57. struct device_node *parent);
  58. #endif /* __SPEAR_SHIRQ_H */