xref: /netbsd-src/sys/arch/evbarm/hdl_g/hdlgreg.h (revision 2388feef6162e5f55bc0fbaaa9d32d8dfc8354a3)
1*2388feefSnonaka /*	$NetBSD: hdlgreg.h,v 1.3 2012/01/21 19:44:29 nonaka Exp $	*/
2407f05e7Snonaka 
3*2388feefSnonaka /*-
4*2388feefSnonaka  * Copyright (C) 2005, 2006 NONAKA Kimihiro <nonaka@netbsd.org>
5407f05e7Snonaka  * All rights reserved.
6407f05e7Snonaka  *
7407f05e7Snonaka  * Redistribution and use in source and binary forms, with or without
8407f05e7Snonaka  * modification, are permitted provided that the following conditions
9407f05e7Snonaka  * are met:
10407f05e7Snonaka  * 1. Redistributions of source code must retain the above copyright
11407f05e7Snonaka  *    notice, this list of conditions and the following disclaimer.
12407f05e7Snonaka  * 2. Redistributions in binary form must reproduce the above copyright
13407f05e7Snonaka  *    notice, this list of conditions and the following disclaimer in the
14407f05e7Snonaka  *    documentation and/or other materials provided with the distribution.
15407f05e7Snonaka  *
16*2388feefSnonaka  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
17*2388feefSnonaka  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
18*2388feefSnonaka  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
19*2388feefSnonaka  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
20*2388feefSnonaka  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
21*2388feefSnonaka  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22*2388feefSnonaka  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
23*2388feefSnonaka  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24*2388feefSnonaka  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
25*2388feefSnonaka  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26407f05e7Snonaka  */
27407f05e7Snonaka 
28407f05e7Snonaka #ifndef _HDLGREG_H_
29407f05e7Snonaka #define	_HDLGREG_H_
30407f05e7Snonaka 
31407f05e7Snonaka /*
32407f05e7Snonaka  * Memory map and register definitions for I-O DATA HDL-G
33407f05e7Snonaka  */
34407f05e7Snonaka 
35407f05e7Snonaka /*
36407f05e7Snonaka  * The memory map of I/O-DATA HDL-G looks like so:
37407f05e7Snonaka  *
38407f05e7Snonaka  *           ------------------------------
39407f05e7Snonaka  *		Intel 80321 IOP Reserved
40407f05e7Snonaka  * FFFF E900 ------------------------------
41407f05e7Snonaka  *		Peripheral Memory Mapped
42407f05e7Snonaka  *		    Registers
43407f05e7Snonaka  * FFFF E000 ------------------------------
44407f05e7Snonaka  *		On-board devices
45407f05e7Snonaka  * FE80 0000 ------------------------------
46407f05e7Snonaka  *		SDRAM
47407f05e7Snonaka  * A000 0000 ------------------------------
48407f05e7Snonaka  *		Reserved
49407f05e7Snonaka  * 9100 0000 ------------------------------
50407f05e7Snonaka  * 		Flash
51407f05e7Snonaka  * 9080 0000 ------------------------------
52407f05e7Snonaka  *		Reserved
53407f05e7Snonaka  * 9002 0000 ------------------------------
54407f05e7Snonaka  *		ATU Outbound Transaction
55407f05e7Snonaka  *		    Windows
56407f05e7Snonaka  * 8000 0000 ------------------------------
57407f05e7Snonaka  *		ATU Outbound Direct
58407f05e7Snonaka  *		    Addressing Windows
59407f05e7Snonaka  * 0000 1000 ------------------------------
60407f05e7Snonaka  *		Initialization Boot Code
61407f05e7Snonaka  *		    from Flash
62407f05e7Snonaka  * 0000 0000 ------------------------------
63407f05e7Snonaka  */
64407f05e7Snonaka 
65407f05e7Snonaka /*
66407f05e7Snonaka  * We allocate a page table for VA 0xfe400000 (4MB) and map the
67407f05e7Snonaka  * PCI I/O space (64K) and i80321 memory-mapped registers (4K) there.
68407f05e7Snonaka  */
69407f05e7Snonaka #define	HDLG_IOPXS_VBASE	0xfe400000UL
70407f05e7Snonaka #define	HDLG_IOW_VBASE		HDLG_IOPXS_VBASE
71407f05e7Snonaka #define	HDLG_80321_VBASE	(HDLG_IOW_VBASE + \
72407f05e7Snonaka 				 VERDE_OUT_XLATE_IO_WIN_SIZE)
73407f05e7Snonaka 
74407f05e7Snonaka /*
75407f05e7Snonaka  * The GIGALANDISK on-board devices are mapped VA==PA during bootstrap.
76407f05e7Snonaka  * Conveniently, the size of the on-board register space is 1 section
77407f05e7Snonaka  * mapping.
78407f05e7Snonaka  */
79407f05e7Snonaka #define	HDLG_OBIO_BASE	0xfe800000UL
80407f05e7Snonaka #define	HDLG_OBIO_SIZE	0x00100000UL	/* 1MB */
81407f05e7Snonaka 
82407f05e7Snonaka #define	HDLG_UART1	0xfe800000UL	/* TI 16550 */
83407f05e7Snonaka #define	HDLG_PLD	0xfe8d0000UL	/* CPLD */
84407f05e7Snonaka 
85407f05e7Snonaka /*
86407f05e7Snonaka  * CPLD
87407f05e7Snonaka  */
88407f05e7Snonaka #define	HDLG_LEDCTRL		(HDLG_PLD + 0x00)
89407f05e7Snonaka #define		LEDCTRL_STAT_GREEN	0x01
90407f05e7Snonaka #define		LEDCTRL_STAT_RED	0x02
91407f05e7Snonaka #define		LEDCTRL_USB1		0x04
92407f05e7Snonaka #define		LEDCTRL_USB2		0x08
93407f05e7Snonaka #define		LEDCTRL_USB3		0x10
94407f05e7Snonaka #define		LEDCTRL_USB4		0x20
95407f05e7Snonaka #define		LEDCTRL_HDD		0x40
96407f05e7Snonaka #define		LEDCTRL_BUZZER		0x80
97407f05e7Snonaka #define	HDLG_PWRLEDCTRL		(HDLG_PLD + 0x01)
98407f05e7Snonaka #define		PWRLEDCTRL_0		0x01
99407f05e7Snonaka #define		PWRLEDCTRL_1		0x02
100407f05e7Snonaka #define		PWRLEDCTRL_2		0x04
101407f05e7Snonaka #define		PWRLEDCTRL_3		0x08
102407f05e7Snonaka #define	HDLG_BTNSTAT		(HDLG_PLD + 0x02)
103407f05e7Snonaka #define		BTNSTAT_POWER		0x01
104407f05e7Snonaka #define		BTNSTAT_SELECT		0x02
105407f05e7Snonaka #define		BTNSTAT_COPY		0x04
106407f05e7Snonaka #define		BTNSTAT_REMOVE		0x08
107407f05e7Snonaka #define		BTNSTAT_RESET		0x10
108407f05e7Snonaka #define	HDLG_INTEN		(HDLG_PLD + 0x03)
109407f05e7Snonaka #define		INTEN_PWRSW		0x01
110407f05e7Snonaka #define		INTEN_BUTTON		0x02
111a1a022c7Snonaka #define		INTEN_RTC		0x40
112407f05e7Snonaka #define	HDLG_PWRMNG		(HDLG_PLD + 0x04)
113407f05e7Snonaka #define		PWRMNG_POWOFF		0x01
114407f05e7Snonaka #define		PWRMNG_RESET		0x02
115a1a022c7Snonaka #define	HDLG_FANCTRL		(HDLG_PLD + 0x06)
116a1a022c7Snonaka #define		FANCTRL_OFF		0x00
117a1a022c7Snonaka #define		FANCTRL_ON		0x01
118407f05e7Snonaka 
119407f05e7Snonaka #define	hdlg_enable_pldintr(bit) \
120407f05e7Snonaka do { \
121407f05e7Snonaka 	*(volatile uint8_t *)HDLG_INTEN |= (bit); \
122407f05e7Snonaka } while (/*CONSTCOND*/0)
123407f05e7Snonaka 
124407f05e7Snonaka #define	hdlg_disable_pldintr(bit) \
125407f05e7Snonaka do { \
126407f05e7Snonaka 	*(volatile uint8_t *)HDLG_INTEN &= ~(bit); \
127407f05e7Snonaka } while (/*CONSTCOND*/0)
128407f05e7Snonaka 
129407f05e7Snonaka #endif /* _HDLGREG_H_ */
130