• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /netgear-WNDR4500v2-V1.0.0.60_1.0.38/src/linux/linux-2.6/include/asm-arm/arch-ns9xxx/
1/*
2 * include/asm-arm/arch-ns9xxx/hardware.h
3 *
4 * Copyright (C) 2006 by Digi International Inc.
5 * All rights reserved.
6 *
7 * This program is free software; you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License version 2 as published by
9 * the Free Software Foundation.
10 */
11#ifndef __ASM_ARCH_HARDWARE_H
12#define __ASM_ARCH_HARDWARE_H
13
14#include <asm/memory.h>
15
16/*
17 * NetSilicon NS9xxx internal mapping:
18 *
19 * physical                <--> virtual
20 * 0x90000000 - 0x906fffff <--> 0xf9000000 - 0xf96fffff
21 * 0xa0100000 - 0xa0afffff <--> 0xfa100000 - 0xfaafffff
22 */
23#define io_p2v(x)	(0xf0000000 \
24			 + (((x) & 0xf0000000) >> 4) \
25			 + ((x) & 0x00ffffff))
26
27#define io_v2p(x)	((((x) & 0x0f000000) << 4) \
28			 + ((x) & 0x00ffffff))
29
30#define __REGBIT(bit)		((u32)1 << (bit))
31#define __REGBITS(hbit, lbit)	((((u32)1 << ((hbit) - (lbit) + 1)) - 1) << (lbit))
32#define __REGVAL(mask, value)	(((value) * ((mask) & (-(mask))) & (mask)))
33
34#ifndef __ASSEMBLY__
35
36#  define __REG(x)	(*((volatile u32 *)io_p2v((x))))
37#  define __REG2(x, y)	(*((volatile u32 *)io_p2v((x)) + (y)))
38
39#  define __REGB(x)	(*((volatile u8 *)io_p2v((x))))
40#  define __REGB2(x)	(*((volatile u8 *)io_p2v((x)) + (y)))
41
42#  define REGSET(var, reg, field, value)				\
43	((var) = (((var)						\
44		   & ~(reg ## _ ## field & 				\
45		       ~ reg ## _ ## field ## _ ## value))		\
46		  | (reg ## _ ## field ## _ ## value)))
47
48#  define REGSETIM(var, reg, field, value)				\
49	((var) = (((var)						\
50		   & ~(reg ## _ ## field & 				\
51		       ~(__REGVAL(reg ## _ ## field, value))))		\
52		  | (__REGVAL(reg ## _ ## field, value))))
53
54#  define REGGET(var, reg, field)					\
55	((var & (reg ## _ ## field)) /					\
56	 ((reg ## _ ## field) & (-(reg ## _ ## field))))
57
58#else
59
60#  define __REG(x)	io_p2v(x)
61#  define __REG2(x, y)	io_p2v((x) + (y))
62
63#  define __REGB(x)	__REG((x))
64#  define __REGB2(x, y)	__REG2((x), (y))
65
66#endif
67
68#endif /* ifndef __ASM_ARCH_HARDWARE_H */
69