Home | History | Annotate | Line # | Download | only in marvell
orionreg.h revision 1.1.14.1
      1  1.1.14.1      yamt /*	$NetBSD: orionreg.h,v 1.1.14.1 2014/05/22 11:39:33 yamt Exp $	*/
      2       1.1  kiyohara /*
      3       1.1  kiyohara  * Copyright (c) 2007, 2008 KIYOHARA Takashi
      4       1.1  kiyohara  * All rights reserved.
      5       1.1  kiyohara  *
      6       1.1  kiyohara  * Redistribution and use in source and binary forms, with or without
      7       1.1  kiyohara  * modification, are permitted provided that the following conditions
      8       1.1  kiyohara  * are met:
      9       1.1  kiyohara  * 1. Redistributions of source code must retain the above copyright
     10       1.1  kiyohara  *    notice, this list of conditions and the following disclaimer.
     11       1.1  kiyohara  * 2. Redistributions in binary form must reproduce the above copyright
     12       1.1  kiyohara  *    notice, this list of conditions and the following disclaimer in the
     13       1.1  kiyohara  *    documentation and/or other materials provided with the distribution.
     14       1.1  kiyohara  *
     15       1.1  kiyohara  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
     16       1.1  kiyohara  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
     17       1.1  kiyohara  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
     18       1.1  kiyohara  * DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
     19       1.1  kiyohara  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
     20       1.1  kiyohara  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
     21       1.1  kiyohara  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     22       1.1  kiyohara  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
     23       1.1  kiyohara  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
     24       1.1  kiyohara  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     25       1.1  kiyohara  * POSSIBILITY OF SUCH DAMAGE.
     26       1.1  kiyohara  */
     27       1.1  kiyohara 
     28       1.1  kiyohara #ifndef _ORIONREG_H_
     29       1.1  kiyohara #define _ORIONREG_H_
     30       1.1  kiyohara 
     31       1.1  kiyohara #include <arm/marvell/mvsocreg.h>
     32       1.1  kiyohara 
     33       1.1  kiyohara /*
     34       1.1  kiyohara  *        Ver  GbE SATA  USB  PCI PCIe IDMA XORE CESA
     35       1.1  kiyohara  * 1181:    1   -,   -,   -,   -,  x2,   ?,   -,   -
     36       1.1  kiyohara  * 1281:    2   -,   -,   -,   -,  x2,   ?,   -,   -
     37       1.1  kiyohara  * 5082:    1  x1,  x1,  x2,   -,  x1,   o,   -,   o
     38       1.1  kiyohara  * 5180N:   1  x1,   -,  x1,  x1,  x1,   o,   -,   -
     39       1.1  kiyohara  * 5181:    1  x1,   -,  x1,  x1,  x1,   o,   -,   o
     40       1.1  kiyohara  * 5182:    1  x1,  x1,  x2,  x1,  x1,   o,   o,   o
     41       1.1  kiyohara  * 5281:    2  x1,   -,  x1,  x1,  x1,   o,   -,   -
     42       1.1  kiyohara  * 6082:    1  x2?, x1,  x1,   -,  x1,   -,   -,   o
     43       1.1  kiyohara  * 6183:    1   ?,   -,  x?,   ?,   ?,   ?,   -,   -
     44       1.1  kiyohara  * 8660:    1  x1,   -,  x1,  x1,  x1,   o,   -,   -
     45       1.1  kiyohara  */
     46       1.1  kiyohara 
     47       1.1  kiyohara #define ORION_UNITID_DDR		MVSOC_UNITID_DDR
     48       1.1  kiyohara #define ORION_UNITID_DEVBUS		MVSOC_UNITID_DEVBUS
     49       1.1  kiyohara #define ORION_UNITID_MLMB		MVSOC_UNITID_MLMB
     50       1.1  kiyohara #define ORION_UNITID_PEX1		0x3			/* 1181 only */
     51       1.1  kiyohara #define ORION_UNITID_PCI		0x3	/* PCI registers */
     52       1.1  kiyohara #define ORION_UNITID_PEX		MVSOC_UNITID_PEX
     53       1.1  kiyohara #define ORION_UNITID_USB0		0x5	/* USB registers Port0 */
     54       1.1  kiyohara #define ORION_UNITID_IDMA		0x6	/* IDMA registers */
     55       1.1  kiyohara #define ORION_UNITID_XOR		0x6	/* XOR registers */
     56       1.1  kiyohara #define ORION_UNITID_GBE		0x7	/* Gigabit Ethernet registers */
     57       1.1  kiyohara #define ORION_UNITID_SATA		0x8	/* SATA registers */
     58       1.1  kiyohara #define ORION_UNITID_CRYPT		0x9	/* Cryptographic Engine reg */
     59       1.1  kiyohara #define ORION_UNITID_SA			0x9	/* Security Accelerator reg */
     60       1.1  kiyohara #define ORION_UNITID_USB1		0xa	/* USB registers Port1 */
     61       1.1  kiyohara 
     62       1.1  kiyohara #define ORION_ATTR_DEVICE_CS0		0x1e
     63       1.1  kiyohara #define ORION_ATTR_DEVICE_CS1		0x1d
     64       1.1  kiyohara #define ORION_ATTR_DEVICE_CS2		0x1b
     65       1.1  kiyohara #define ORION_ATTR_FLASH_CS		0x1b
     66       1.1  kiyohara #define ORION_ATTR_BOOT_CS		0x0f
     67       1.1  kiyohara #define ORION_ATTR_PEX_CFG		0x79	/* bug workaround ?? */
     68       1.1  kiyohara #define ORION_ATTR_PEX_MEM		0x59
     69       1.1  kiyohara #define ORION_ATTR_PEX_IO		0x51
     70       1.1  kiyohara #define ORION_ATTR_PCI_MEM		0x59
     71       1.1  kiyohara #define ORION_ATTR_PCI_IO		0x51
     72       1.1  kiyohara #define ORION_ATTR_CRYPT		0x00
     73       1.1  kiyohara 
     74       1.1  kiyohara /*
     75       1.1  kiyohara  * Interrupt numbers
     76       1.1  kiyohara  */
     77       1.1  kiyohara #define ORION_IRQ_BRIDGE		0	/* Local to System Bridge */
     78       1.1  kiyohara #define ORION_IRQ_HOST2CPU		1	/* Doorbell (Host-to-CPU) */
     79       1.1  kiyohara #define ORION_IRQ_CPU2HOST		2	/* Doorbell (CPU-to-Host) */
     80       1.1  kiyohara #define ORION_IRQ_UART0			3
     81       1.1  kiyohara #define ORION_IRQ_UART1			4
     82       1.1  kiyohara #define ORION_IRQ_TWSI			5	/* Two-Wire Serial Interface */
     83       1.1  kiyohara #define ORION_IRQ_GPIO7_0		6	/* GPIO[7:0] */
     84       1.1  kiyohara #define ORION_IRQ_GPIO15_8		7	/* GPIO[15:8] */
     85       1.1  kiyohara #define ORION_IRQ_GPIO23_16		8	/* GPIO[23:16] not 1181 */
     86       1.1  kiyohara #define ORION_IRQ_GPIO31_24		9	/* GPIO[31:24] not 1181 */
     87       1.1  kiyohara #define ORION_IRQ_PEX0ERR		10	/* PCI Express error */
     88       1.1  kiyohara #define ORION_IRQ_PEX0INT		11	/* PCIe INTA, B, C, D message */
     89       1.1  kiyohara #define ORION_IRQ_PEX1ERR		12			/* 1181 only */
     90       1.1  kiyohara #define ORION_IRQ_USBCNT1		12	/* USB Port1 controller (5182)*/
     91       1.1  kiyohara #define ORION_IRQ_PEX1INT		13			/* 1181 only */
     92       1.1  kiyohara #define ORION_IRQ_DEVERR		14	/* Device bus error */
     93       1.1  kiyohara #define ORION_IRQ_PCIERR		15	/* PCI error */
     94       1.1  kiyohara #define ORION_IRQ_USBBR			16	/* USB bridge Port0 or1 error */
     95       1.1  kiyohara #define ORION_IRQ_USBCNT0		17	/* USB Port0 controller */
     96       1.1  kiyohara #define ORION_IRQ_GBERX			18	/* GbE receive interrupt */
     97       1.1  kiyohara #define ORION_IRQ_GBETX			19	/* GbE transmit interrupt */
     98       1.1  kiyohara #define ORION_IRQ_GBEMISC		20	/* GbE miscellaneous intr */
     99       1.1  kiyohara #define ORION_IRQ_GBESUM		21	/* GbE summary */
    100       1.1  kiyohara #define ORION_IRQ_GBEERR		22	/* GbE error */
    101       1.1  kiyohara #define ORION_IRQ_DMAERR		23	/* DMA or XOR error */
    102       1.1  kiyohara #define ORION_IRQ_IDMA0			24	/* IDMA Channel0 completion */
    103       1.1  kiyohara #define ORION_IRQ_IDMA1			25	/* IDMA Channel1 completion */
    104       1.1  kiyohara #define ORION_IRQ_IDMA2			26	/* IDMA Channel2 completion */
    105       1.1  kiyohara #define ORION_IRQ_IDMA3			27	/* IDMA Channel3 completion */
    106       1.1  kiyohara #define ORION_IRQ_SECURITYINTR		28	/* Security accelerator intr */
    107       1.1  kiyohara #define ORION_IRQ_SATAINTR		29	/* Serial-ATA interrupt */
    108       1.1  kiyohara #define ORION_IRQ_XOR0			30	/* XOR engine 0 interrupt */
    109       1.1  kiyohara #define ORION_IRQ_XOR1			31	/* XOR engine 1 interrupt */
    110       1.1  kiyohara 
    111       1.1  kiyohara 
    112       1.1  kiyohara /*
    113       1.1  kiyohara  * Physical address of integrated peripherals
    114       1.1  kiyohara  */
    115       1.1  kiyohara 
    116       1.1  kiyohara #define ORION_UNITID2PHYS(uid)	((ORION_UNITID_ ## uid) << 16)
    117       1.1  kiyohara 
    118       1.1  kiyohara /*
    119       1.1  kiyohara  * Pin Multiplexing Interface Registers
    120       1.1  kiyohara  */
    121       1.1  kiyohara #define ORION_PMI_BASE			(MVSOC_DEVBUS_BASE + 0x0000)
    122       1.1  kiyohara #define ORION_PMI_SIZE			  0x100		/* XXXX */
    123       1.1  kiyohara #define ORION_PMI_MPPCR0		   0x00
    124       1.1  kiyohara #define ORION_PMI_MPPCR1		   0x04
    125       1.1  kiyohara #define ORION_PMI_MPPCR2		   0x50
    126       1.1  kiyohara #define ORION_PMI_DEVMULTICR		   0x08
    127       1.1  kiyohara #define ORION_PMI_SAMPLE_AT_RESET	   0x10
    128       1.1  kiyohara #define ORION_PMISMPL_ARMDDRCLK_MASK		0x0f
    129       1.1  kiyohara #define ORION_PMISMPL_ARMDDRCLK_H_MASK		(1 << 23)
    130       1.1  kiyohara #define ORION_PMISMPL_ARMDDRCLK_333_167		0x00
    131       1.1  kiyohara #define ORION_PMISMPL_ARMDDRCLK_400_200		0x01
    132       1.1  kiyohara #define ORION_PMISMPL_ARMDDRCLK_400_133		0x02
    133       1.1  kiyohara #define ORION_PMISMPL_ARMDDRCLK_500_167		0x03
    134       1.1  kiyohara #define ORION_PMISMPL_ARMDDRCLK_533_133		0x04
    135       1.1  kiyohara #define ORION_PMISMPL_ARMDDRCLK_600_200		0x05
    136       1.1  kiyohara #define ORION_PMISMPL_ARMDDRCLK_667_167		0x06
    137       1.1  kiyohara #define ORION_PMISMPL_ARMDDRCLK_800_200		0x07
    138       1.1  kiyohara #define ORION_PMISMPL_ARMDDRCLK_480_160		0x0c
    139       1.1  kiyohara #define ORION_PMISMPL_ARMDDRCLK_550_183		0x0d
    140       1.1  kiyohara #define ORION_PMISMPL_ARMDDRCLK_525_175		0x0e
    141       1.1  kiyohara #define ORION_PMISMPL_ARMDDRCLK_466_233		0x11
    142       1.1  kiyohara #define ORION_PMISMPL_ARMDDRCLK_500_250		0x12
    143       1.1  kiyohara #define ORION_PMISMPL_ARMDDRCLK_533_266		0x13
    144       1.1  kiyohara #define ORION_PMISMPL_ARMDDRCLK_600_300		0x14
    145       1.1  kiyohara #define ORION_PMISMPL_ARMDDRCLK_450_150		0x15
    146       1.1  kiyohara #define ORION_PMISMPL_ARMDDRCLK_533_178		0x16
    147       1.1  kiyohara #define ORION_PMISMPL_ARMDDRCLK_575_192		0x17
    148       1.1  kiyohara #define ORION_PMISMPL_ARMDDRCLK_700_175		0x18
    149       1.1  kiyohara #define ORION_PMISMPL_ARMDDRCLK_733_183		0x19
    150       1.1  kiyohara #define ORION_PMISMPL_ARMDDRCLK_750_187		0x1a
    151       1.1  kiyohara #define ORION_PMISMPL_ARMDDRCLK_775_194		0x1b
    152       1.1  kiyohara #define ORION_PMISMPL_ARMDDRCLK_500_125		0x1c
    153       1.1  kiyohara #define ORION_PMISMPL_ARMDDRCLK_500_100		0x1d
    154       1.1  kiyohara #define ORION_PMISMPL_ARMDDRCLK_600_150		0x1e
    155       1.1  kiyohara #define ORION_PMISMPL_TCLK_MASK			0x3
    156       1.1  kiyohara #define ORION_PMISMPL_TCLK_133			0x0
    157       1.1  kiyohara #define ORION_PMISMPL_TCLK_150			0x1
    158       1.1  kiyohara #define ORION_PMISMPL_TCLK_166			0x2
    159       1.1  kiyohara 
    160       1.1  kiyohara /*
    161       1.1  kiyohara  * Mbus-L to Mbus Bridge Registers
    162       1.1  kiyohara  */
    163       1.1  kiyohara /* CPU Address Map Registers */
    164       1.1  kiyohara #define ORION_MLMB_NWINDOW		8
    165       1.1  kiyohara #define ORION_MLMB_NREMAP		2
    166       1.1  kiyohara 
    167       1.1  kiyohara /* Main Interrupt Controller Registers */
    168       1.1  kiyohara #define ORION_MLMB_MICR			  0x200	/* Main Interrupt Cause reg */
    169       1.1  kiyohara #define ORION_MLMB_MIRQIMR		  0x204	/* Main IRQ Interrupt Mask */
    170       1.1  kiyohara #define ORION_MLMB_MFIQIMR		  0x208	/* Main FIQ Interrupt Mask */
    171       1.1  kiyohara #define ORION_MLMB_EIMR			  0x20c	/* Endpoint Interrupt Mask */
    172       1.1  kiyohara 
    173       1.1  kiyohara /*
    174       1.1  kiyohara  * PCI Express Interface Registers
    175       1.1  kiyohara  *   or PCI Interface Registers
    176       1.1  kiyohara  */
    177       1.1  kiyohara #define ORION_PEX1_BASE		(ORION_UNITID2PHYS(PEX1))	/* 0x30000 */
    178       1.1  kiyohara #define ORION_PCI_BASE		(ORION_UNITID2PHYS(PCI))	/* 0x30000 */
    179       1.1  kiyohara 
    180       1.1  kiyohara /*
    181       1.1  kiyohara  * USB 2.0 Interface Registers
    182       1.1  kiyohara  */
    183       1.1  kiyohara #define ORION_USB0_BASE		(ORION_UNITID2PHYS(USB0))	/* 0x50000 */
    184       1.1  kiyohara #define ORION_USB1_BASE		(ORION_UNITID2PHYS(USB1))	/* 0xa0000 */
    185       1.1  kiyohara 
    186       1.1  kiyohara /*
    187       1.1  kiyohara  * IDMA Controller and XOR Engine Registers
    188       1.1  kiyohara  */
    189       1.1  kiyohara #define ORION_IDMAC_BASE	(ORION_UNITID2PHYS(IDMA))	/* 0x60000 */
    190       1.1  kiyohara 
    191       1.1  kiyohara /*
    192       1.1  kiyohara  * Gigabit Ethernet Registers
    193       1.1  kiyohara  */
    194       1.1  kiyohara #define ORION_GBE_BASE		(ORION_UNITID2PHYS(GBE))	/* 0x70000 */
    195       1.1  kiyohara 
    196       1.1  kiyohara /*
    197       1.1  kiyohara  * Serial-ATA Host Controller (SATAHC) Registers
    198       1.1  kiyohara  */
    199       1.1  kiyohara #define ORION_SATAHC_BASE	(ORION_UNITID2PHYS(SATA))	/* 0x80000 */
    200       1.1  kiyohara 
    201       1.1  kiyohara /*
    202       1.1  kiyohara  * Cryptographic Engine and Security Accelerator Registers
    203       1.1  kiyohara  */
    204  1.1.14.1      yamt #define ORION_CESA_BASE		(ORION_UNITID2PHYS(CRYPT) + 0xd000)/* 0x9d000 */
    205       1.1  kiyohara 
    206       1.1  kiyohara #endif	/* _ORIONREG_H_ */
    207