Path: blob/master/arch/alpha/include/asm/core_polaris.h
15126 views
#ifndef __ALPHA_POLARIS__H__1#define __ALPHA_POLARIS__H__23#include <linux/types.h>4#include <asm/compiler.h>56/*7* POLARIS is the internal name for a core logic chipset which provides8* memory controller and PCI access for the 21164PC chip based systems.9*10* This file is based on:11*12* Polaris System Controller13* Device Functional Specification14* 22-Jan-9815* Rev. 4.216*17*/1819/* Polaris memory regions */20#define POLARIS_SPARSE_MEM_BASE (IDENT_ADDR + 0xf800000000UL)21#define POLARIS_DENSE_MEM_BASE (IDENT_ADDR + 0xf900000000UL)22#define POLARIS_SPARSE_IO_BASE (IDENT_ADDR + 0xf980000000UL)23#define POLARIS_SPARSE_CONFIG_BASE (IDENT_ADDR + 0xf9c0000000UL)24#define POLARIS_IACK_BASE (IDENT_ADDR + 0xf9f8000000UL)25#define POLARIS_DENSE_IO_BASE (IDENT_ADDR + 0xf9fc000000UL)26#define POLARIS_DENSE_CONFIG_BASE (IDENT_ADDR + 0xf9fe000000UL)2728#define POLARIS_IACK_SC POLARIS_IACK_BASE2930/* The Polaris command/status registers live in PCI Config space for31* bus 0/device 0. As such, they may be bytes, words, or doublewords.32*/33#define POLARIS_W_VENID (POLARIS_DENSE_CONFIG_BASE)34#define POLARIS_W_DEVID (POLARIS_DENSE_CONFIG_BASE+2)35#define POLARIS_W_CMD (POLARIS_DENSE_CONFIG_BASE+4)36#define POLARIS_W_STATUS (POLARIS_DENSE_CONFIG_BASE+6)3738/*39* Data structure for handling POLARIS machine checks:40*/41struct el_POLARIS_sysdata_mcheck {42u_long psc_status;43u_long psc_pcictl0;44u_long psc_pcictl1;45u_long psc_pcictl2;46};4748#ifdef __KERNEL__4950#ifndef __EXTERN_INLINE51#define __EXTERN_INLINE extern inline52#define __IO_EXTERN_INLINE53#endif5455/*56* I/O functions:57*58* POLARIS, the PCI/memory support chipset for the PCA56 (21164PC)59* processors, can use either a sparse address mapping scheme, or the60* so-called byte-word PCI address space, to get at PCI memory and I/O.61*62* However, we will support only the BWX form.63*/6465/*66* Memory functions. Polaris allows all accesses (byte/word67* as well as long/quad) to be done through dense space.68*69* We will only support DENSE access via BWX insns.70*/7172__EXTERN_INLINE void __iomem *polaris_ioportmap(unsigned long addr)73{74return (void __iomem *)(addr + POLARIS_DENSE_IO_BASE);75}7677__EXTERN_INLINE void __iomem *polaris_ioremap(unsigned long addr,78unsigned long size)79{80return (void __iomem *)(addr + POLARIS_DENSE_MEM_BASE);81}8283__EXTERN_INLINE int polaris_is_ioaddr(unsigned long addr)84{85return addr >= POLARIS_SPARSE_MEM_BASE;86}8788__EXTERN_INLINE int polaris_is_mmio(const volatile void __iomem *addr)89{90return (unsigned long)addr < POLARIS_SPARSE_IO_BASE;91}9293#undef __IO_PREFIX94#define __IO_PREFIX polaris95#define polaris_trivial_rw_bw 196#define polaris_trivial_rw_lq 197#define polaris_trivial_io_bw 198#define polaris_trivial_io_lq 199#define polaris_trivial_iounmap 1100#include <asm/io_trivial.h>101102#ifdef __IO_EXTERN_INLINE103#undef __EXTERN_INLINE104#undef __IO_EXTERN_INLINE105#endif106107#endif /* __KERNEL__ */108109#endif /* __ALPHA_POLARIS__H__ */110111112