• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/linux/linux-2.6.36/arch/arm/mach-ks8695/include/mach/
1/*
2 * arch/arm/mach-ks8695/include/mach/memory.h
3 *
4 * Copyright (C) 2006 Andrew Victor
5 *
6 * KS8695 Memory definitions
7 *
8 * This file is licensed under  the terms of the GNU General Public
9 * License version 2. This program is licensed "as is" without any
10 * warranty of any kind, whether express or implied.
11 */
12
13#ifndef __ASM_ARCH_MEMORY_H
14#define __ASM_ARCH_MEMORY_H
15
16#include <mach/hardware.h>
17
18/*
19 * Physical SRAM offset.
20 */
21#define PHYS_OFFSET		KS8695_SDRAM_PA
22
23#ifndef __ASSEMBLY__
24
25#ifdef CONFIG_PCI
26
27/* PCI mappings */
28#define __virt_to_bus(x)	((x) - PAGE_OFFSET + KS8695_PCIMEM_PA)
29#define __bus_to_virt(x)	((x) - KS8695_PCIMEM_PA + PAGE_OFFSET)
30
31/* Platform-bus mapping */
32extern struct bus_type platform_bus_type;
33#define is_lbus_device(dev)		(dev && dev->bus == &platform_bus_type)
34#define __arch_dma_to_virt(dev, x)	({ (void *) (is_lbus_device(dev) ? \
35					__phys_to_virt(x) : __bus_to_virt(x)); })
36#define __arch_virt_to_dma(dev, x)	({ is_lbus_device(dev) ? \
37					(dma_addr_t)__virt_to_phys(x) : (dma_addr_t)__virt_to_bus(x); })
38#define __arch_page_to_dma(dev, x)	\
39	({ dma_addr_t __dma = page_to_phys(page); \
40	   if (!is_lbus_device(dev)) \
41		__dma = __dma - PHYS_OFFSET + KS8695_PCIMEM_PA; \
42	   __dma; })
43
44#define __arch_dma_to_page(dev, x)	\
45	({ dma_addr_t __dma = x;				\
46	   if (!is_lbus_device(dev))				\
47		__dma += PHYS_OFFSET - KS8695_PCIMEM_PA;	\
48	   phys_to_page(__dma);					\
49	})
50
51#endif
52
53#endif
54
55#endif
56