netarm_gen_module.h 5.97 KB
Newer Older
Alexander Yurtsev's avatar
Alexander Yurtsev committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186
/*
 * include/asm-armnommu/arch-netarm/netarm_gen_module.h
 *
 * Copyright (C) 2005
 * Art Shipkowski, Videon Central, Inc., <art@videon-central.com>
 *
 * Copyright (C) 2000, 2001 NETsilicon, Inc.
 * Copyright (C) 2000, 2001 Red Hat, Inc.
 *
 * This software is copyrighted by Red Hat. LICENSEE agrees that
 * it will not delete this copyright notice, trademarks or protective
 * notices from any copy made by LICENSEE.
 *
 * This software is provided "AS-IS" and any express or implied
 * warranties or conditions, including but not limited to any
 * implied warranties of merchantability and fitness for a particular
 * purpose regarding this software. In no event shall Red Hat
 * be liable for any indirect, consequential, or incidental damages,
 * loss of profits or revenue, loss of use or data, or interruption
 * of business, whether the alleged damages are labeled in contract,
 * tort, or indemnity.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 *
 * author(s) : Joe deBlaquiere
 *
 * Modified to support NS7520 by Art Shipkowski.
 */

#ifndef __NETARM_GEN_MODULE_REGISTERS_H
#define __NETARM_GEN_MODULE_REGISTERS_H

/* GEN unit register offsets */

#define NETARM_GEN_MODULE_BASE		(0xFFB00000)

#define get_gen_reg_addr(c) ((volatile unsigned int *)(NETARM_GEN_MODULE_BASE + (c)))

#define NETARM_GEN_SYSTEM_CONTROL	(0x00)
#define NETARM_GEN_STATUS_CONTROL	(0x04)
#define NETARM_GEN_PLL_CONTROL		(0x08)
#define NETARM_GEN_SOFTWARE_SERVICE	(0x0c)

#define NETARM_GEN_TIMER1_CONTROL	(0x10)
#define NETARM_GEN_TIMER1_STATUS	(0x14)
#define NETARM_GEN_TIMER2_CONTROL	(0x18)
#define NETARM_GEN_TIMER2_STATUS	(0x1c)

#define NETARM_GEN_PORTA		(0x20)
#ifndef CONFIG_NETARM_NS7520
#define NETARM_GEN_PORTB		(0x24)
#endif
#define NETARM_GEN_PORTC		(0x28)

#define NETARM_GEN_INTR_ENABLE		(0x30)
#define NETARM_GEN_INTR_ENABLE_SET	(0x34)
#define NETARM_GEN_INTR_ENABLE_CLR	(0x38)
#define NETARM_GEN_INTR_STATUS_EN	(0x34)
#define NETARM_GEN_INTR_STATUS_RAW	(0x38)

#define NETARM_GEN_CACHE_CONTROL1	(0x40)
#define NETARM_GEN_CACHE_CONTROL2	(0x44)

/* select bitfield definitions */

/* System Control Register ( 0xFFB0_0000 ) */

#define NETARM_GEN_SYS_CFG_LENDIAN	(0x80000000)
#define NETARM_GEN_SYS_CFG_BENDIAN	(0x00000000)

#define NETARM_GEN_SYS_CFG_BUSQRTR	(0x00000000)
#define NETARM_GEN_SYS_CFG_BUSHALF	(0x20000000)
#define NETARM_GEN_SYS_CFG_BUSFULL	(0x40000000)

#define NETARM_GEN_SYS_CFG_BCLK_DISABLE (0x10000000)

#define NETARM_GEN_SYS_CFG_WDOG_EN	(0x01000000)
#define NETARM_GEN_SYS_CFG_WDOG_IRQ	(0x00000000)
#define NETARM_GEN_SYS_CFG_WDOG_FIQ	(0x00400000)
#define NETARM_GEN_SYS_CFG_WDOG_RST	(0x00800000)
#define NETARM_GEN_SYS_CFG_WDOG_24	(0x00000000)
#define NETARM_GEN_SYS_CFG_WDOG_26	(0x00100000)
#define NETARM_GEN_SYS_CFG_WDOG_28	(0x00200000)
#define NETARM_GEN_SYS_CFG_WDOG_29	(0x00300000)

#define NETARM_GEN_SYS_CFG_BUSMON_EN	(0x00040000)
#define NETARM_GEN_SYS_CFG_BUSMON_128	(0x00000000)
#define NETARM_GEN_SYS_CFG_BUSMON_64	(0x00010000)
#define NETARM_GEN_SYS_CFG_BUSMON_32	(0x00020000)
#define NETARM_GEN_SYS_CFG_BUSMON_16	(0x00030000)

