1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- /*
- * Marvel systems use the IO7 I/O chip provides PCI/PCIX/AGP access
- *
- * This file is based on:
- *
- * Marvel / EV7 System Programmer's Manual
- * Revision 1.00
- * 14 May 2001
- */
- #ifndef __ALPHA_MARVEL__H__
- #define __ALPHA_MARVEL__H__
- #include <linux/types.h>
- #include <linux/spinlock.h>
- #include <asm/compiler.h>
- #define MARVEL_MAX_PIDS 32 /* as long as we rely on 43-bit superpage */
- #define MARVEL_IRQ_VEC_PE_SHIFT (10)
- #define MARVEL_IRQ_VEC_IRQ_MASK ((1 << MARVEL_IRQ_VEC_PE_SHIFT) - 1)
- #define MARVEL_NR_IRQS \
- (16 + (MARVEL_MAX_PIDS * (1 << MARVEL_IRQ_VEC_PE_SHIFT)))
- /*
- * EV7 RBOX Registers
- */
- typedef struct {
- volatile unsigned long csr __attribute__((aligned(16)));
- } ev7_csr;
- typedef struct {
- ev7_csr RBOX_CFG; /* 0x0000 */
- ev7_csr RBOX_NSVC;
- ev7_csr RBOX_EWVC;
- ev7_csr RBOX_WHAMI;
- ev7_csr RBOX_TCTL; /* 0x0040 */
- ev7_csr RBOX_INT;
- ev7_csr RBOX_IMASK;
- ev7_csr RBOX_IREQ;
- ev7_csr RBOX_INTQ; /* 0x0080 */
- ev7_csr RBOX_INTA;
- ev7_csr RBOX_IT;
- ev7_csr RBOX_SCRATCH1;
- ev7_csr RBOX_SCRATCH2; /* 0x00c0 */
- ev7_csr RBOX_L_ERR;
- } ev7_csrs;
- /*
- * EV7 CSR addressing macros
- */
- #define EV7_MASK40(addr) ((addr) & ((1UL << 41) - 1))
- #define EV7_KERN_ADDR(addr) ((void *)(IDENT_ADDR | EV7_MASK40(addr)))
- #define EV7_PE_MASK 0x1ffUL /* 9 bits ( 256 + mem/io ) */
- #define EV7_IPE(pe) ((~((long)(pe)) & EV7_PE_MASK) << 35)
- #define EV7_CSR_PHYS(pe, off) (EV7_IPE(pe) | (0x7FFCUL << 20) | (off))
- #define EV7_CSRS_PHYS(pe) (EV7_CSR_PHYS(pe, 0UL))
- #define EV7_CSR_KERN(pe, off) (EV7_KERN_ADDR(EV7_CSR_PHYS(pe, off)))
- #define EV7_CSRS_KERN(pe) (EV7_KERN_ADDR(EV7_CSRS_PHYS(pe)))
- #define EV7_CSR_OFFSET(name) ((unsigned long)&((ev7_csrs *)NULL)->name.csr)
- /*
- * IO7 registers
- */
|