Home | History | Annotate | Line # | Download | only in include
adm5120reg.h revision 1.1.44.1
      1  1.1.44.1    yamt /*	$NetBSD: adm5120reg.h,v 1.1.44.1 2008/05/16 02:22:48 yamt Exp $	*/
      2       1.1  dyoung 
      3       1.1  dyoung /*-
      4       1.1  dyoung  * Copyright (c) 2007 Ruslan Ermilov and Vsevolod Lobko.
      5       1.1  dyoung  * All rights reserved.
      6       1.1  dyoung  *
      7       1.1  dyoung  * Redistribution and use in source and binary forms, with or
      8       1.1  dyoung  * without modification, are permitted provided that the following
      9       1.1  dyoung  * conditions are met:
     10       1.1  dyoung  * 1. Redistributions of source code must retain the above copyright
     11       1.1  dyoung  *    notice, this list of conditions and the following disclaimer.
     12       1.1  dyoung  * 2. Redistributions in binary form must reproduce the above
     13       1.1  dyoung  *    copyright notice, this list of conditions and the following
     14       1.1  dyoung  *    disclaimer in the documentation and/or other materials provided
     15       1.1  dyoung  *    with the distribution.
     16       1.1  dyoung  * 3. The names of the authors may not be used to endorse or promote
     17       1.1  dyoung  *    products derived from this software without specific prior
     18       1.1  dyoung  *    written permission.
     19       1.1  dyoung  *
     20       1.1  dyoung  * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY
     21       1.1  dyoung  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
     22       1.1  dyoung  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
     23       1.1  dyoung  * PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS
     24       1.1  dyoung  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
     25       1.1  dyoung  * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
     26       1.1  dyoung  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
     27       1.1  dyoung  * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     28       1.1  dyoung  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
     29       1.1  dyoung  * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
     30       1.1  dyoung  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
     31       1.1  dyoung  * OF SUCH DAMAGE.
     32       1.1  dyoung  */
     33       1.1  dyoung /*-
     34       1.1  dyoung  * Copyright (c) 2001 The NetBSD Foundation, Inc.
     35       1.1  dyoung  * All rights reserved.
     36       1.1  dyoung  *
     37       1.1  dyoung  * This code is derived from software contributed to The NetBSD Foundation
     38       1.1  dyoung  * by Jason R. Thorpe.
     39       1.1  dyoung  *
     40       1.1  dyoung  * Redistribution and use in source and binary forms, with or without
     41       1.1  dyoung  * modification, are permitted provided that the following conditions
     42       1.1  dyoung  * are met:
     43       1.1  dyoung  * 1. Redistributions of source code must retain the above copyright
     44       1.1  dyoung  *    notice, this list of conditions and the following disclaimer.
     45       1.1  dyoung  * 2. Redistributions in binary form must reproduce the above copyright
     46       1.1  dyoung  *    notice, this list of conditions and the following disclaimer in the
     47       1.1  dyoung  *    documentation and/or other materials provided with the distribution.
     48       1.1  dyoung  *
     49       1.1  dyoung  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
     50       1.1  dyoung  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
     51       1.1  dyoung  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     52       1.1  dyoung  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
     53       1.1  dyoung  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     54       1.1  dyoung  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     55       1.1  dyoung  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     56       1.1  dyoung  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     57       1.1  dyoung  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     58       1.1  dyoung  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     59       1.1  dyoung  * POSSIBILITY OF SUCH DAMAGE.
     60       1.1  dyoung  */
     61       1.1  dyoung 
     62       1.1  dyoung #ifndef _ADM5120REG_H_
     63       1.1  dyoung #define _ADM5120REG_H_
     64       1.1  dyoung 
     65       1.1  dyoung /*
     66       1.1  dyoung  * Memory map and register definitions for the Alchemy Semiconductor Pb1000.
     67       1.1  dyoung  */
     68       1.1  dyoung 
     69       1.1  dyoung /* Last byte of physical address space. */
     70       1.1  dyoung #define	ADM5120_TOP			0x1fffffff
     71       1.1  dyoung #define	ADM5120_BOTTOM			0x0
     72       1.1  dyoung 
     73       1.1  dyoung /* Flash addresses */
     74       1.1  dyoung #define	ADM5120_BASE_SRAM0		0x1fc00000
     75       1.1  dyoung 
     76       1.1  dyoung /* UARTs */
     77       1.1  dyoung #define ADM5120_BASE_UART1		0x12800000
     78       1.1  dyoung #define ADM5120_BASE_UART0		0x12600000
     79       1.1  dyoung 
     80       1.1  dyoung /* ICU */
     81       1.1  dyoung #define	ADM5120_BASE_ICU		0x12200000
     82       1.1  dyoung #define		ICU_STATUS_REG		0x00
     83       1.1  dyoung #define		ICU_RAW_STATUS_REG	0x04
     84       1.1  dyoung #define		ICU_ENABLE_REG		0x08
     85       1.1  dyoung #define		ICU_DISABLE_REG		0x0c
     86       1.1  dyoung #define		ICU_SOFT_REG		0x10
     87       1.1  dyoung #define		ICU_MODE_REG		0x14
     88       1.1  dyoung #define		ICU_FIQ_STATUS_REG	0x18
     89       1.1  dyoung #define		ICU_TESTSRC_REG		0x1c
     90       1.1  dyoung #define		ICU_SRCSEL_REG		0x20
     91       1.1  dyoung #define		ICU_LEVEL_REG		0x24
     92       1.1  dyoung #define		ICU_INT_MASK		0x3ff
     93       1.1  dyoung 
     94       1.1  dyoung /* Switch */
     95       1.1  dyoung #define	ADM5120_BASE_SWITCH		0x12000000
     96       1.1  dyoung #define		SW_CODE_REG		0x00
     97       1.1  dyoung #define			CLKS_MASK		0x00300000
     98       1.1  dyoung #define			CLKS_175MHZ		0x00000000
     99       1.1  dyoung #define			CLKS_200MHZ		0x00100000
    100       1.1  dyoung #define		SW_SFTRES_REG		0x04
    101       1.1  dyoung #define		SW_MEMCONT_REG		0x1c
    102       1.1  dyoung #define			SDRAM_SIZE_4MBYTES	0x0001
    103       1.1  dyoung #define			SDRAM_SIZE_8MBYTES	0x0002
    104       1.1  dyoung #define			SDRAM_SIZE_16MBYTES	0x0003
    105       1.1  dyoung #define			SDRAM_SIZE_64MBYTES	0x0004
    106       1.1  dyoung #define			SDRAM_SIZE_128MBYTES	0x0005
    107       1.1  dyoung #define			SDRAM_SIZE_MASK		0x0007
    108       1.1  dyoung #define			SRAM0_SIZE_SHIFT	8
    109       1.1  dyoung #define			SRAM1_SIZE_SHIFT	16
    110       1.1  dyoung #define			SRAM_MASK		0x0007
    111       1.1  dyoung #define			SRAM_SSIZE		0x40000
    112       1.1  dyoung 
    113       1.1  dyoung #define	ADM5120_BASE_PCI_CONFDATA	0x115ffff8
    114       1.1  dyoung #define	ADM5120_BASE_PCI_CONFADDR	0x115ffff0
    115       1.1  dyoung #define	ADM5120_BASE_PCI_IO		0x11500000
    116       1.1  dyoung #define	ADM5120_BASE_PCI_MEM		0x11400000
    117       1.1  dyoung #define	ADM5120_BASE_USB		0x11200000
    118       1.1  dyoung #define	ADM5120_BASE_MPMC		0x11000000
    119       1.1  dyoung #define	ADM5120_BASE_EXTIO1		0x10e00000
    120       1.1  dyoung #define	ADM5120_BASE_EXTIO0		0x10c00000
    121       1.1  dyoung #define	ADM5120_BASE_RSVD0		0x10800000
    122       1.1  dyoung #define	ADM5120_BASE_SRAM1		0x10000000
    123       1.1  dyoung 
    124       1.1  dyoung #define	_REG_READ(b, o)	*((volatile uint32_t *)MIPS_PHYS_TO_KSEG1((b) + (o)))
    125       1.1  dyoung #define	SW_READ(o)	_REG_READ(ADM5120_BASE_SWITCH, o)
    126       1.1  dyoung 
    127       1.1  dyoung #define	_REG_WRITE(b, o, v)	(_REG_READ(b, o)) = (v)
    128       1.1  dyoung #define	SW_WRITE(o, v)	_REG_WRITE(ADM5120_BASE_SWITCH,o, v)
    129       1.1  dyoung 
    130       1.1  dyoung /* USB */
    131       1.1  dyoung 
    132       1.1  dyoung /* Watchdog Timers: base address is switch controller */
    133       1.1  dyoung 
    134       1.1  dyoung #define	ADM5120_WDOG0			0x00c0
    135       1.1  dyoung #define	ADM5120_WDOG1			0x00c4
    136       1.1  dyoung 
    137       1.1  dyoung #define	ADM5120_WDOG0_WTTR	__BIT(31)	/* 0: do not reset,
    138       1.1  dyoung 						 * 1: reset on wdog expiration
    139       1.1  dyoung 						 */
    140       1.1  dyoung #define	ADM5120_WDOG1_WDE	__BIT(31)	/* 0: deactivate,
    141       1.1  dyoung 						 * 1: drop all CPU-bound
    142       1.1  dyoung 						 * packets, disable flow
    143       1.1  dyoung 						 * control on all ports.
    144       1.1  dyoung 						 */
    145       1.1  dyoung #define	ADM5120_WDOG_WTS_MASK	__BITS(30, 16)	/* Watchdog Timer Set:
    146       1.1  dyoung 						 * timer expires when it
    147       1.1  dyoung 						 * reaches WTS.  Units of
    148       1.1  dyoung 						 * 10ms.
    149       1.1  dyoung 						 */
    150       1.1  dyoung #define	ADM5120_WDOG_RSVD	__BIT(15)
    151       1.1  dyoung #define	ADM5120_WDOG_WT_MASK	__BITS(14, 0)	/* Watchdog Timer:
    152       1.1  dyoung 						 * counts up, write to clear.
    153       1.1  dyoung 						 */
    154       1.1  dyoung 
    155       1.1  dyoung /* GPIO: base address is switch controller */
    156       1.1  dyoung #define	ADM5120_GPIO0			0x00b8
    157       1.1  dyoung 
    158       1.1  dyoung #define	ADM5120_GPIO0_OV	__BITS(31, 24)	/* rw: output value */
    159       1.1  dyoung #define	ADM5120_GPIO0_OE	__BITS(23, 16)	/* rw: output enable,
    160       1.1  dyoung 						 * bit[n] = 0 -> input
    161       1.1  dyoung 						 * bit[n] = 1 -> output
    162       1.1  dyoung 						 */
    163       1.1  dyoung #define	ADM5120_GPIO0_IV	__BITS(15, 8)	/* ro: input value */
    164       1.1  dyoung #define	ADM5120_GPIO0_RSVD	__BITS(7, 0)	/* rw: reserved */
    165       1.1  dyoung 
    166       1.1  dyoung #define	ADM5120_GPIO2			0x00bc
    167       1.1  dyoung #define	ADM5120_GPIO2_EW	__BIT(6)	/* 1: enable wait state pin,
    168       1.1  dyoung 						 * pin GPIO[0], for GPIO[1]
    169       1.1  dyoung 						 * or GPIO[3] Chip Select:
    170       1.1  dyoung 						 * memory controller waits for
    171       1.1  dyoung 						 * WAIT# inactive (high).
    172       1.1  dyoung 						 */
    173       1.1  dyoung #define	ADM5120_GPIO2_CSX1	__BIT(5)	/* 1: GPIO[3:4] act as
    174       1.1  dyoung 						 * Chip Select for
    175       1.1  dyoung 						 * External I/O 1 (CSX1)
    176       1.1  dyoung 						 * and External Interrupt 1
    177       1.1  dyoung 						 * (INTX1), respectively.
    178       1.1  dyoung 						 * 0: CSX1/INTX1 disabled
    179       1.1  dyoung 						 */
    180       1.1  dyoung #define	ADM5120_GPIO2_CSX0	__BIT(4)	/* 1: GPIO[1:2] act as
    181       1.1  dyoung 						 * Chip Select for
    182       1.1  dyoung 						 * External I/O 0 (CSX0)
    183       1.1  dyoung 						 * and External Interrupt 0
    184       1.1  dyoung 						 * (INTX0), respectively.
    185       1.1  dyoung 						 * 0: CSX0/INTX0 disabled
    186       1.1  dyoung 						 */
    187       1.1  dyoung 
    188       1.1  dyoung /* MultiPort Memory Controller (MPMC) */
    189       1.1  dyoung 
    190       1.1  dyoung #define	ADM5120_MPMC_CONTROL	0x000
    191       1.1  dyoung #define	ADM5120_MPMC_CONTROL_DWB	__BIT(3)	/* write 1 to
    192       1.1  dyoung 							 * drain write
    193       1.1  dyoung 							 * buffers.  write 0
    194       1.1  dyoung 							 * for normal buffer
    195       1.1  dyoung 							 * operation.
    196       1.1  dyoung 							 */
    197       1.1  dyoung #define	ADM5120_MPMC_CONTROL_LPM	__BIT(2)	/* 1: activate low-power
    198       1.1  dyoung 							 * mode.  SDRAM is
    199       1.1  dyoung 							 * still refreshed.
    200       1.1  dyoung 							 */
    201       1.1  dyoung #define	ADM5120_MPMC_CONTROL_AM		__BIT(1)	/* 1: address mirror:
    202       1.1  dyoung 							 * static memory
    203       1.1  dyoung 							 * chip select 0
    204       1.1  dyoung 							 * is mapped to chip
    205       1.1  dyoung 							 * select 1.
    206       1.1  dyoung 							 */
    207       1.1  dyoung #define	ADM5120_MPMC_CONTROL_ME		__BIT(0)	/* 0: disable MPMC.
    208       1.1  dyoung 							 * DRAM is not
    209       1.1  dyoung 							 * refreshed.
    210       1.1  dyoung 							 * 1: enable MPMC.
    211       1.1  dyoung 							 */
    212       1.1  dyoung 
    213       1.1  dyoung #define	ADM5120_MPMC_STATUS	0x004
    214       1.1  dyoung #define	ADM5120_MPMC_STATUS_SRA		__BIT(2)	/* read-only
    215       1.1  dyoung 							 * MPMC operating mode
    216       1.1  dyoung 							 * indication,
    217       1.1  dyoung 							 * 1: self-refresh
    218       1.1  dyoung 							 * acknowledge
    219       1.1  dyoung 							 * 0: normal mode
    220       1.1  dyoung 							 */
    221       1.1  dyoung #define	ADM5120_MPMC_STATUS_WBS		__BIT(1)	/* read-only
    222       1.1  dyoung 							 * write-buffer status,
    223       1.1  dyoung 							 * 0: buffers empty
    224       1.1  dyoung 							 * 1: contain data
    225       1.1  dyoung 							 */
    226       1.1  dyoung #define	ADM5120_MPMC_STATUS_BU		__BIT(0)	/* read-only MPMC
    227       1.1  dyoung 							 * "busy" indication,
    228       1.1  dyoung 							 * 0: MPMC idle
    229       1.1  dyoung 							 * 1: MPMC is performing
    230       1.1  dyoung 							 * memory transactions
    231       1.1  dyoung 							 */
    232       1.1  dyoung 
    233       1.1  dyoung #define	ADM5120_MPMC_SEW	0x080
    234       1.1  dyoung #define	ADM5120_MPMC_SEW_RSVD	__BITS(31, 10)
    235       1.1  dyoung #define	ADM5120_MPMC_SEW_EWTO	__BITS(9, 0)	/* timeout access after
    236       1.1  dyoung 						 * 16 * (n + 1) clock cycles
    237       1.1  dyoung 						 * (XXX which clock?)
    238       1.1  dyoung 						 */
    239       1.1  dyoung 
    240       1.1  dyoung #define	ADM5120_MPMC_SC(__i)	(0x200 + 0x020 * (__i))
    241       1.1  dyoung #define	ADM5120_MPMC_SC_RSVD0	__BITS(31, 21)
    242       1.1  dyoung #define	ADM5120_MPMC_SC_WP	__BIT(20)	/* 1: write protect */
    243       1.1  dyoung #define	ADM5120_MPMC_SC_BE	__BIT(20)	/* 1: enable write buffer */
    244       1.1  dyoung #define	ADM5120_MPMC_SC_RSVD1	__BITS(18, 9)
    245       1.1  dyoung #define	ADM5120_MPMC_SC_EW	__BIT(8)	/* 1: enable extended wait;
    246       1.1  dyoung 						 */
    247       1.1  dyoung #define	ADM5120_MPMC_SC_BLS	__BIT(7)	/* 0: byte line state pins
    248       1.1  dyoung 						 * are active high on read,
    249       1.1  dyoung 						 * active low on write.
    250       1.1  dyoung 						 *
    251       1.1  dyoung 						 * 1: byte line state pins
    252       1.1  dyoung 						 * are active low on read and
    253       1.1  dyoung 						 * on write.
    254       1.1  dyoung 						 */
    255       1.1  dyoung #define	ADM5120_MPMC_SC_CCP	__BIT(6)	/* 0: chip select is active low,
    256       1.1  dyoung 						 * 1: active high
    257       1.1  dyoung 						 */
    258       1.1  dyoung #define	ADM5120_MPMC_SC_RSVD2	__BITS(5, 4)
    259       1.1  dyoung #define	ADM5120_MPMC_SC_PM	__BIT(3)	/* 0: page mode disabled,
    260       1.1  dyoung 						 * 1: enable asynchronous
    261       1.1  dyoung 						 * page mode four
    262       1.1  dyoung 						 */
    263       1.1  dyoung #define	ADM5120_MPMC_SC_RSVD3	__BIT(2)
    264       1.1  dyoung #define	ADM5120_MPMC_SC_MW_MASK	__BITS(1, 0)	/* memory width, bits */
    265       1.1  dyoung #define	ADM5120_MPMC_SC_MW_8B	__SHIFTIN(0, ADM5120_MPMC_SC_MW_MASK)
    266       1.1  dyoung #define	ADM5120_MPMC_SC_MW_16B	__SHIFTIN(1, ADM5120_MPMC_SC_MW_MASK)
    267       1.1  dyoung #define	ADM5120_MPMC_SC_MW_32B	__SHIFTIN(2, ADM5120_MPMC_SC_MW_MASK)
    268       1.1  dyoung #define	ADM5120_MPMC_SC_MW_RSVD	__SHIFTIN(3, ADM5120_MPMC_SC_MW_MASK)
    269       1.1  dyoung 
    270       1.1  dyoung #define	ADM5120_MPMC_SWW(__i)	(0x204 + 0x020 * (__i))
    271       1.1  dyoung #define	ADM5120_MPMC_SWW_RSVD	__BITS(31, 4)
    272       1.1  dyoung #define	ADM5120_MPMC_SWW_WWE	__BITS(3, 0)	/* delay (n + 1) * HCLK cycles
    273       1.1  dyoung 						 * after asserting chip select
    274       1.1  dyoung 						 * (CS) before asserting write
    275       1.1  dyoung 						 * enable (WE)
    276       1.1  dyoung 						 */
    277       1.1  dyoung 
    278       1.1  dyoung #define	ADM5120_MPMC_SWO(__i)	(0x208 + 0x020 * (__i))
    279       1.1  dyoung #define	ADM5120_MPMC_SWO_RSVD	__BITS(31, 4)
    280       1.1  dyoung #define	ADM5120_MPMC_SWO_WOE	__BITS(3, 0)	/* delay n * HCLK cycles
    281       1.1  dyoung 						 * after asserting chip select
    282       1.1  dyoung 						 * before asserting output
    283       1.1  dyoung 						 * enable (OE)
    284       1.1  dyoung 						 */
    285       1.1  dyoung 
    286       1.1  dyoung #define	ADM5120_MPMC_SWR(__i)	(0x20c + 0x020 * (__i))
    287       1.1  dyoung #define	ADM5120_MPMC_SWR_RSVD	__BITS(31, 5)
    288       1.1  dyoung #define	ADM5120_MPMC_SWR_NMRW	__BITS(4, 0)	/* read wait states for
    289       1.1  dyoung 						 * either first page-mode
    290       1.1  dyoung 						 * access or for non-page mode
    291       1.1  dyoung 						 * read, (n + 1) * HCLK cycles
    292       1.1  dyoung 						 */
    293       1.1  dyoung 
    294       1.1  dyoung #define	ADM5120_MPMC_SWP(__i)	(0x210 + 0x020 * (__i))
    295       1.1  dyoung #define	ADM5120_MPMC_SWP_RSVD	__BITS(31, 5)
    296       1.1  dyoung #define	ADM5120_MPMC_SWP_WPS	__BITS(4, 0)	/* read wait states for
    297       1.1  dyoung 						 * second and subsequent
    298       1.1  dyoung 						 * page-mode read,
    299       1.1  dyoung 						 * (n + 1) * HCLK cycles
    300       1.1  dyoung 						 */
    301       1.1  dyoung 
    302       1.1  dyoung #define	ADM5120_MPMC_SWWR(__i)	(0x214 + 0x020 * (__i))
    303       1.1  dyoung #define	ADM5120_MPMC_SWWR_RSVD	__BITS(31, 5)
    304       1.1  dyoung #define	ADM5120_MPMC_SWWR_WWS	__BITS(4, 0)	/* write wait states after
    305       1.1  dyoung 						 * the first read (??),
    306       1.1  dyoung 						 * (n + 2) * HCLK cycles
    307       1.1  dyoung 						 */
    308       1.1  dyoung 
    309       1.1  dyoung #define	ADM5120_MPMC_SWT(__i)	(0x218 + 0x020 * (__i))
    310       1.1  dyoung #define	ADM5120_MPMC_SWT_RSVD		__BITS(31, 4)
    311       1.1  dyoung #define	ADM5120_MPMC_SWT_WAITTURN	__BITS(3, 0)	/* bus turnaround time,
    312       1.1  dyoung 							 * (n + 1) * HCLK cycles
    313       1.1  dyoung 							 */
    314       1.1  dyoung 
    315       1.1  dyoung #endif /* _ADM5120REG_H_ */
    316