ixp12x0reg.h revision 1.6.80.1       1  1.6.80.1    yamt /*	$NetBSD: ixp12x0reg.h,v 1.6.80.1 2010/03/11 15:02:07 yamt Exp $ */
      2       1.1  ichiro 
      3       1.1  ichiro /*
      4       1.3  ichiro  * Copyright (c) 2002, 2003
      5       1.1  ichiro  *	Ichiro FUKUHARA <ichiro (at) ichiro.org>.
      6       1.1  ichiro  * All rights reserved.
      7       1.1  ichiro  *
      8       1.1  ichiro  * Redistribution and use in source and binary forms, with or without
      9       1.1  ichiro  * modification, are permitted provided that the following conditions
     10       1.1  ichiro  * are met:
     11       1.1  ichiro  * 1. Redistributions of source code must retain the above copyright
     12       1.1  ichiro  *    notice, this list of conditions and the following disclaimer.
     13       1.1  ichiro  * 2. Redistributions in binary form must reproduce the above copyright
     14       1.1  ichiro  *    notice, this list of conditions and the following disclaimer in the
     15       1.1  ichiro  *    documentation and/or other materials provided with the distribution.
     16       1.1  ichiro  *
     17       1.1  ichiro  * THIS SOFTWARE IS PROVIDED BY ICHIRO FUKUHARA ``AS IS'' AND ANY EXPRESS OR
     18       1.1  ichiro  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
     19       1.1  ichiro  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
     20       1.1  ichiro  * IN NO EVENT SHALL ICHIRO FUKUHARA OR THE VOICES IN HIS HEAD BE LIABLE FOR
     21       1.1  ichiro  * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     22       1.1  ichiro  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
     23       1.1  ichiro  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     24       1.1  ichiro  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
     25       1.1  ichiro  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
     26       1.1  ichiro  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
     27       1.1  ichiro  * SUCH DAMAGE.
     28       1.1  ichiro  */
     29       1.1  ichiro 
     30       1.1  ichiro #ifndef _IXP12X0REG_H_
     31       1.1  ichiro #define _IXP12X0REG_H_
     32       1.1  ichiro 
     33       1.1  ichiro /*
     34       1.1  ichiro  * Physical memory map for the Intel IXP12X0
     35       1.1  ichiro  */
     36       1.1  ichiro 
     37       1.1  ichiro /*
     38       1.1  ichiro  * FFFF FFFF ---------------------------
     39       1.1  ichiro  *            Device 6
     40       1.1  ichiro  *            SDRAM
     41       1.1  ichiro  *              FF00 0000 - FF00 0014
     42       1.1  ichiro  *                  SDRAM Control Register
     43       1.1  ichiro  *              D000 0000 - DFFF FFFF
     44       1.1  ichiro  *                  Prefetch 256MB
     45       1.1  ichiro  *              C000 0000 - CFFF FFFF
     46       1.1  ichiro  *                  non-Prefetch 256MB
     47       1.1  ichiro  * C000 0000 ---------------------------
     48       1.1  ichiro  *            Device 5
     49       1.1  ichiro  *            AMBA Translation (ATU)
     50       1.1  ichiro  * B000 0000 ---------------------------
     51       1.1  ichiro  *            Device 4
     52       1.1  ichiro  *            Reserved
     53       1.1  ichiro  * A000 0000 ---------------------------
     54       1.1  ichiro  *            Device 3
     55       1.1  ichiro  *            StrongARM Core System
     56       1.1  ichiro  * 9000 0000 ---------------------------
     57       1.1  ichiro  *            Device 2
     58       1.1  ichiro  *            Reserved
     59       1.1  ichiro  * 8000 0000 ---------------------------
     60       1.1  ichiro  *            Device 1
     61       1.1  ichiro  *            PCI UNIT
     62       1.1  ichiro  *              6000 0000 - 7FFF FFFF
     63       1.1  ichiro  *                  PCI Memory Cycle Access
     64       1.1  ichiro  *              5400 0000 - 5400 FFFF
     65       1.1  ichiro  *                  PCI I/O Cycle Access
     66       1.3  ichiro  *              5300 0000 - 53BF FFFF
     67       1.1  ichiro  *                  PCI Type0 Configuration Cycle Access
     68       1.1  ichiro  *              5200 0000 - 52FF FFFF
     69       1.1  ichiro  *                  PCI Type1 Configuration Cycle Access
     70       1.1  ichiro  *              4200 0000 - 4200 03FF
     71       1.1  ichiro  *                  Local PCI Configuration Space
     72       1.1  ichiro  * 4000 0000 ---------------------------
     73       1.1  ichiro  *            Device 0
     74       1.1  ichiro  *            SRAM UNIT
     75       1.1  ichiro  * 0000 0000 ---------------------------
     76       1.1  ichiro  */
     77       1.1  ichiro 
     78       1.1  ichiro 
     79       1.1  ichiro /*
     80       1.1  ichiro  * Virtual memory map for the Intel IXP12X0 integrated devices
     81       1.3  ichiro  *
     82       1.3  ichiro  * IXP12x0 processors have many device registers at very lower addresses.
     83       1.3  ichiro  * To make user process space wider, we map the registers at lower address
     84       1.5     wiz  * to upper address using address translation of virtual memory system.
     85       1.3  ichiro  *
     86       1.3  ichiro  * Some device registers are staticaly mapped on upper address region.
     87       1.3  ichiro  * because we have to access them before bus_space is initialized.
     88       1.3  ichiro  * Most device is dinamicaly mapped by bus_space_map().  In this case,
     89       1.3  ichiro  * the actual mapped (virtual) address are not cared by device drivers.
     90       1.1  ichiro  */
     91       1.1  ichiro 
     92       1.1  ichiro /*
     93       1.1  ichiro  * FFFF FFFF ---------------------------
     94       1.1  ichiro  *
     95       1.3  ichiro  * F400 0000 ---------------------------
     96       1.3  ichiro  *            PCI Type 0 Configuration Cycle Access
     97       1.3  ichiro  *            VA F300 0000 == PA 5300 0000 (16Mbyte)
     98       1.3  ichiro  * F300 0000 ---------------------------
     99       1.3  ichiro  *            PCI Type 1 Configuration Cycle Access
    100       1.3  ichiro  *            VA F200 0000 == PA 5200 0000 (16Mbyte)
    101       1.3  ichiro  * F200 0000 ---------------------------
    102       1.3  ichiro  *            not used
    103       1.4     igy  * F020 0000 ---------------------------
    104       1.4     igy  *            PCI Registers Accessible Through I/O
    105       1.4     igy  *            VA F010 0000 == PA 5400 0000 (1Mbyte)
    106       1.4     igy  * F010 0000 ---------------------------
    107       1.4     igy  *            not used
    108       1.1  ichiro  * F001 1000 ---------------------------
    109       1.1  ichiro  *            PCI Registers Accessible Through StrongARM Core
    110       1.1  ichiro  *            VA F001 0000 == PA 4200 0000 (4kbyte)
    111       1.1  ichiro  *              F001 0300 - F001 036F  TIMER
    112       1.3  ichiro  *              F001 0200 - F001 0293  PCI_FIQ
    113       1.3  ichiro  *              F001 0180 - F001 0193  PCI_IRQ
    114       1.1  ichiro  * F001 0000 ---------------------------
    115       1.1  ichiro  *            StrongARM System and Peripheral Registers
    116       1.4     igy  *            VA F000 0000 == PA 9000 0000 (64kbyte)
    117       1.1  ichiro  *              F000 3400 - F000 3C03  UART
    118       1.1  ichiro  *              F000 3400 - F000 3C03  UART
    119       1.1  ichiro  *              F000 2000 - F000 3003  RTC
    120       1.1  ichiro  *              F000 1C00 - F000 1C03  GPIO_DATA
    121       1.1  ichiro  *              F000 1800 - F000 1C03  GPIO
    122       1.1  ichiro  *              F000 1400 - F000 1403  IRQ
    123       1.1  ichiro  *              F000 1000 - F000 1003  FIQ
    124       1.3  ichiro  *              F000 0C00 - F000 0C03  PLL_CFG (not used at this addres)
    125       1.1  ichiro  * F000 0000 ---------------------------
    126       1.1  ichiro  *            Kernel text and data
    127       1.1  ichiro  * C000 0000 ---------------------------
    128       1.1  ichiro  *            L2 tables for user process (XXX should be fixed)
    129       1.3  ichiro  * 8000 0000 ---------------------------
    130       1.3  ichiro  *            PCI Registers Accessible Through Memory
    131       1.3  ichiro  *            VA 6000 0000 == PA 6000 0000 (512Mbyte)
    132       1.1  ichiro  * 6000 0000 ---------------------------
    133       1.1  ichiro  * 5400 0000 ---------------------------
    134       1.1  ichiro  * 0000 0000 ---------------------------
    135       1.1  ichiro  *
    136       1.1  ichiro  */
    137       1.1  ichiro 
    138       1.1  ichiro /* Virtual address for I/O space */
    139       1.2  ichiro #define	IXP12X0_IO_VBASE	0xf0000000UL
    140       1.1  ichiro 
    141       1.1  ichiro /* StrongARM System and Peripheral Registers */
    142       1.4     igy #define	IXP12X0_SYS_VBASE	0xf0000000UL
    143       1.2  ichiro #define	IXP12X0_SYS_HWBASE	0x90000000UL
    144       1.2  ichiro #define	IXP12X0_SYS_SIZE	0x00010000UL	/* 64Kbyte */
    145       1.1  ichiro 
    146       1.1  ichiro #define	IXP12X0_PLL_CFG		(IXP12X0_IO_VBASE + 0x0c00)
    147       1.1  ichiro #define	 IXP12X0_PLL_CFG_CCF	0x1f
    148       1.1  ichiro 
    149       1.1  ichiro /* PCI Registers Accessible Through StrongARM Core */
    150       1.4     igy #define	IXP12X0_PCI_VBASE	0xf0010000UL
    151       1.2  ichiro #define	IXP12X0_PCI_HWBASE	0x42000000UL
    152       1.2  ichiro #define	IXP12X0_PCI_SIZE	0x00001000UL	/* 4Kbyte */
    153       1.1  ichiro 
    154       1.2  ichiro /* PCI I/O Space */
    155       1.4     igy #define	IXP12X0_PCI_IO_VBASE	0xf0100000UL
    156       1.4     igy #define	IXP12X0_PCI_IO_HWBASE	0x54000000UL
    157       1.3  ichiro #define	IXP12X0_PCI_IO_SIZE	0x00100000UL	/* 1Mbyte */
    158       1.1  ichiro 
    159       1.2  ichiro /* PCI Memory Space */
    160       1.2  ichiro #define IXP12X0_PCI_MEM_HWBASE	0x60000000UL	/* VA == PA */
    161       1.2  ichiro #define IXP12X0_PCI_MEM_VBASE	IXP12X0_PCI_MEM_HWBASE
    162       1.2  ichiro #define	IXP12X0_PCI_MEM_SIZE	0x20000000UL
    163       1.1  ichiro 
    164       1.1  ichiro /* PCI Type0/1 Configuration address */
    165       1.3  ichiro #define	IXP12X0_PCI_TYPE0_HWBASE	0x53000000UL
    166       1.3  ichiro #define	IXP12X0_PCI_TYPE0_VBASE		0xf3000000UL
    167       1.3  ichiro #define	IXP12X0_PCI_TYPE0_SIZE		0x01000000UL	/* 16MB */
    168       1.3  ichiro 
    169       1.3  ichiro #define	IXP12X0_PCI_TYPE1_HWBASE	0x52000000UL
    170       1.3  ichiro #define	IXP12X0_PCI_TYPE1_VBASE		0xf2000000UL
    171       1.3  ichiro #define	IXP12X0_PCI_TYPE1_SIZE		0x01000000UL	/* 16MB */
    172       1.1  ichiro 
    173       1.1  ichiro /*
    174       1.1  ichiro  * SlowPort I/O Register
    175       1.1  ichiro  */
    176       1.1  ichiro /* see. arch/evbarm/ixm1200/ixm1200reg.h */
    177       1.1  ichiro 
    178       1.1  ichiro /* Physical register base addresses */
    179       1.1  ichiro /* #define	IXP12X0_GPIO_VBASE */
    180       1.2  ichiro #define	IXP12X0_GPIO_HWBASE	0x90001800UL
    181       1.2  ichiro #define	IXP12X0_GPIO_SIZE	0x00000800UL
    182       1.1  ichiro 
    183       1.1  ichiro /* Interrupts */
    184       1.1  ichiro #define	IXP12X0_FIQ_VBASE	(IXP12X0_IO_VBASE + 0x1000)
    185       1.2  ichiro #define	IXP12X0_FIQ_HWBASE	0x90001000UL
    186       1.2  ichiro #define	IXP12X0_FIQ_SIZE	0x00000004UL
    187       1.1  ichiro #define	IXP12X0_IRQ_VBASE	(IXP12X0_IO_VBASE + 0x1400)
    188       1.2  ichiro #define	IXP12X0_IRQ_HWBASE	0x90001400UL
    189       1.2  ichiro #define	IXP12X0_IRQ_SIZE	0x00000004UL
    190       1.1  ichiro 
    191       1.1  ichiro /*
    192       1.1  ichiro  * Interrupt index assignment
    193       1.1  ichiro  *
    194       1.1  ichiro  *
    195       1.1  ichiro  *     FIQ/IRQ bitmap in "StrongARM System and Peripheral Registers"
    196       1.1  ichiro  *
    197       1.1  ichiro  *        3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
    198       1.1  ichiro  * bit    1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
    199       1.1  ichiro  *       +-+-------------------------------------------+-+-+-+-+-+-+-+---+
    200       1.1  ichiro  *       |M|                                           |U|S|R|S|U|C|P|   |
    201       1.1  ichiro  *       |B|                                           |A|D|T|R|E|I|C|   |
    202       1.1  ichiro  *       |Z|                    RES                    |R|R|C|A|N|N|I|RES|
    203       1.1  ichiro  *       | |                                           |T|A| |M|G|T| |   |
    204       1.1  ichiro  *       | |                                           | |M| | | | | |   |
    205       1.1  ichiro  *       +-+-------------------------------------------+-+-+-+-+-+-+-+---+
    206       1.1  ichiro  *        3
    207       1.1  ichiro  * index  1                                             8 7 6 5 4 3 2
    208       1.1  ichiro  *
    209       1.1  ichiro  *
    210       1.1  ichiro  * We Map a software interrupt queue index to the unused bits in the
    211       1.1  ichiro  * IRQ/FIQ registers. (in "StrongARM System and Peripheral Registers")
    212       1.1  ichiro  *
    213       1.1  ichiro  * XXX will need to revisit this if those bits are ever used in future
    214       1.1  ichiro  * steppings).
    215       1.1  ichiro  *
    216       1.1  ichiro  *        3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
    217       1.1  ichiro  * bit    1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
    218       1.1  ichiro  *       +-+-+-+-+-+-----------------------------------+-+-+-+-+-+-+-+---+
    219       1.1  ichiro  *       |M|S|C|N|S|                                   |U|S|R|S|U|C|P|   |
    220       1.1  ichiro  *       |B|O|L|E|E|                                   |A|D|T|R|E|I|C|   |
    221       1.1  ichiro  *       |Z|F|O|T|R|                RES                |R|R|C|A|N|N|I|RES|
    222       1.1  ichiro  *       | |T|C| |I|                                   |T|A| |M|G|T| |   |
    223       1.1  ichiro  *       | | |K| |A|                                   | |M| | | | | |   |
    224       1.1  ichiro  *       | | | | |L|                                   | | | | | | | |   |
    225       1.1  ichiro  *       +-+-+-+-+-+-----------------------------------+-+-+-+-+-+-+-+---+
    226       1.1  ichiro  *        3 3 2 2 2
    227       1.1  ichiro  * index  1 0 9 8 7                                     8 7 6 5 4 3 2
    228       1.1  ichiro  *
    229       1.1  ichiro  */
    230       1.1  ichiro 
    231       1.1  ichiro #define NIRQ			64
    232       1.1  ichiro #define SYS_NIRQ		32
    233       1.1  ichiro 
    234       1.1  ichiro #define	IXP12X0_INTR_MBZ	31
    235       1.1  ichiro #define	IXP12X0_INTR_bit30	30
    236       1.1  ichiro #define	IXP12X0_INTR_bit29	29
    237       1.1  ichiro #define	IXP12X0_INTR_bit28	28
    238       1.1  ichiro #define	IXP12X0_INTR_bit27	27
    239       1.1  ichiro #define	IXP12X0_INTR_bit26	26
    240       1.1  ichiro #define	IXP12X0_INTR_bit25	25
    241       1.1  ichiro #define	IXP12X0_INTR_bit24	24
    242       1.1  ichiro #define	IXP12X0_INTR_bit23	23
    243       1.1  ichiro #define	IXP12X0_INTR_bit22	22
    244       1.1  ichiro #define	IXP12X0_INTR_bit21	21
    245       1.1  ichiro #define	IXP12X0_INTR_bit20	20
    246       1.1  ichiro #define	IXP12X0_INTR_bit19	19
    247       1.1  ichiro #define	IXP12X0_INTR_bit18	18
    248       1.1  ichiro #define	IXP12X0_INTR_bit17	17
    249       1.1  ichiro #define	IXP12X0_INTR_bit16	16
    250       1.1  ichiro #define	IXP12X0_INTR_bit15	15
    251       1.1  ichiro #define	IXP12X0_INTR_bit14	14
    252       1.1  ichiro #define	IXP12X0_INTR_bit13	13
    253       1.1  ichiro #define	IXP12X0_INTR_bit12	12
    254       1.1  ichiro #define	IXP12X0_INTR_bit11	11
    255       1.1  ichiro #define	IXP12X0_INTR_bit10	10
    256       1.1  ichiro #define	IXP12X0_INTR_bit9	9
    257       1.1  ichiro #define	IXP12X0_INTR_UART	8
    258       1.1  ichiro #define	IXP12X0_INTR_SDRAM	7
    259       1.1  ichiro #define	IXP12X0_INTR_RTC	6
    260       1.1  ichiro #define	IXP12X0_INTR_SRAM	5
    261       1.1  ichiro #define	IXP12X0_INTR_UENG	4
    262       1.1  ichiro #define	IXP12X0_INTR_CINT	3
    263       1.1  ichiro #define	IXP12X0_INTR_PCI	2
    264       1.1  ichiro #define	IXP12X0_INTR_bit1	1
    265       1.1  ichiro #define	IXP12X0_INTR_bit0	0
    266       1.1  ichiro 
    267       1.1  ichiro #define	IXP12X0_INTR_MASK					\
    268       1.1  ichiro 				((1U << IXP12X0_INTR_MBZ)	\
    269       1.1  ichiro 				 | (1U << IXP12X0_INTR_UART)	\
    270       1.1  ichiro 				 | (1U << IXP12X0_INTR_SDRAM)	\
    271       1.1  ichiro 				 | (1U << IXP12X0_INTR_RTC)	\
    272       1.1  ichiro 				 | (1U << IXP12X0_INTR_SRAM)	\
    273       1.1  ichiro 				 | (1U << IXP12X0_INTR_UENG)	\
    274       1.1  ichiro 				 | (1U << IXP12X0_INTR_CINT))
    275       1.1  ichiro 
    276       1.1  ichiro #endif /* _IXP12X0REG_H_ */
    277