memoryDefinitionSynchronousData.h 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. /*
  2. * Marvel systems use the IO7 I/O chip provides PCI/PCIX/AGP access
  3. *
  4. * This file is based on:
  5. *
  6. * Marvel / EV7 System Programmer's Manual
  7. * Revision 1.00
  8. * 14 May 2001
  9. */
  10. #ifndef __ALPHA_MARVEL__H__
  11. #define __ALPHA_MARVEL__H__
  12. #include <linux/types.h>
  13. #include <linux/spinlock.h>
  14. #include <asm/compiler.h>
  15. #define MARVEL_MAX_PIDS 32 /* as long as we rely on 43-bit superpage */
  16. #define MARVEL_IRQ_VEC_PE_SHIFT (10)
  17. #define MARVEL_IRQ_VEC_IRQ_MASK ((1 << MARVEL_IRQ_VEC_PE_SHIFT) - 1)
  18. #define MARVEL_NR_IRQS \
  19. (16 + (MARVEL_MAX_PIDS * (1 << MARVEL_IRQ_VEC_PE_SHIFT)))
  20. /*
  21. * EV7 RBOX Registers
  22. */
  23. typedef struct {
  24. volatile unsigned long csr __attribute__((aligned(16)));
  25. } ev7_csr;
  26. typedef struct {
  27. ev7_csr RBOX_CFG; /* 0x0000 */
  28. ev7_csr RBOX_NSVC;
  29. ev7_csr RBOX_EWVC;
  30. ev7_csr RBOX_WHAMI;
  31. ev7_csr RBOX_TCTL; /* 0x0040 */
  32. ev7_csr RBOX_INT;
  33. ev7_csr RBOX_IMASK;
  34. ev7_csr RBOX_IREQ;
  35. ev7_csr RBOX_INTQ; /* 0x0080 */
  36. ev7_csr RBOX_INTA;
  37. ev7_csr RBOX_IT;
  38. ev7_csr RBOX_SCRATCH1;
  39. ev7_csr RBOX_SCRATCH2; /* 0x00c0 */
  40. ev7_csr RBOX_L_ERR;
  41. } ev7_csrs;
  42. /*
  43. * EV7 CSR addressing macros
  44. */
  45. #define EV7_MASK40(addr) ((addr) & ((1UL << 41) - 1))
  46. #define EV7_KERN_ADDR(addr) ((void *)(IDENT_ADDR | EV7_MASK40(addr)))
  47. #define EV7_PE_MASK 0x1ffUL /* 9 bits ( 256 + mem/io ) */
  48. #define EV7_IPE(pe) ((~((long)(pe)) & EV7_PE_MASK) << 35)
  49. #define EV7_CSR_PHYS(pe, off) (EV7_IPE(pe) | (0x7FFCUL << 20) | (off))
  50. #define EV7_CSRS_PHYS(pe) (EV7_CSR_PHYS(pe, 0UL))
  51. #define EV7_CSR_KERN(pe, off) (EV7_KERN_ADDR(EV7_CSR_PHYS(pe, off)))
  52. #define EV7_CSRS_KERN(pe) (EV7_KERN_ADDR(EV7_CSRS_PHYS(pe)))
  53. #define EV7_CSR_OFFSET(name) ((unsigned long)&((ev7_csrs *)NULL)->name.csr)
  54. /*
  55. * IO7 registers
  56. */