#define NETARM_GEN_SYS_CFG_USER_EN	(0x00008000)
#define NETARM_GEN_SYS_CFG_BUSER_EN	(0x00004000)

#define NETARM_GEN_SYS_CFG_BUSARB_INT	(0x00002000)
#define NETARM_GEN_SYS_CFG_BUSARB_EXT	(0x00000000)

#define NETARM_GEN_SYS_CFG_DMATST	(0x00001000)

#define NETARM_GEN_SYS_CFG_TEALAST	(0x00000800)

#define NETARM_GEN_SYS_CFG_ALIGN_ABORT	(0x00000400)

#define NETARM_GEN_SYS_CFG_CACHE_EN	(0x00000200)

#define NETARM_GEN_SYS_CFG_WRI_BUF_EN	(0x00000100)

#define NETARM_GEN_SYS_CFG_CACHE_INIT	(0x00000080)

/* PLL Control Register ( 0xFFB0_0008 ) */

#define NETARM_GEN_PLL_CTL_PLLCNT_MASK	(0x0F000000)

#define NETARM_GEN_PLL_CTL_PLLCNT(x)	(((x)<<24) & \
					 NETARM_GEN_PLL_CTL_PLLCNT_MASK)

/* Defaults for POLTST and ICP Fields in PLL CTL */
#define NETARM_GEN_PLL_CTL_OUTDIV(x)	(x)
#define NETARM_GEN_PLL_CTL_INDIV(x)	((x)<<6)
#define NETARM_GEN_PLL_CTL_POLTST_DEF	(0x00000E00)
#define NETARM_GEN_PLL_CTL_ICP_DEF	(0x0000003C)


/* Software Service Register ( 0xFFB0_000C ) */

#define NETARM_GEN_SW_SVC_RESETA	(0x123)
#define NETARM_GEN_SW_SVC_RESETB	(0x321)

/* PORT C Register ( 0xFFB0_0028 ) */

#ifndef CONFIG_NETARM_NS7520
#define NETARM_GEN_PORT_MODE(x)		(((x)<<24) + (0xFF00))
#define NETARM_GEN_PORT_DIR(x)		(((x)<<16) + (0xFF00))
#else
#define NETARM_GEN_PORT_MODE(x)		((x)<<24)
#define NETARM_GEN_PORT_DIR(x)		((x)<<16)
#define NETARM_GEN_PORT_CSF(x)		((x)<<8)
#endif

/* Timer Registers ( 0xFFB0_0010 0xFFB0_0018 ) */

#define NETARM_GEN_TCTL_ENABLE		(0x80000000)
#define NETARM_GEN_TCTL_INT_ENABLE	(0x40000000)

#define NETARM_GEN_TCTL_USE_IRQ		(0x00000000)
#define NETARM_GEN_TCTL_USE_FIQ		(0x20000000)

#define NETARM_GEN_TCTL_USE_PRESCALE	(0x10000000)
#define NETARM_GEN_TCTL_INIT_COUNT(x)	((x) & 0x1FF)

#define NETARM_GEN_TSTAT_INTPEN		(0x40000000)
#if ~defined(CONFIG_NETARM_NS7520)
#define NETARM_GEN_TSTAT_CTC_MASK	(0x000001FF)
#else
#define NETARM_GEN_TSTAT_CTC_MASK	(0x0FFFFFFF)
#endif

/* prescale to msecs conversion */

#if !defined(CONFIG_NETARM_PLL_BYPASS)
#define NETARM_GEN_TIMER_MSEC_P(x)	( ( ( 20480 ) * ( 0x1FF - ( (x) &	    \
					    NETARM_GEN_TSTAT_CTC_MASK ) +   \
					    1 ) ) / (NETARM_XTAL_FREQ/1000) )

#define NETARM_GEN_TIMER_SET_HZ(x)	( ( ((NETARM_XTAL_FREQ/(20480*(x)))-1) & \
					  NETARM_GEN_TSTAT_CTC_MASK ) | \
					  NETARM_GEN_TCTL_USE_PRESCALE )

#else
#define NETARM_GEN_TIMER_MSEC_P(x)	( ( ( 4096 ) * ( 0x1FF - ( (x) &    \
					    NETARM_GEN_TSTAT_CTC_MASK ) +   \
					    1 ) ) / (NETARM_XTAL_FREQ/1000) )

#define NETARM_GEN_TIMER_SET_HZ(x)	( ( ((NETARM_XTAL_FREQ/(4096*(x)))-1) & \
					  NETARM_GEN_TSTAT_CTC_MASK ) | \
					  NETARM_GEN_TCTL_USE_PRESCALE )
#endif

#endif