loki.h 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. // SPDX-License-Identifier: GPL-2.0+
  2. /*
  3. * Fenrir's Loki header
  4. */
  5. #ifndef LOKI_H
  6. #define LOKI_H
  7. #define DEVICE_NAME "loki_intc"
  8. #define REG_LOKI_EXTERNAL_RESET (0x0084)
  9. #define REG_LOKI_INTERRUPT_STATUS (0x0100)
  10. #define REG_LOKI_INTERRUPT_ENABLE (0x0104)
  11. #define REG_LOKI_INTERRUPT_CLR (0x010C)
  12. #define REG_LOKI_INTERRUPT_TEST (0x0110)
  13. #define REG_LOKI_INTERRUPT_TIMEOUT_CLR (0x0114)
  14. #define REG_LOKI_INTERRUPT_TIMEOUT (0x0118)
  15. #define REG_LOKI_MEMIF_CACHE_SET (0x0230)
  16. #define REG_LOKI_MEMIF_PROT_SET (0x0234)
  17. /* interrupt bits definitions */
  18. #define LOKI_INTERRUPT_MASTER_ENABLE (1 << 31)
  19. #define LOKI_INTERRUPT_TESTINT (1 << 30)
  20. #define LOKI_INTERRUPT_DUT0 (1 << 0)
  21. #define LOKI_INTERRUPT_BASE (LOKI_INTERRUPT_MASTER_ENABLE | LOKI_INTERRUPT_TESTINT)
  22. struct loki_intc_drvdata {
  23. struct irq_domain *domain;
  24. int irq_num;
  25. };
  26. struct loki_drvdata {
  27. void __iomem *regbase;
  28. unsigned int (*readreg32)(struct loki_drvdata *pdata, unsigned long offset);
  29. void (*writereg32)(struct loki_drvdata *pdata, unsigned long offset, int val);
  30. struct loki_intc_drvdata intc;
  31. };
  32. int loki_intc_probe(struct platform_device *pdev);
  33. int loki_intc_remove(struct platform_device *pdev);
  34. #endif /* LOKI_H */