1/*
2 * Copyright (c) 2008 Zhang Le <r0bertz@gentoo.org>
3 * Copyright (c) 2009 Wu Zhangjin <wuzhangjin@gmail.com>
4 *
5 * This program is free software; you can redistribute it
6 * and/or modify it under the terms of the GNU General
7 * Public License as published by the Free Software
8 * Foundation; either version 2 of the License, or (at your
9 * option) any later version.
10 */
11
12#ifndef __ASM_MACH_LOONGSON_PCI_H_
13#define __ASM_MACH_LOONGSON_PCI_H_
14
15extern struct pci_ops loongson_pci_ops;
16
17/* this is an offset from mips_io_port_base */
18#define LOONGSON_PCI_IO_START	0x00004000UL
19
20#ifdef CONFIG_CPU_SUPPORTS_ADDRWINCFG
21
22/*
23 * we use address window2 to map cpu address space to pci space
24 * window2: cpu [1G, 2G] -> pci [1G, 2G]
25 * why not use window 0 & 1? because they are used by cpu when booting.
26 * window0: cpu [0, 256M] -> ddr [0, 256M]
27 * window1: cpu [256M, 512M] -> pci [256M, 512M]
28 */
29
30/* the smallest LOONGSON_CPU_MEM_SRC can be 512M */
31#define LOONGSON_CPU_MEM_SRC	0x40000000ul		/* 1G */
32#define LOONGSON_PCI_MEM_DST	LOONGSON_CPU_MEM_SRC
33
34#define LOONGSON_PCI_MEM_START	LOONGSON_PCI_MEM_DST
35#define LOONGSON_PCI_MEM_END	(0x80000000ul-1)	/* 2G */
36
37#define MMAP_CPUTOPCI_SIZE	(LOONGSON_PCI_MEM_END - \
38					LOONGSON_PCI_MEM_START + 1)
39
40#else	/* loongson2f/32bit & loongson2e */
41
42/* this pci memory space is mapped by pcimap in pci.c */
43#ifdef CONFIG_CPU_LOONGSON3
44#define LOONGSON_PCI_MEM_START	0x40000000UL
45#define LOONGSON_PCI_MEM_END	0x7effffffUL
46#else
47#define LOONGSON_PCI_MEM_START	LOONGSON_PCILO1_BASE
48#define LOONGSON_PCI_MEM_END	(LOONGSON_PCILO1_BASE + 0x04000000 * 2)
49#endif
50/* this is an offset from mips_io_port_base */
51#define LOONGSON_PCI_IO_START	0x00004000UL
52
53#endif	/* !CONFIG_CPU_SUPPORTS_ADDRWINCFG */
54
55#endif /* !__ASM_MACH_LOONGSON_PCI_H_ */
56