blob: 23a1bd7657885d93025942d7d16fc73ca36a957f [file] [log] [blame]
/*
* This file is subject to the terms and conditions of the GNU General Public
* License. See the file "COPYING" in the main directory of this archive
* for more details.
*
* Copyright (C) 2009 Broadcom Corporation
*/
#ifndef _ASM_MACH_BRCMSTB_SPACES_H
#define _ASM_MACH_BRCMSTB_SPACES_H
#include <linux/const.h>
/***********************************************************************
* Kernel virtual address space
***********************************************************************/
#if !defined(CONFIG_BRCM_UPPER_MEMORY)
/*
* 256MB standard MIPS32 virtual address map
*
* 8000_0000 - 8fff_ffff: lower 256MB, cached mapping
* 9000_0000 - 9fff_ffff: EBI/registers, cached mapping (unused)
* a000_0000 - afff_ffff: lower 256MB, uncached mapping
* b000_0000 - bfff_ffff: EBI/registers, uncached mapping
* c000_0000 - ff1f_7fff: vmalloc region
* ff1f_8000 - ff1f_ffff: FIXMAP
*/
#define KSEG0_SIZE _AC(0x20000000, UL)
#define KSEG1_SIZE _AC(0x20000000, UL)
#define MAP_BASE _AC(0xc0000000, UL)
#define FIXADDR_TOP _AC(0xff200000, UL)
#define BRCM_MAX_UPPER_MB _AC(0, UL)
#elif defined(CONFIG_BRCM_UPPER_768MB)
/*
* 1024MB Broadcom 256+768 virtual address map
*
* 8000_0000 - 8fff_ffff: 256MB RAM @ 0000_0000, cached
* 9000_0000 - 9fff_ffff: 256MB EBI/Registers @ 1000_0000, uncached
* a000_0000 - cfff_ffff: 768MB RAM @ 2000_0000, cached
* d000_0000 - dfff_ffff: TBD
* e000_0000 - ff1f_7fff: vmalloc region
* ff1f_8000 - ff1f_ffff: FIXMAP
* ff40_0000 - ff7f_ffff: CONSISTENT region
*
* PA 5000_0000 and above are accessed through HIGHMEM (BMIPS5000 only).
*/
#define TLB_UPPERMEM_VA _AC(0xc0000000, UL)
#define TLB_UPPERMEM_PA _AC(0x40000000, UL)
#define KSEG0_SIZE _AC(0x40000000, UL)
#define KSEG1_SIZE _AC(0x00000000, UL)
#define MAP_BASE _AC(0xe0000000, UL)
#define FIXADDR_TOP _AC(0xff200000, UL)
/* BASE and END must be 4MB-aligned (PGDIR_SIZE) */
#define CONSISTENT_BASE _AC(0xff400000, UL)
#define CONSISTENT_END _AC(0xff800000, UL)
#define BRCM_MAX_UPPER_MB _AC(768, UL)
#endif /* CONFIG_BRCM_UPPER_MEMORY */
/***********************************************************************
* Physical / PCI address space
***********************************************************************/
#ifdef CONFIG_BRCM_HAS_2GB_MEMC0
/*
* Physical address map for 2GB MEMC0
*
* 0000_0000 - 0fff_ffff: MEMC0 (256MB)
* 1000_0000 - 1fff_ffff: EBI/Registers (256MB)
* 2000_0000 - 8fff_ffff: MEMC0 (1792MB)
* 9000_0000 - cfff_ffff: MEMC1 (1024MB)
* d000_0000 - efff_ffff: PCIe MEM BARs (512MB)
*
* PCIe inbound BAR:
*
* 0000_0000 - 0fff_ffff: MEMC0 (256MB @ 0000_0000)
* 1000_0000 - 7fff_ffff: MEMC0 (1792MB @ 2000_0000)
* 8000_0000 - bfff_ffff: MEMC1 (1024MB @ 9000_0000)
*/
#define PCI_MEM_START _AC(0xdeadbeef, UL)
#define PCI_MEM_SIZE _AC(0xdeadbeef, UL)
#define PCI_IO_START _AC(0xffff0000, UL)
#define PCI_IO_SIZE _AC(0x00001000, UL)
#define PCIE_MEM_START _AC(0xd0000000, UL)
#define PCIE_MEM_SIZE _AC(0x20000000, UL)
#define MEMC1_START _AC(0x90000000, UL)
#define MEMC1_PCI_OFFSET _AC(0x10000000, UL)
#else /* CONFIG_BRCM_HAS_2GB_MEMC0 */
/*
* Physical address map for <= 1GB MEMC0
*
* 0000_0000 - 0fff_ffff: MEMC0 (256MB)
* 1000_0000 - 1fff_ffff: EBI/Registers (256MB)
* 2000_0000 - 4fff_ffff: MEMC0 (768MB)
* 6000_0000 - 7fff_ffff: MEMC1 (512MB)
* a000_0000 - bfff_ffff: PCIe MEM BARs (512MB)
* d000_0000 - efff_ffff: PCI2.3 MEM BARs (512MB)
* f000_0000 - f05f_ffff: PCI2.3 IO BARs (6MB)
* f000_0000 - f060_000b: PCI2.3 Configuration access (12B)
* f100_0000 - f100_001f: PCIe Configuration access - 7420 only (32B)
*
* PCI2.3/PCIe inbound BAR:
*
* 0000_0000 - 0fff_ffff: MEMC0 (256MB @ 0000_0000)
* 1000_0000 - 3fff_ffff: MEMC0 (768MB @ 2000_0000)
* 4000_0000 - 7fff_ffff: MEMC1 (1024MB @ 6000_0000) (not currently implemented)
*/
#define PCI_MEM_START _AC(0xd0000000, UL)
#define PCI_MEM_SIZE _AC(0x20000000, UL)
/* this is really 6MB long, but 32k ought to be enough for anyone */
#define PCI_IO_START _AC(0xf0000000, UL)
#define PCI_IO_SIZE _AC(0x00008000, UL)
#define PCI_IO_ACTUAL_SIZE _AC(0x00600000, UL)
#define PCI_IO_REG_START _AC(0xf0600000, UL)
#define PCI_IO_REG_SIZE _AC(0x0000000c, UL)
#define PCIE_MEM_START _AC(0xa0000000, UL)
#define PCIE_MEM_SIZE _AC(0x20000000, UL)
#define MEMC1_START _AC(0x60000000, UL)
#define MEMC1_PCI_OFFSET _AC(0x20000000, UL)
#endif /* CONFIG_BRCM_HAS_2GB_MEMC0 */
#define UPPERMEM_START _AC(0x20000000, UL)
#define HIGHMEM_START (UPPERMEM_START + (BRCM_MAX_UPPER_MB << 20))
#define BRCM_PCI_HOLE_START _AC(0x10000000, UL)
#define BRCM_PCI_HOLE_SIZE _AC(0x10000000, UL)
#define BRCM_MAX_LOWER_MB _AC(256, UL)
#include <asm/mach-generic/spaces.h>
#endif /* _ASM_MACH_BRCMSTB_SPACES_H */